aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--doc/sequence_charts/Makefile.am20
-rw-r--r--doc/sequence_charts/inter_bsc_ho.msc36
-rw-r--r--doc/sequence_charts/inter_msc_ho.msc82
-rw-r--r--doc/sequence_charts/mncc_fsm.msc84
-rw-r--r--include/osmocom/msc/Makefile.am32
-rw-r--r--include/osmocom/msc/a_iface.h83
-rw-r--r--include/osmocom/msc/a_iface_bssap.h41
-rw-r--r--include/osmocom/msc/a_reset.h31
-rw-r--r--include/osmocom/msc/call_leg.h81
-rw-r--r--include/osmocom/msc/cell_id_list.h43
-rw-r--r--include/osmocom/msc/e_link.h36
-rw-r--r--include/osmocom/msc/gsm_04_08.h37
-rw-r--r--include/osmocom/msc/gsm_04_11.h5
-rw-r--r--include/osmocom/msc/gsm_04_11_gsup.h7
-rw-r--r--include/osmocom/msc/gsm_04_14.h14
-rw-r--r--include/osmocom/msc/gsm_04_80.h15
-rw-r--r--include/osmocom/msc/gsm_09_11.h10
-rw-r--r--include/osmocom/msc/gsm_data.h41
-rw-r--r--include/osmocom/msc/gsm_data_shared.h6
-rw-r--r--include/osmocom/msc/gsm_subscriber.h36
-rw-r--r--include/osmocom/msc/gsup_client_mux.h34
-rw-r--r--include/osmocom/msc/iu_dummy.h50
-rw-r--r--include/osmocom/msc/iucs.h14
-rw-r--r--include/osmocom/msc/iucs_ranap.h7
-rw-r--r--include/osmocom/msc/mncc.h14
-rw-r--r--include/osmocom/msc/mncc_call.h140
-rw-r--r--include/osmocom/msc/msc_a.h215
-rw-r--r--include/osmocom/msc/msc_a_remote.h17
-rw-r--r--include/osmocom/msc/msc_common.h39
-rw-r--r--include/osmocom/msc/msc_ho.h104
-rw-r--r--include/osmocom/msc/msc_i.h46
-rw-r--r--include/osmocom/msc/msc_i_remote.h14
-rw-r--r--include/osmocom/msc/msc_ifaces.h39
-rw-r--r--include/osmocom/msc/msc_mgcp.h65
-rw-r--r--include/osmocom/msc/msc_roles.h387
-rw-r--r--include/osmocom/msc/msc_t.h60
-rw-r--r--include/osmocom/msc/msc_t_remote.h14
-rw-r--r--include/osmocom/msc/msub.h79
-rw-r--r--include/osmocom/msc/neighbor_ident.h68
-rw-r--r--include/osmocom/msc/paging.h46
-rw-r--r--include/osmocom/msc/ran_conn.h243
-rw-r--r--include/osmocom/msc/ran_infra.h31
-rw-r--r--include/osmocom/msc/ran_msg.h281
-rw-r--r--include/osmocom/msc/ran_msg_a.h45
-rw-r--r--include/osmocom/msc/ran_msg_iu.h35
-rw-r--r--include/osmocom/msc/ran_peer.h106
-rw-r--r--include/osmocom/msc/rtp_stream.h64
-rw-r--r--include/osmocom/msc/sccp_ran.h280
-rw-r--r--include/osmocom/msc/sgs_iface.h9
-rw-r--r--include/osmocom/msc/signal.h20
-rw-r--r--include/osmocom/msc/silent_call.h13
-rw-r--r--include/osmocom/msc/sms_queue.h1
-rw-r--r--include/osmocom/msc/transaction.h55
-rw-r--r--include/osmocom/msc/vlr.h42
-rw-r--r--include/osmocom/msc/vlr_sgs.h2
-rw-r--r--src/libmsc/Makefile.am38
-rw-r--r--src/libmsc/a_iface.c687
-rw-r--r--src/libmsc/a_iface_bssap.c730
-rw-r--r--src/libmsc/a_reset.c150
-rw-r--r--src/libmsc/call_leg.c356
-rw-r--r--src/libmsc/cell_id_list.c76
-rw-r--r--src/libmsc/e_link.c380
-rw-r--r--src/libmsc/gsm_04_08.c1353
-rw-r--r--src/libmsc/gsm_04_08_cc.c508
-rw-r--r--src/libmsc/gsm_04_11.c168
-rw-r--r--src/libmsc/gsm_04_11_gsup.c59
-rw-r--r--src/libmsc/gsm_04_14.c36
-rw-r--r--src/libmsc/gsm_04_80.c24
-rw-r--r--src/libmsc/gsm_09_11.c216
-rw-r--r--src/libmsc/gsm_subscriber.c216
-rw-r--r--src/libmsc/gsup_client_mux.c163
-rw-r--r--src/libmsc/iu_dummy.c99
-rw-r--r--src/libmsc/iucs.c249
-rw-r--r--src/libmsc/iucs_ranap.c137
-rw-r--r--src/libmsc/mncc.c100
-rw-r--r--src/libmsc/mncc_builtin.c6
-rw-r--r--src/libmsc/mncc_call.c760
-rw-r--r--src/libmsc/mncc_sock.c11
-rw-r--r--src/libmsc/msc_a.c1651
-rw-r--r--src/libmsc/msc_a_remote.c392
-rw-r--r--src/libmsc/msc_ho.c879
-rw-r--r--src/libmsc/msc_i.c383
-rw-r--r--src/libmsc/msc_i_remote.c245
-rw-r--r--src/libmsc/msc_ifaces.c143
-rw-r--r--src/libmsc/msc_mgcp.c1254
-rw-r--r--src/libmsc/msc_net_init.c126
-rw-r--r--src/libmsc/msc_t.c962
-rw-r--r--src/libmsc/msc_t_remote.c226
-rw-r--r--src/libmsc/msc_vty.c220
-rw-r--r--src/libmsc/msub.c587
-rw-r--r--src/libmsc/neighbor_ident.c191
-rw-r--r--src/libmsc/neighbor_ident_vty.c421
-rw-r--r--src/libmsc/osmo_msc.c227
-rw-r--r--src/libmsc/paging.c183
-rw-r--r--src/libmsc/ran_conn.c908
-rw-r--r--src/libmsc/ran_infra.c118
-rw-r--r--src/libmsc/ran_msg.c160
-rw-r--r--src/libmsc/ran_msg_a.c1284
-rw-r--r--src/libmsc/ran_msg_iu.c505
-rw-r--r--src/libmsc/ran_peer.c659
-rw-r--r--src/libmsc/ran_up_l2.c0
-rw-r--r--src/libmsc/rrlp.c22
-rw-r--r--src/libmsc/rtp_stream.c389
-rw-r--r--src/libmsc/sccp_ran.c216
-rw-r--r--src/libmsc/sgs_iface.c152
-rw-r--r--src/libmsc/sgs_server.c2
-rw-r--r--src/libmsc/silent_call.c193
-rw-r--r--src/libmsc/smpp_openbsc.c46
-rw-r--r--src/libmsc/smpp_smsc.h8
-rw-r--r--src/libmsc/sms_queue.c16
-rw-r--r--src/libmsc/transaction.c124
-rw-r--r--src/libvlr/vlr.c204
-rw-r--r--src/libvlr/vlr_access_req_fsm.c34
-rw-r--r--src/libvlr/vlr_lu_fsm.c28
-rw-r--r--src/libvlr/vlr_sgs.c10
-rw-r--r--src/libvlr/vlr_sgs_fsm.c6
-rw-r--r--src/osmo-msc/Makefile.am1
-rw-r--r--src/osmo-msc/msc_main.c156
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/msc_vlr/Makefile.am16
-rw-r--r--tests/msc_vlr/msc_vlr_test_authen_reuse.c40
-rw-r--r--tests/msc_vlr/msc_vlr_test_authen_reuse.err4351
-rw-r--r--tests/msc_vlr/msc_vlr_test_call.c60
-rw-r--r--tests/msc_vlr/msc_vlr_test_call.err2918
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_authen.c203
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_authen.err4566
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_ciph.c249
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_ciph.err5674
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_reject.c104
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_reject.err2023
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_timeout.c12
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_timeout.err318
-rw-r--r--tests/msc_vlr/msc_vlr_test_ms_timeout.c53
-rw-r--r--tests/msc_vlr/msc_vlr_test_ms_timeout.err1065
-rw-r--r--tests/msc_vlr/msc_vlr_test_no_authen.c173
-rw-r--r--tests/msc_vlr/msc_vlr_test_no_authen.err4147
-rw-r--r--tests/msc_vlr/msc_vlr_test_reject_concurrency.c61
-rw-r--r--tests/msc_vlr/msc_vlr_test_reject_concurrency.err3170
-rw-r--r--tests/msc_vlr/msc_vlr_test_rest.c42
-rw-r--r--tests/msc_vlr/msc_vlr_test_rest.err888
-rw-r--r--tests/msc_vlr/msc_vlr_test_ss.c30
-rw-r--r--tests/msc_vlr/msc_vlr_test_ss.err731
-rw-r--r--tests/msc_vlr/msc_vlr_test_umts_authen.c78
-rw-r--r--tests/msc_vlr/msc_vlr_test_umts_authen.err3304
-rw-r--r--tests/msc_vlr/msc_vlr_tests.c771
-rw-r--r--tests/msc_vlr/msc_vlr_tests.h47
-rw-r--r--tests/sms_queue/Makefile.am1
-rw-r--r--tests/sms_queue/sms_queue_test.c1
-rw-r--r--tests/test_neighbor_ident.vty237
-rw-r--r--tests/test_nodes.vty4
151 files changed, 35637 insertions, 22975 deletions
diff --git a/configure.ac b/configure.ac
index 8ab60213e..ae6dd6ac2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -256,6 +256,7 @@ AC_OUTPUT(
doc/Makefile
doc/examples/Makefile
doc/manuals/Makefile
+ doc/sequence_charts/Makefile
contrib/Makefile
contrib/systemd/Makefile
Makefile)
diff --git a/doc/sequence_charts/Makefile.am b/doc/sequence_charts/Makefile.am
new file mode 100644
index 000000000..75e250a5f
--- /dev/null
+++ b/doc/sequence_charts/Makefile.am
@@ -0,0 +1,20 @@
+all: msc dot
+
+msc: \
+ $(builddir)/mncc_fsm.png \
+ $(builddir)/inter_bsc_ho.png \
+ $(builddir)/inter_msc_ho.png \
+ $(NULL)
+
+dot: \
+ $(NULL)
+
+$(builddir)/%.png: $(srcdir)/%.msc
+ mscgen -T png -o $@ $<
+
+$(builddir)/%.png: $(srcdir)/%.dot
+ dot -Tpng $< > $@
+
+.PHONY: poll
+poll:
+ while true; do $(MAKE) msc dot; sleep 1; done
diff --git a/doc/sequence_charts/inter_bsc_ho.msc b/doc/sequence_charts/inter_bsc_ho.msc
new file mode 100644
index 000000000..2bc1276ef
--- /dev/null
+++ b/doc/sequence_charts/inter_bsc_ho.msc
@@ -0,0 +1,36 @@
+msc {
+ hscale=2;
+ bsca [label="BSC-A"], i[label="MSC-I"], a[label="MSC-A"], t[label="MSC-T"], bscb[label="BSC-B"];
+
+ i note t [label="'MSC-A,I,T' are explained in 3GPP TS 49.008 '4.3 Roles of MSC-A, MSC-I and MSC-T'"];
+ i note i [label="I = Internal; the MSC that does BSSMAP to the BSC (may change to a remote MSC-B after HO)"];
+ a note a [label="A = first; the MSC that has MM control BSSMAP to the BSC (never changes)"];
+ t note t [label="T = transitory; the MSC that a handover is going towards (may be MSC-A for inter-BSC HO, may be a remote MSC-B)"];
+
+ bsca => i [label="BSSMAP Handover Required"];
+ i -> a [label="BSSMAP Handover Required"];
+
+ a -> t [label="MAP Prepare Handover"];
+ t => bscb [label="BSSMAP Handover Request"];
+ t <= bscb [label="BSSMAP Handover Request ACK"];
+ a <- t [label="MAP Prepare Handover Response"];
+ i <- a [label="MAP Prepare Handover Response"];
+ bsca <= i [label="BSSMAP Handover Command"];
+
+ --- [label="MS sends RACH to new cell"];
+
+ t <= bscb [label="BSSMAP Handover Detected"];
+ a <- t [label="MAP Access Signaling Request"];
+
+ t <= bscb [label="BSSMAP Handover Complete"];
+ a <- t [label="MAP Send End Signal"];
+
+
+ a abox a [label="MSC-A accepts the new BSC"];
+ i note t [label="previous MSC-I gets dropped, MSC-T becomes the new MSC-I"];
+ i abox i [label="discard"];
+ t abox t [label="MSC-I"];
+
+ bsca <= i [label="BSSMAP Clear Command"];
+
+}
diff --git a/doc/sequence_charts/inter_msc_ho.msc b/doc/sequence_charts/inter_msc_ho.msc
new file mode 100644
index 000000000..f7572d1b5
--- /dev/null
+++ b/doc/sequence_charts/inter_msc_ho.msc
@@ -0,0 +1,82 @@
+msc {
+ hscale=2;
+ bsca [label="BSC-A"], ai[label="MSC-I (at MSC-A)"], a[label="MSC-A"], bt[label="MSC-T (at MSC-B)"], bi[label="MSC-I (at MSC-B)"], bscb[label="BSC-B"],
+ ct[label="MSC-T (at MSC-C)"], bscc[label="BSC-C"];
+
+ ai note bt [label="'MSC-A,I,T' are explained in 3GPP TS 49.008 '4.3 Roles of MSC-A, MSC-I and MSC-T'"];
+ ai note ai [label="I = Internal; the MSC that does BSSMAP to the BSC (may change to a remote MSC-B after HO)"];
+ a note a [label="A = first; the MSC that has MM control (never changes)"];
+ bt note bi [label="B = second; the MSC that acts as BSS relay for MSC-A"];
+ bt note bt [label="T = transitory; the MSC that a handover is going towards (may be MSC-A for inter-BSC HO, may be a remote MSC-B)"];
+
+ bsca => ai [label="BSSMAP Handover Required"];
+ ai -> a [label="BSSMAP Handover Required"];
+
+ a rbox a [label="MSC-A routes all MSC-T messages to remote MSC-B."];
+
+ a => bt [label="MAP Prepare Handover"];
+ a note bt [label="in Osmocom, MAP messages are actually sent as GSUP, to the HLR"];
+
+ bt rbox bt [label="MSC-B routes all MSC-A type messages back to MSC-A."];
+ bt rbox bt [label="MSC-B generates a Handover MSISDN"];
+
+ bt => bscb [label="BSSMAP Handover Request"];
+ bt <= bscb [label="BSSMAP Handover Request ACK"];
+ a <= bt [label="MAP Prepare Handover Response"];
+
+ a => bt [label="establish SIP call to Handover MSISDN via external MNCC"];
+
+ ai <- a [label="BSSMAP Handover Command"];
+ bsca <= ai [label="BSSMAP Handover Command"];
+
+ --- [label="MS sends RACH to new cell"];
+
+ bt <= bscb [label="BSSMAP Handover Detected"];
+ a <= bt [label="MAP Access Signaling Request"];
+
+ bt <= bscb [label="BSSMAP Handover Complete"];
+ a <= bt [label="MAP Send End Signal"];
+ bt rbox bt [label="MSC-B drops the generated Handover MSISDN"];
+
+ a abox a [label="MSC-A accepts the new MSC-B and BSC"];
+ ai note bt [label="previous MSC-I (A) gets dropped, MSC-T (B) becomes the new MSC-I"];
+ ai rbox a [label="MSC-A performs all MSC-I tasks via MAP at remote MSC-B's MSC-I."];
+ bt abox bi [label="MSC-I"];
+ ai abox ai [label="discard"];
+ bsca <= ai [label="BSSMAP Clear Command"];
+
+ ...;
+ ...;
+
+ --- [label="Another inter-MSC handover"];
+ a note bi [label="MSC-A remains in charge"];
+
+ bscb => bi [label="BSSMAP Handover Required"];
+ bi => a [label="BSSMAP Handover Required"];
+
+ a rbox a [label="MSC-A routes all MSC-T messages to remote MSC-C."];
+
+ a => ct [label="MAP Prepare Handover"];
+ ct rbox ct [label="MSC-C routes all MSC-A type messages back to MSC-A."];
+ ct => bscc [label="BSSMAP Handover Request"];
+ ct <= bscc [label="BSSMAP Handover Request ACK"];
+ a <= ct [label="MAP Prepare Handover Response"];
+ a => bi [label="MAP Prepare Handover Response"];
+ bscb <= bi [label="BSSMAP Handover Command"];
+
+ --- [label="MS sends RACH to new cell"];
+
+ ct <= bscc [label="BSSMAP Handover Detected"];
+ a <= ct [label="MAP Access Signaling Request"];
+
+ ct <= bscc [label="BSSMAP Handover Complete"];
+ a <= ct [label="MAP Send End Signal"];
+
+ a abox a [label="MSC-A accepts the new MSC-C and BSC"];
+ bi note ct [label="previous MSC-I (B) gets dropped, MSC-T (B) becomes the new MSC-I"];
+ ai rbox a [label="MSC-A performs all MSC-I tasks via MAP at remote MSC-C's MSC-I."];
+ ct abox ct [label="MSC-I"];
+ bi abox bi [label="discard"];
+ bscb <= bi [label="BSSMAP Clear Command"];
+
+}
diff --git a/doc/sequence_charts/mncc_fsm.msc b/doc/sequence_charts/mncc_fsm.msc
new file mode 100644
index 000000000..ae5e0a211
--- /dev/null
+++ b/doc/sequence_charts/mncc_fsm.msc
@@ -0,0 +1,84 @@
+msc {
+ hscale=2;
+ msc1[label="osmo-msc"], mncc1[label="MNCC FSM"], pbx[label="MNCC server (osmo-sip-connector)"], mncc2[label="MNCC FSM"], msc2[label="osmo-msc"];
+
+ mncc1 note mncc1 [label="The typical progression of an outgoing call, i.e. a call initiated by osmo-msc, as
+ implemented in mncc_fsm.h, mncc_fsm.c"];
+ mncc2 note mncc2 [label="The typical progression of an incoming call, i.e. a call initiated by the PBX, as
+ implemented in mncc_fsm.h, mncc_fsm.c"];
+
+ mncc1 abox mncc1 [label="MNCC_ST_NOT_STARTED"];
+ msc1 rbox msc1 [label="mncc_outgoing_start()"];
+ msc1 -> mncc1 [label="MNCC_EV_OUTGOING_START"];
+
+ mncc1 abox mncc1 [label="MNCC_ST_OUTGOING_WAIT_PROCEEDING"];
+ mncc1 => pbx [label="MNCC_SETUP_IND
+ \n callref, IMSI, called and calling number"];
+ mncc1 <= pbx [label="MNCC_RTP_CREATE
+ \n callref"];
+ mncc1 rbox mncc1 [label="mncc_rx_rtp_create()"];
+ mncc1 => pbx [label="MNCC_RTP_CREATE
+ \n callref, RTP IP address and port"];
+ mncc1 <= pbx [label="MNCC_CALL_PROC_REQ
+ \n callref, RTP IP address and port"];
+ mncc1 abox mncc1 [label="MNCC_ST_OUTGOING_WAIT_COMPLETE"];
+
+ msc2 <= pbx [label="MNCC_SETUP_REQ
+ \n callref, called and calling number"];
+ mncc2 abox mncc2 [label="MNCC_ST_NOT_STARTED"];
+ msc2 rbox msc2 [label="mncc_incoming_start()"];
+ msc2 -> mncc2 [label="MNCC_EV_INCOMING_START"];
+ mncc2 abox mncc2 [label="MNCC_ST_INCOMING_WAIT_COMPLETE"];
+ mncc2 => pbx [label="MNCC_CALL_CONF_IND
+ \n callref, bearer capabilities, cccap and IMSI"];
+ mncc2 <= pbx [label="MNCC_RTP_CREATE
+ \n callref"];
+ mncc2 rbox mncc2 [label="mncc_rx_rtp_create()"];
+ mncc2 => pbx [label="MNCC_RTP_CREATE
+ \n callref, RTP IP address and port"];
+ mncc2 => pbx [label="MNCC_ALERT_IND
+ \n callref"];
+
+ mncc1 <= pbx [label="MNCC_ALERT_REQ
+ \n callref and progress"];
+
+ mncc2 => pbx [label="MNCC_SETUP_CNF
+ \n callref, imsi and connected number"];
+ mncc2 <= pbx [label="MNCC_RTP_CONNECT
+ \n callref, RTP IP and port"];
+ mncc2 rbox mncc2 [label="mncc_rx_rtp_connect()"];
+ mncc2 <= pbx [label="MNCC_SETUP_COMPL_REQ
+ \n callref"];
+ mncc2 abox mncc2 [label="MNCC_ST_TALKING"];
+
+ mncc1 <= pbx [label="MNCC_RTP_CONNECT
+ \n callref, RTP IP and port"];
+ mncc1 rbox mncc1 [label="mncc_rx_rtp_connect()"];
+ msc1 <- mncc1 [label="rtp_stream_set_remote_addr()"];
+ mncc1 <= pbx [label="MNCC_SETUP_RSP
+ \n callref"];
+ mncc1 => pbx [label="MNCC_SETUP_COMPL_IND
+ \n callref"];
+ mncc1 abox mncc1 [label="MNCC_ST_TALKING"];
+
+ ...;
+ ... [label="Call goes on for a while..."];
+ ...;
+
+ mncc1 rbox mncc1 [label="mncc_release()"];
+ mncc1 => pbx [label="MNCC_DISC_IND
+ \n callref and cause"];
+ mncc1 abox mncc1 [label="MNCC_ST_WAIT_RELEASE_ACK"];
+ mncc1 <= pbx [label="MNCC_REL_REQ
+ \n callref and cause"];
+
+ mncc2 <= pbx [label="MNCC_DISC_REQ
+ \n callref and cause"];
+ mncc2 => pbx [label="MNCC_REL_IND
+ \n callref and cause"];
+ mncc2 abox mncc2 [label="terminated"];
+
+ mncc1 => pbx [label="MNCC_REL_CNF
+ \n callref"];
+ mncc1 abox mncc1 [label="terminated"];
+}
diff --git a/include/osmocom/msc/Makefile.am b/include/osmocom/msc/Makefile.am
index 408d710e3..729dae444 100644
--- a/include/osmocom/msc/Makefile.am
+++ b/include/osmocom/msc/Makefile.am
@@ -1,28 +1,42 @@
noinst_HEADERS = \
- a_iface.h \
- a_iface_bssap.h \
+ call_leg.h \
+ cell_id_list.h \
db.h \
debug.h \
+ e_link.h \
gsm_04_08.h \
- gsm_04_11.h \
gsm_04_11_gsup.h \
+ gsm_04_11.h \
gsm_04_14.h \
gsm_04_80.h \
gsm_09_11.h \
gsm_data.h \
gsm_data_shared.h \
gsm_subscriber.h \
- iucs.h \
- iucs_ranap.h \
- iu_dummy.h \
mncc.h \
mncc_int.h \
+ mncc_call.h \
+ msc_a.h \
+ msc_a_remote.h \
msc_common.h \
- msc_ifaces.h \
- msc_mgcp.h \
- a_reset.h \
+ msc_ho.h \
+ msc_i.h \
+ msc_i_remote.h \
+ msc_roles.h \
+ msc_t.h \
+ msc_t_remote.h \
+ msub.h \
+ neighbor_ident.h \
+ paging.h \
ran_conn.h \
+ ran_infra.h \
+ ran_msg.h \
+ ran_msg_a.h \
+ ran_msg_iu.h \
+ ran_peer.h \
rrlp.h \
+ rtp_stream.h \
+ sccp_ran.h \
sgs_iface.h \
sgs_server.h \
sgs_vty.h \
diff --git a/include/osmocom/msc/a_iface.h b/include/osmocom/msc/a_iface.h
deleted file mode 100644
index d8a8aab38..000000000
--- a/include/osmocom/msc/a_iface.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* (C) 2017 by Sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Philipp Maier
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#pragma once
-
-#include <osmocom/msc/a_reset.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/gsm/protocol/gsm_08_08.h>
-
-/* A struct to keep a context information about the BSCs we are associated with */
-struct bsc_context {
- struct llist_head list;
-
- /* Holds a copy of the sccp address of the BSC,
- * this address will become known as soon as
- * a remote BSC tries to make a connection or
- * sends a RESET request via UNIDATA */
- struct osmo_sccp_addr bsc_addr;
-
- /* Holds a copy of the our local MSC address,
- * this will be the sccp-address that is associated
- * with the A interface */
- struct osmo_sccp_addr msc_addr;
-
- /* A pointer to the reset handler FSM, the
- * state machine is allocated when the BSC
- * is registerd. */
- struct osmo_fsm_inst *reset_fsm;
-
- /* A pointer to the sccp_user that is associated
- * with the A interface. We need this information
- * to send the resets and to send paging requests */
- struct osmo_sccp_user *sccp_user;
-};
-
-/* Initalize A interface connection between to MSC and BSC */
-int a_init(struct osmo_sccp_instance *sccp, struct gsm_network *network);
-
-/* Send DTAP message via A-interface, take ownership of msg */
-int a_iface_tx_dtap(struct msgb *msg);
-
-/* Send Cipher mode command via A-interface */
-int a_iface_tx_cipher_mode(const struct ran_conn *conn,
- struct gsm0808_encrypt_info *ei, int include_imeisv);
-
-/* Page a subscriber via A-interface */
-int a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac);
-
-/* Send assignment request via A-interface */
-int a_iface_tx_assignment(const struct gsm_trans *trans);
-
-/* Send clear command via A-interface */
-int a_iface_tx_clear_cmd(const struct ran_conn *conn);
-
-int a_iface_tx_classmark_request(const struct ran_conn *conn);
-
-/* Clear all RAN connections on a specified BSC
- * (Helper function for a_iface_bssap.c) */
-void a_clear_all(struct osmo_sccp_user *scu, const struct osmo_sccp_addr *bsc_addr);
-
-void a_start_reset(struct bsc_context *bsc_ctx, bool already_connected);
-
-/* Delete info of a closed connection from the active connection list
- * (Helper function for a_iface_bssap.c) */
-void a_delete_bsc_con(uint32_t conn_id);
diff --git a/include/osmocom/msc/a_iface_bssap.h b/include/osmocom/msc/a_iface_bssap.h
deleted file mode 100644
index d4b67e3ec..000000000
--- a/include/osmocom/msc/a_iface_bssap.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* (C) 2017 by sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Philipp Maier
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#pragma once
-
-#include <osmocom/msc/a_iface.h>
-
-/* Note: The structs and functions presented in this header file are intended
- * to be used only by a_iface.c. */
-
-/* A structure to hold tha most basic information about a sigtran connection
- * we use this struct internally here to pass connection data around */
-struct a_conn_info {
- struct bsc_context *bsc;
- uint32_t conn_id;
- struct gsm_network *network;
-};
-
-/* Receive incoming connection less data messages via sccp */
-void a_sccp_rx_udt(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg);
-
-/* Receive incoming connection oriented data messages via sccp */
-int a_sccp_rx_dt(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg);
-
diff --git a/include/osmocom/msc/a_reset.h b/include/osmocom/msc/a_reset.h
deleted file mode 100644
index 8eb3bbfda..000000000
--- a/include/osmocom/msc/a_reset.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* (C) 2017 by sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Philipp Maier
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#pragma once
-
-/* Create and start state machine which handles the reset/reset-ack procedure */
-struct osmo_fsm_inst *a_reset_alloc(void *ctx, const char *name, void *cb,
- void *priv, bool already_connected);
-
-/* Confirm that we sucessfully received a reset acknowlege message */
-void a_reset_ack_confirm(struct osmo_fsm_inst *reset_fsm);
-
-/* Check if we have a connection to a specified msc */
-bool a_reset_conn_ready(struct osmo_fsm_inst *reset_fsm);
diff --git a/include/osmocom/msc/call_leg.h b/include/osmocom/msc/call_leg.h
new file mode 100644
index 000000000..b8126e82d
--- /dev/null
+++ b/include/osmocom/msc/call_leg.h
@@ -0,0 +1,81 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <osmocom/core/tdef.h>
+
+struct osmo_fsm_inst;
+struct osmo_sockaddr_str;
+struct osmo_mgcpc_ep;
+struct gsm_network;
+struct gsm_trans;
+struct rtp_stream;
+enum rtp_direction;
+
+extern struct osmo_tdef g_mgw_tdefs[];
+
+/* All sides of an MGW endpoint, connecting remote RTP peers via the MGW.
+ *
+ * BSC MGW PBX
+ * CI CI
+ * [MGW-endpoint]
+ * [--rtp_stream--] [--rtp_stream--]
+ * [----------------call_leg----------------]
+ *
+ */
+struct call_leg {
+ struct osmo_fsm_inst *fi;
+
+ struct osmo_mgcpc_ep *mgw_endpoint;
+
+ /* Array indexed by enum rtp_direction. */
+ struct rtp_stream *rtp[2];
+ /* Array indexed by enum rtp_direction. */
+ enum mgcp_connection_mode crcx_conn_mode[2];
+
+ uint32_t parent_event_rtp_addr_available;
+ uint32_t parent_event_rtp_complete;
+ uint32_t parent_event_rtp_released;
+
+ /* For internal MNCC, if RTP addresses for endpoints become assigned by the MGW, implicitly notify the other
+ * call leg's RTP_TO_CN side rtp_stream with rtp_stream_remote_addr_available(). */
+ struct call_leg *local_bridge;
+
+ /* Prevent events from deallocating for certain release code paths, to prevent use-after-free problems. */
+ bool deallocating;
+};
+
+enum call_leg_event {
+ CALL_LEG_EV_RTP_STREAM_ADDR_AVAILABLE,
+ CALL_LEG_EV_RTP_STREAM_ESTABLISHED,
+ CALL_LEG_EV_RTP_STREAM_GONE,
+ CALL_LEG_EV_MGW_ENDPOINT_GONE,
+};
+
+void call_leg_init(struct gsm_network *net);
+
+struct call_leg *call_leg_alloc(struct osmo_fsm_inst *parent_fi,
+ uint32_t parent_event_term,
+ uint32_t parent_event_rtp_addr_available,
+ uint32_t parent_event_rtp_complete,
+ uint32_t parent_event_rtp_released);
+
+void call_leg_reparent(struct call_leg *cl,
+ struct osmo_fsm_inst *parent_fi,
+ uint32_t parent_event_term,
+ uint32_t parent_event_rtp_addr_available,
+ uint32_t parent_event_rtp_complete,
+ uint32_t parent_event_rtp_released);
+
+int call_leg_local_bridge(struct call_leg *cl1, uint32_t call_id1, struct gsm_trans *trans1,
+ struct call_leg *cl2, uint32_t call_id2, struct gsm_trans *trans2);
+
+int call_leg_ensure_rtp_alloc(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id,
+ struct gsm_trans *for_trans);
+int call_leg_ensure_ci(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id, struct gsm_trans *for_trans,
+ const enum mgcp_codecs *codec_if_known, const struct osmo_sockaddr_str *remote_port_if_known);
+struct osmo_sockaddr_str *call_leg_local_ip(struct call_leg *cl, enum rtp_direction dir);
+
+void call_leg_rtp_stream_gone(struct call_leg *cl, struct rtp_stream *rtps);
+void call_leg_release(struct call_leg *cl);
diff --git a/include/osmocom/msc/cell_id_list.h b/include/osmocom/msc/cell_id_list.h
new file mode 100644
index 000000000..83d05f5da
--- /dev/null
+++ b/include/osmocom/msc/cell_id_list.h
@@ -0,0 +1,43 @@
+/* Manage a list of struct gsm0808_cell_id */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#pragma once
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/gsm/gsm0808_utils.h>
+
+struct cell_id_list_entry {
+ struct llist_head entry;
+ struct gsm0808_cell_id cell_id;
+};
+
+int cell_id_list_add_cell(void *talloc_ctx, struct llist_head *list, const struct gsm0808_cell_id *cid);
+int cell_id_list_add_list(void *talloc_ctx, struct llist_head *list, const struct gsm0808_cell_id_list2 *cil);
+
+struct cell_id_list_entry *cell_id_list_find(struct llist_head *list,
+ const struct gsm0808_cell_id *id,
+ unsigned int match_nr,
+ bool exact_match);
+
+void cell_id_list_del_entry(struct cell_id_list_entry *e);
diff --git a/include/osmocom/msc/e_link.h b/include/osmocom/msc/e_link.h
new file mode 100644
index 000000000..88e41a7aa
--- /dev/null
+++ b/include/osmocom/msc/e_link.h
@@ -0,0 +1,36 @@
+/* E-interface messaging over a GSUP connection */
+#pragma once
+
+#include <osmocom/gsm/gsup.h>
+#include <osmocom/msc/msc_roles.h>
+
+struct osmo_fsm_inst;
+struct gsm_network;
+struct vlr_instance;
+
+/* E-interface: connection to a remote MSC via GSUP */
+struct e_link {
+ struct osmo_fsm_inst *msc_role;
+ struct gsup_client_mux *gcm;
+ uint8_t *remote_name;
+ size_t remote_name_len;
+};
+
+struct e_link *e_link_alloc(struct gsup_client_mux *gcm, struct osmo_fsm_inst *msc_role,
+ const uint8_t *remote_name, size_t remote_name_len);
+void e_link_assign(struct e_link *e, struct osmo_fsm_inst *msc_role);
+void e_link_free(struct e_link *e);
+
+int e_prep_gsup_msg(struct e_link *e, enum msc_role from_role, struct osmo_gsup_message *gsup_msg);
+int e_tx(struct e_link *e, const struct osmo_gsup_message *gsup_msg);
+
+const char *e_link_name(struct e_link *e);
+
+void msc_a_i_t_gsup_init(struct gsm_network *net);
+
+enum osmo_gsup_entity msc_role_to_gsup_entity(enum msc_role role);
+enum msc_role gsup_entity_to_msc_role(enum osmo_gsup_entity entity);
+int gsup_msg_assign_an_apdu(struct osmo_gsup_message *gsup_msg, struct an_apdu *an_apdu);
+
+struct msgb *gsup_msg_to_msgb(const struct osmo_gsup_message *gsup_msg);
+void gsup_msg_to_an_apdu(struct an_apdu *an_apdu, const struct osmo_gsup_message *gsup_msg);
diff --git a/include/osmocom/msc/gsm_04_08.h b/include/osmocom/msc/gsm_04_08.h
index 2d4a0cd77..47747cbcf 100644
--- a/include/osmocom/msc/gsm_04_08.h
+++ b/include/osmocom/msc/gsm_04_08.h
@@ -4,6 +4,7 @@
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gsm/gsm_utils.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
+#include <osmocom/msc/transaction.h>
struct msgb;
struct gsm_bts;
@@ -12,6 +13,7 @@ struct gsm_trans;
struct ran_conn;
struct amr_multirate_conf;
struct amr_mode;
+struct msc_a;
#define GSM48_ALLOC_SIZE 2048
#define GSM48_ALLOC_HEADROOM 256
@@ -22,33 +24,26 @@ static inline struct msgb *gsm48_msgb_alloc_name(const char *name)
name);
}
-void cm_service_request_concludes(struct ran_conn *conn,
- struct msgb *msg);
+void cm_service_request_concludes(struct msc_a *msc_a, struct msgb *msg, enum osmo_cm_service_type type);
/* config options controlling the behaviour of the lower leves */
-void gsm0408_clear_all_trans(struct gsm_network *net, int protocol);
-int gsm0408_dispatch(struct ran_conn *conn, struct msgb *msg);
+void gsm0408_clear_all_trans(struct gsm_network *net, enum trans_type type);
int gsm0408_rcvmsg(struct msgb *msg, uint8_t link_id);
/* don't use "enum gsm_chreq_reason_t" to avoid circular dependency */
void gsm_net_update_ctype(struct gsm_network *net);
-int gsm48_tx_simple(struct ran_conn *conn,
- uint8_t pdisc, uint8_t msg_type);
-int gsm48_tx_mm_info(struct ran_conn *conn);
-int gsm48_tx_mm_auth_req(struct ran_conn *conn, uint8_t *rand,
- uint8_t *autn, int key_seq);
-int gsm48_tx_mm_auth_rej(struct ran_conn *conn);
-int gsm48_tx_mm_serv_ack(struct ran_conn *conn);
-int gsm48_tx_mm_serv_rej(struct ran_conn *conn,
- enum gsm48_reject_value value);
+int gsm48_tx_simple(struct msc_a *msc_a, uint8_t pdisc, uint8_t msg_type);
+int gsm48_tx_mm_info(struct msc_a *msc_a);
+int gsm48_tx_mm_auth_req(struct msc_a *msc_a, uint8_t *rand, uint8_t *autn, int key_seq);
+int gsm48_tx_mm_auth_rej(struct msc_a *msc_a);
+int gsm48_tx_mm_serv_ack(struct msc_a *msc_a);
+int gsm48_tx_mm_serv_rej(struct msc_a *msc_a, enum gsm48_reject_value value);
int gsm48_send_rr_release(struct gsm_lchan *lchan);
int gsm48_send_rr_ciph_mode(struct gsm_lchan *lchan, int want_imeisv);
-int gsm48_send_rr_app_info(struct ran_conn *conn, uint8_t apdu_id,
- uint8_t apdu_len, const uint8_t *apdu);
+int gsm48_send_rr_app_info(struct msc_a *msc_a, uint8_t apdu_id, uint8_t apdu_len, const uint8_t *apdu);
int gsm48_send_rr_ass_cmd(struct gsm_lchan *dest_lchan, struct gsm_lchan *lchan, uint8_t power_class);
-int gsm48_send_ho_cmd(struct gsm_lchan *old_lchan, struct gsm_lchan *new_lchan,
- uint8_t power_command, uint8_t ho_ref);
+int gsm48_send_ho_cmd(struct gsm_lchan *old_lchan, struct gsm_lchan *new_lchan, uint8_t power_command, uint8_t ho_ref);
int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg);
@@ -79,4 +74,12 @@ int gsm48_tch_rtp_create(struct gsm_trans *trans);
int gsm48_conn_sendmsg(struct msgb *msg, struct ran_conn *conn, struct gsm_trans *trans);
struct msgb *gsm48_create_mm_info(struct gsm_network *net);
+int gsm0408_rcv_cc(struct msc_a *msc_a, struct msgb *msg);
+int gsm0408_rcv_mm(struct msc_a *msc_a, struct msgb *msg);
+int gsm0408_rcv_rr(struct msc_a *msc_a, struct msgb *msg);
+
+int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type);
+
+int compl_l3_msg_is_r99(const struct msgb *msg);
+
#endif
diff --git a/include/osmocom/msc/gsm_04_11.h b/include/osmocom/msc/gsm_04_11.h
index 4297cdb4a..be8bff3c3 100644
--- a/include/osmocom/msc/gsm_04_11.h
+++ b/include/osmocom/msc/gsm_04_11.h
@@ -7,6 +7,7 @@
struct vlr_subscr;
struct ran_conn;
struct gsm_trans;
+struct msc_a;
#define UM_SAPI_SMS 3 /* See GSM 04.05/04.06 */
@@ -31,7 +32,7 @@ struct sms_deliver {
struct gsm_network;
struct msgb;
-int gsm0411_rcv_sms(struct ran_conn *conn, struct msgb *msg);
+int gsm0411_rcv_sms(struct msc_a *msc_a, struct msgb *msg);
struct gsm_sms *sms_alloc(void);
void sms_free(struct gsm_sms *sms);
@@ -46,7 +47,7 @@ int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub,
size_t sm_rp_oa_len, const uint8_t *sm_rp_oa,
size_t sm_rp_ud_len, const uint8_t *sm_rp_ud);
-void gsm411_sapi_n_reject(struct ran_conn *conn);
+void gsm411_sapi_n_reject(struct msc_a *msc_a);
int gsm411_send_rp_ack(struct gsm_trans *trans, uint8_t msg_ref);
int gsm411_send_rp_error(struct gsm_trans *trans, uint8_t msg_ref,
diff --git a/include/osmocom/msc/gsm_04_11_gsup.h b/include/osmocom/msc/gsm_04_11_gsup.h
index 969eabad2..4034f5e19 100644
--- a/include/osmocom/msc/gsm_04_11_gsup.h
+++ b/include/osmocom/msc/gsm_04_11_gsup.h
@@ -2,6 +2,7 @@
#include <stdint.h>
+struct gsup_client_mux;
struct osmo_gsup_message;
struct vlr_subscr;
struct gsm_trans;
@@ -10,11 +11,9 @@ struct msgb;
int gsm411_gsup_mo_ready_for_sm_req(struct gsm_trans *trans, uint8_t sm_rp_mr);
int gsm411_gsup_mo_fwd_sm_req(struct gsm_trans *trans, struct msgb *msg,
uint8_t sm_rp_mr, uint8_t *sm_rp_da, uint8_t sm_rp_da_len);
-int gsm411_gsup_mo_handler(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg);
int gsm411_gsup_mt_fwd_sm_res(struct gsm_trans *trans, uint8_t sm_rp_mr);
int gsm411_gsup_mt_fwd_sm_err(struct gsm_trans *trans,
uint8_t sm_rp_mr, uint8_t cause);
-int gsm411_gsup_mt_handler(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg);
+
+int gsm411_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg);
diff --git a/include/osmocom/msc/gsm_04_14.h b/include/osmocom/msc/gsm_04_14.h
index a6bafce90..3513c68bb 100644
--- a/include/osmocom/msc/gsm_04_14.h
+++ b/include/osmocom/msc/gsm_04_14.h
@@ -2,14 +2,16 @@
#include <osmocom/gsm/protocol/gsm_04_14.h>
-int gsm0414_tx_close_tch_loop_cmd(struct ran_conn *conn,
+struct msc_a;
+
+int gsm0414_tx_close_tch_loop_cmd(struct msc_a *msc_a,
enum gsm414_tch_loop_mode loop_mode);
-int gsm0414_tx_open_loop_cmd(struct ran_conn *conn);
-int gsm0414_tx_act_emmi_cmd(struct ran_conn *conn);
-int gsm0414_tx_test_interface(struct ran_conn *conn,
+int gsm0414_tx_open_loop_cmd(struct msc_a *msc_a);
+int gsm0414_tx_act_emmi_cmd(struct msc_a *msc_a);
+int gsm0414_tx_test_interface(struct msc_a *msc_a,
uint8_t tested_devs);
-int gsm0414_tx_reset_ms_pos_store(struct ran_conn *conn,
+int gsm0414_tx_reset_ms_pos_store(struct msc_a *msc_a,
uint8_t technology);
-int gsm0414_rcv_test(struct ran_conn *conn,
+int gsm0414_rcv_test(struct msc_a *msc_a,
struct msgb *msg);
diff --git a/include/osmocom/msc/gsm_04_80.h b/include/osmocom/msc/gsm_04_80.h
index b786dcc49..bb6573b26 100644
--- a/include/osmocom/msc/gsm_04_80.h
+++ b/include/osmocom/msc/gsm_04_80.h
@@ -2,16 +2,13 @@
#include <stdint.h>
-struct ran_conn;
+struct msc_a;
-int msc_send_ussd_reject(struct ran_conn *conn,
- uint8_t transaction_id, int invoke_id,
- uint8_t problem_tag, uint8_t problem_code);
+int msc_send_ussd_reject(struct msc_a *msc_a, uint8_t transaction_id, int invoke_id,
+ uint8_t problem_tag, uint8_t problem_code);
-int msc_send_ussd_notify(struct ran_conn *conn, int level,
- const char *text);
-int msc_send_ussd_release_complete(struct ran_conn *conn,
- uint8_t transaction_id);
-int msc_send_ussd_release_complete_cause(struct ran_conn *conn,
+int msc_send_ussd_notify(struct msc_a *msc_a, int level, const char *text);
+int msc_send_ussd_release_complete(struct msc_a *msc_a, uint8_t transaction_id);
+int msc_send_ussd_release_complete_cause(struct msc_a *msc_a,
uint8_t transaction_id,
uint8_t cause_loc, uint8_t cause_val);
diff --git a/include/osmocom/msc/gsm_09_11.h b/include/osmocom/msc/gsm_09_11.h
index 8fbe41be3..324befcd1 100644
--- a/include/osmocom/msc/gsm_09_11.h
+++ b/include/osmocom/msc/gsm_09_11.h
@@ -1,7 +1,9 @@
#pragma once
-#include <osmocom/core/msgb.h>
-#include <osmocom/gsm/gsup.h>
+struct msc_a;
+struct mgsb;
+struct gsup_client_mux;
+struct osmo_gsup_message;
-int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg);
-int gsm0911_gsup_handler(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup);
+int gsm0911_rcv_nc_ss(struct msc_a *msc_a, struct msgb *msg);
+int gsm0911_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *msg);
diff --git a/include/osmocom/msc/gsm_data.h b/include/osmocom/msc/gsm_data.h
index 1a0d14463..42bb69a06 100644
--- a/include/osmocom/msc/gsm_data.h
+++ b/include/osmocom/msc/gsm_data.h
@@ -16,23 +16,17 @@
#include <osmocom/mgcp_client/mgcp_client.h>
#include <osmocom/msc/msc_common.h>
+#include <osmocom/msc/neighbor_ident.h>
#include "gsm_data_shared.h"
-/* TS 48.008 DLCI containing DCCH/ACCH + SAPI */
-#define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3]
-
-#include "../../bscconfig.h"
-#if BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#endif
-
/** annotations for msgb ownership */
#define __uses
struct mncc_sock_state;
struct vlr_instance;
struct vlr_subscr;
+struct gsup_client_mux;
#define tmsi_from_string(str) strtoul(str, NULL, 10)
@@ -144,6 +138,7 @@ struct gsm_network {
struct mncc_sock_state *mncc_state;
mncc_recv_cb_t mncc_recv;
struct llist_head upqueue;
+ struct osmo_tdef *mncc_tdefs;
/*
* TODO: Move the trans_list into the RAN connection and
* create a pending list for MT transactions. These exist before
@@ -171,9 +166,6 @@ struct gsm_network {
/* control interface */
struct ctrl_handle *ctrl;
- /* all active RAN connections. */
- struct llist_head ran_conns;
-
/* if override is nonzero, this timezone data is used for all MM
* contexts. */
/* TODO: in OsmoNITB, tz-override used to be BTS-specific. To enable
@@ -184,6 +176,7 @@ struct gsm_network {
/* MSC: GSUP server address of the HLR */
const char *gsup_server_addr_str;
uint16_t gsup_server_port;
+ struct gsup_client_mux *gcm;
struct vlr_instance *vlr;
@@ -196,28 +189,30 @@ struct gsm_network {
int ncss_guard_timeout;
struct {
+ struct osmo_tdef *tdefs;
struct mgcp_client_conf conf;
struct mgcp_client *client;
} mgw;
-#if BUILD_IU
struct {
/* CS7 instance id number (set via VTY) */
uint32_t cs7_instance;
- enum ranap_nsap_addr_enc rab_assign_addr_enc;
- struct osmo_sccp_instance *sccp;
+ enum nsap_addr_enc rab_assign_addr_enc;
+
+ struct sccp_ran_inst *sri;
} iu;
-#endif
struct {
/* CS7 instance id number (set via VTY) */
uint32_t cs7_instance;
- /* A list with the context information about
- * all BSCs we have connections with */
- struct llist_head bscs;
- struct osmo_sccp_instance *sccp;
+
+ struct sccp_ran_inst *sri;
} a;
+ /* A list of neighbor BSCs. This list is defined statically via VTY and does not
+ * necessarily correspond to BSCs attached to the A interface at a given moment. */
+ struct neighbor_ident_list *neighbor_list;
+
struct {
/* MSISDN to which to route MO emergency calls */
char *route_to_msisdn;
@@ -228,6 +223,14 @@ struct gsm_network {
* If no name is set, the IPA Serial Number will be the same as the Unit Name,
* and will be of the form 'MSC-00-00-00-00-00-00' */
char *msc_ipa_name;
+
+ struct llist_head neighbor_ident_list;
+
+ struct {
+ uint64_t range_start;
+ uint64_t range_end;
+ uint64_t next;
+ } handover_number;
};
struct osmo_esme;
diff --git a/include/osmocom/msc/gsm_data_shared.h b/include/osmocom/msc/gsm_data_shared.h
index 732607bc1..511d6bca3 100644
--- a/include/osmocom/msc/gsm_data_shared.h
+++ b/include/osmocom/msc/gsm_data_shared.h
@@ -31,10 +31,4 @@ enum gsm_hooks {
GSM_HOOK_RR_SECURITY,
};
-enum gsm_paging_event {
- GSM_PAGING_SUCCEEDED,
- GSM_PAGING_EXPIRED,
- GSM_PAGING_BUSY,
-};
-
#endif
diff --git a/include/osmocom/msc/gsm_subscriber.h b/include/osmocom/msc/gsm_subscriber.h
index f848ac850..31eca6b0f 100644
--- a/include/osmocom/msc/gsm_subscriber.h
+++ b/include/osmocom/msc/gsm_subscriber.h
@@ -12,40 +12,4 @@
struct ran_conn;
struct msgb;
-typedef int gsm_cbfn(unsigned int hooknum, unsigned int event, struct msgb *msg,
- void *data, void *param);
-
-/*
- * Struct for pending channel requests. This is managed in the
- * llist_head requests of each subscriber. The reference counting
- * should work in such a way that a subscriber with a pending request
- * remains in memory.
- */
-struct subscr_request {
- struct llist_head entry;
-
- /* human readable label to be able to log pending request kinds */
- const char *label;
-
- /* the callback data */
- gsm_cbfn *cbfn;
- void *param;
-};
-
-/*
- * Paging handling with authentication
- */
-struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub,
- gsm_cbfn *cbfn, void *param,
- const char *label,
- enum sgsap_service_ind serv_ind);
-void subscr_remove_request(struct subscr_request *req);
-
-void subscr_paging_cancel(struct vlr_subscr *vsub, enum gsm_paging_event event);
-int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
- struct msgb *msg, void *data, void *param);
-
-/* Find an allocated channel for a specified subscriber */
-struct ran_conn *connection_for_subscr(struct vlr_subscr *vsub);
-
#endif /* _GSM_SUBSCR_H */
diff --git a/include/osmocom/msc/gsup_client_mux.h b/include/osmocom/msc/gsup_client_mux.h
new file mode 100644
index 000000000..07f17c260
--- /dev/null
+++ b/include/osmocom/msc/gsup_client_mux.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <osmocom/gsm/gsup.h>
+#include <osmocom/msc/gsup_client_mux.h>
+
+struct gsup_client_mux;
+struct ipaccess_unit;
+
+struct gsup_client_mux_rx_cb {
+ int (* func )(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg);
+ void *data;
+};
+
+/* A GSUP client shared between code paths for various GSUP Message Classes.
+ * The main task is to dispatch GSUP messages to code paths corresponding to the respective Message Class, i.e.
+ * subscriber management, SMS, SS/USSD and inter-MSC messaging.
+ * If a GSUP Message Class IE is present in the message, the received message is dispatched directly to the rx_cb entry
+ * for that Message Class. Otherwise, the Message Class is determined by a switch() on the Message Type.*/
+struct gsup_client_mux {
+ struct osmo_gsup_client *gsup_client;
+
+ /* Target clients by enum osmo_gsup_message_class */
+ struct gsup_client_mux_rx_cb rx_cb[OSMO_GSUP_MESSAGE_CLASS_ARRAYSIZE];
+};
+
+struct gsup_client_mux *gsup_client_mux_alloc(void *talloc_ctx);
+int gsup_client_mux_start(struct gsup_client_mux *gcm, const char *gsup_server_addr_str, uint16_t gsup_server_port,
+ struct ipaccess_unit *ipa_dev);
+
+int gsup_client_mux_tx(struct gsup_client_mux *gcm, const struct osmo_gsup_message *gsup_msg);
+void gsup_client_mux_tx_error_reply(struct gsup_client_mux *gcm, const struct osmo_gsup_message *gsup_orig,
+ enum gsm48_gmm_cause cause);
+
+int gsup_client_mux_rx(struct osmo_gsup_client *gsup_client, struct msgb *msg);
diff --git a/include/osmocom/msc/iu_dummy.h b/include/osmocom/msc/iu_dummy.h
deleted file mode 100644
index 01a8aa608..000000000
--- a/include/osmocom/msc/iu_dummy.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Trivial switch-off of external Iu dependencies,
- * allowing to run full unit tests even when built without Iu support. */
-
-/*
- * (C) 2016,2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- *
- * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
- *
- * 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 <stdint.h>
-#include <stdbool.h>
-
-#include <osmocom/core/linuxlist.h>
-
-struct msgb;
-struct RANAP_Cause;
-struct osmo_auth_vector;
-
-struct ranap_ue_conn_ctx {
- struct llist_head list;
- uint32_t conn_id;
-};
-
-int ranap_iu_tx(struct msgb *msg, uint8_t sapi);
-int ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec,
- int send_ck);
-int ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac);
-int ranap_iu_page_ps(const char *imsi, const uint32_t *ptmsi, uint16_t lac, uint8_t rac);
-struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id, uint32_t rtp_ip,
- uint16_t rtp_port,
- bool use_x213_nsap);
-int ranap_iu_rab_act(struct ranap_ue_conn_ctx *ue_ctx, struct msgb *msg);
-int ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *uectx, const char *imsi);
-int ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause);
diff --git a/include/osmocom/msc/iucs.h b/include/osmocom/msc/iucs.h
deleted file mode 100644
index 302edc0e6..000000000
--- a/include/osmocom/msc/iucs.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <osmocom/msc/transaction.h>
-
-struct ranap_ue_conn_ctx;
-
-int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
- uint16_t *lac);
-
-struct ran_conn *ran_conn_lookup_iu(struct gsm_network *network,
- struct ranap_ue_conn_ctx *ue);
-int iu_rab_act_cs(struct gsm_trans *trans);
-
-uint32_t iu_get_conn_id(const struct ranap_ue_conn_ctx *ue);
diff --git a/include/osmocom/msc/iucs_ranap.h b/include/osmocom/msc/iucs_ranap.h
deleted file mode 100644
index c2ff5f90e..000000000
--- a/include/osmocom/msc/iucs_ranap.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-struct gsm_network;
-struct ranap_ue_conn_ctx;
-
-int iucs_rx_ranap_event(struct gsm_network *network,
- struct ranap_ue_conn_ctx *ue_ctx, int type, void *data);
diff --git a/include/osmocom/msc/mncc.h b/include/osmocom/msc/mncc.h
index a9be0048c..28ee9b339 100644
--- a/include/osmocom/msc/mncc.h
+++ b/include/osmocom/msc/mncc.h
@@ -1,4 +1,4 @@
-/* GSM Mobile Radio Interface Layer 3 messages on the A-bis interface
+/* GSM Mobile Radio Interface Layer 3 messages on the A-bis interface
* 3GPP TS 04.08 version 7.21.0 Release 1998 / ETSI TS 100 940 V7.21.0 */
/* (C) 2008-2009 by Harald Welte <laforge@gnumonks.org>
@@ -31,6 +31,7 @@
struct gsm_network;
struct msgb;
+struct gsm0808_channel_type;
/* One end of a call */
@@ -196,6 +197,15 @@ struct gsm_mncc_bridge {
uint32_t callref[2];
};
+union mncc_msg {
+ uint32_t msg_type;
+ struct gsm_mncc signal;
+ struct gsm_mncc_hello hello;
+ struct gsm_data_frame data_frame;
+ struct gsm_mncc_rtp rtp;
+ struct gsm_mncc_bridge bridge;
+};
+
const char *get_mncc_name(int value);
void mncc_set_cause(struct gsm_mncc *data, int loc, int val);
void cc_tx_to_mncc(struct gsm_network *net, struct msgb *msg);
@@ -217,4 +227,6 @@ int mncc_sock_init(struct gsm_network *net, const char *sock_path);
int mncc_prim_check(const struct gsm_mncc *mncc_prim, unsigned int len);
+int mncc_bearer_cap_to_channel_type(struct gsm0808_channel_type *ct, const struct gsm_mncc_bearer_cap *bc);
+
#endif
diff --git a/include/osmocom/msc/mncc_call.h b/include/osmocom/msc/mncc_call.h
new file mode 100644
index 000000000..ad0f0f841
--- /dev/null
+++ b/include/osmocom/msc/mncc_call.h
@@ -0,0 +1,140 @@
+/* Handle an MNCC managed call (external MNCC). */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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/>.
+ */
+#pragma once
+
+#include <osmocom/msc/mncc.h>
+#include <osmocom/msc/mncc_call.h>
+
+struct osmo_fsm_inst;
+struct rtp_stream;
+
+#define LOG_MNCC_CALL(MNCC, LEVEL, FMT, ARGS...) \
+ LOGPFSML((MNCC) ? (MNCC)->fi : NULL, LEVEL, FMT, ##ARGS)
+
+enum mncc_call_fsm_event {
+ /* An MNCC message was received from the MNCC socket. The data argument is a const union mncc_msg* pointing at
+ * the message contents. */
+ MNCC_CALL_EV_RX_MNCC_MSG,
+
+ /* The user has invoked mncc_call_outgoing_start(); this event exists to ensure that the FSM is in a state that
+ * allows starting a new outgoing call. */
+ MNCC_CALL_EV_OUTGOING_START,
+ /* The MNCC server has sent an MNCC_ALERT_REQ. */
+ MNCC_CALL_EV_OUTGOING_ALERTING,
+ /* The MNCC server has confirmed call setup with an MNCC_SETUP_RSP, we have sent an MNCC_SETUP_COMPL_IND. */
+ MNCC_CALL_EV_OUTGOING_SETUP_COMPLETE,
+
+ /* The user has invoked mncc_call_incoming_start(); this event exists to ensure that the FSM is in a state that
+ * allows starting a new incoming call. */
+ MNCC_CALL_EV_INCOMING_START,
+ /* MNCC server sent an MNCC_SETUP_REQ */
+ MNCC_CALL_EV_INCOMING_SETUP,
+ /* MNCC server confirmed call setup with an MNCC_SETUP_COMPL_REQ */
+ MNCC_CALL_EV_INCOMING_SETUP_COMPLETE,
+
+ /* MNCC server requests call release (Rx MNCC_DISC_REQ) */
+ MNCC_CALL_EV_CN_RELEASE,
+ /* osmo-msc should request call release (Tx MNCC_DISC_IND) */
+ MNCC_CALL_EV_MS_RELEASE,
+};
+
+/* The typical progression of outgoing and incoming calls via MNCC is shown by doc/sequence_charts/mncc_call_fsm.msc */
+enum mncc_call_fsm_state {
+ MNCC_CALL_ST_NOT_STARTED = 0,
+
+ MNCC_CALL_ST_OUTGOING_WAIT_PROCEEDING,
+ MNCC_CALL_ST_OUTGOING_WAIT_COMPLETE,
+
+ MNCC_CALL_ST_INCOMING_WAIT_COMPLETE,
+
+ MNCC_CALL_ST_TALKING,
+
+ MNCC_CALL_ST_WAIT_RELEASE_ACK,
+};
+
+struct mncc_call_incoming_req {
+ bool bearer_cap_present;
+ struct gsm_mncc_bearer_cap bearer_cap;
+
+ bool cccap_present;
+ struct gsm_mncc_cccap cccap;
+
+ struct gsm_mncc setup_req_msg;
+};
+
+struct mncc_call;
+typedef void (* mncc_call_message_cb_t )(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg, void *data);
+
+struct mncc_call {
+ struct llist_head entry;
+
+ struct osmo_fsm_inst *fi;
+ struct vlr_subscr *vsub;
+ struct gsm_network *net;
+
+ /* Details originally passed to mncc_call_outgoing_start(), if any. */
+ struct gsm_mncc outgoing_req;
+
+ uint32_t callref;
+ bool remote_msisdn_present;
+ struct gsm_mncc_number remote_msisdn;
+ bool local_msisdn_present;
+ struct gsm_mncc_number local_msisdn;
+ struct rtp_stream *rtps;
+ bool received_rtp_create;
+
+ mncc_call_message_cb_t message_cb;
+ void *forward_cb_data;
+
+ /* Event to dispatch to the FSM inst parent when the call is complete. Omit event dispatch when negative. See
+ * mncc_call_alloc()'s arg of same name. */
+ int parent_event_call_setup_complete;
+};
+
+void mncc_call_fsm_init(struct gsm_network *net);
+struct mncc_call *mncc_call_alloc(struct vlr_subscr *vsub,
+ struct osmo_fsm_inst *parent,
+ int parent_event_call_setup_complete,
+ uint32_t parent_event_call_released,
+ mncc_call_message_cb_t message_cb, void *forward_cb_data);
+void mncc_call_reparent(struct mncc_call *mncc_call,
+ struct osmo_fsm_inst *new_parent,
+ int parent_event_call_setup_complete,
+ uint32_t parent_event_call_released,
+ mncc_call_message_cb_t message_cb, void *forward_cb_data);
+
+int mncc_call_outgoing_start(struct mncc_call *mncc_call, const struct gsm_mncc *outgoing_req);
+
+int mncc_call_incoming_start(struct mncc_call *mncc_call, const struct mncc_call_incoming_req *incoming_req);
+int mncc_call_incoming_tx_setup_cnf(struct mncc_call *mncc_call, const struct gsm_mncc_number *connected_number);
+
+int mncc_call_set_rtp_stream(struct mncc_call *mncc_call, struct rtp_stream *rtps);
+void mncc_call_detach_rtp_stream(struct mncc_call *mncc_call);
+
+void mncc_call_rx(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg);
+int mncc_call_tx(struct mncc_call *mncc_call, union mncc_msg *mncc_msg);
+int mncc_call_tx_msgt(struct mncc_call *mncc_call, uint32_t msg_type);
+
+struct mncc_call *mncc_call_find_by_callref(uint32_t callref);
+
+void mncc_call_release(struct mncc_call *mncc_call);
diff --git a/include/osmocom/msc/msc_a.h b/include/osmocom/msc/msc_a.h
new file mode 100644
index 000000000..c732695a1
--- /dev/null
+++ b/include/osmocom/msc/msc_a.h
@@ -0,0 +1,215 @@
+/* MSC-A role: main subscriber management */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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/>.
+ */
+#pragma once
+
+#include <osmocom/core/use_count.h>
+#include <osmocom/core/tdef.h>
+
+#include <osmocom/gsm/protocol/gsm_04_08.h>
+#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
+#include <osmocom/gsm/protocol/gsm_08_08.h>
+#include <osmocom/gsm/gsm23003.h>
+
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/msc_common.h>
+#include <osmocom/msc/msc_ho.h>
+#include <osmocom/msc/neighbor_ident.h>
+
+struct ran_infra;
+
+#define MSC_A_USE_LOCATION_UPDATING "lu"
+#define MSC_A_USE_CM_SERVICE_CC "cm_service_cc"
+#define MSC_A_USE_CM_SERVICE_SMS "cm_service_sms"
+#define MSC_A_USE_CM_SERVICE_SS "cm_service_ss"
+#define MSC_A_USE_PAGING_RESPONSE "paging-response"
+#define MSC_A_USE_CC "cc"
+#define MSC_A_USE_SMS "sms"
+#define MSC_A_USE_NC_SS "nc_ss"
+#define MSC_A_USE_SILENT_CALL "silent_call"
+
+/* These are macros to use the source file:line information from the caller in a trivial way */
+#define msc_a_get(msc_a, use) \
+ OSMO_ASSERT(osmo_use_count_get_put(&msc_a->use_count, use, 1) == 0)
+#define msc_a_put(msc_a, use) \
+ OSMO_ASSERT(osmo_use_count_get_put(&msc_a->use_count, use, -1) == 0)
+#define msc_a_put_all(msc_a, use) do { \
+ int32_t has_count = osmo_use_count_by(&msc_a->use_count, use); \
+ if (has_count) \
+ OSMO_ASSERT(osmo_use_count_get_put(&msc_a->use_count, use, -has_count) == 0); \
+ } while(0)
+
+
+enum msc_a_action_on_classmark_update_type {
+ MSC_A_CLASSMARK_UPDATE_NOT_EXPECTED = 0,
+ MSC_A_CLASSMARK_UPDATE_THEN_CIPHERING,
+};
+
+/* A Classmark Update might be required for various tasks. At the time of writing, the only use case is to determine A5
+ * capabilities for choosing a ciphering algorithm. This structure anticipates other Classmark Update use cases to be
+ * added in the future. */
+struct msc_a_action_on_classmark_update {
+ enum msc_a_action_on_classmark_update_type type;
+ union {
+ /* State required to resume Ciphering after the Classmark Request / Classmark Update is complete. */
+ struct {
+ bool umts_aka;
+ bool retrieve_imeisv;
+ } ciphering;
+
+ /* Add more use cases here... */
+ };
+};
+
+struct msc_a {
+ /* struct msc_role_common must remain at start */
+ struct msc_role_common c;
+ enum complete_layer3_type complete_layer3_type;
+ struct osmo_cell_global_id via_cell;
+
+ /* Temporary storage for Classmark Information for times when a connection has no VLR subscriber
+ * associated yet. It will get copied to the VLR subscriber upon msc_vlr_subscr_assoc(). */
+ struct osmo_gsm48_classmark temporary_classmark;
+
+ /* See handling of E_MSC_A_CLASSMARK_UPDATE */
+ struct msc_a_action_on_classmark_update action_on_classmark_update;
+ uint32_t state_before_classmark_update;
+
+ /* After Ciphering Mode Complete on GERAN, this reflects the chosen ciphering algorithm and key */
+ struct geran_encr geran_encr;
+
+ /* N(SD) expected in the received frame, per flow (TS 24.007 11.2.3.2.3.2.2) */
+ uint8_t n_sd_next[4];
+
+ /* Call control and MSC-A side of RTP switching. Without inter-MSC handover involved, this manages all of the
+ * MGW and RTP switching; after an inter-MSC handover, the RAN-side of this is redirected via another MNCC
+ * connection to the Handover MSISDN, and a remote MSC-I role takes over RTP switching to the remote BSS.
+ *
+ * Without / before inter-MSC HO:
+ *
+ * BSS [MSC-I MSC-A] MNCC to PBX
+ * <--RTP---------> <--RTP-->
+ *
+ * After inter-MSC HO:
+ *
+ * BSS [MSC-I MSC-A] MNCC to PBX MSC-I BSS-B
+ * /--> <--RTP-->
+ * \-------RTP--> (ISUP) <--RTP--> <--RTP-->
+ */
+ struct {
+ /* All of the RTP stream handling */
+ struct call_leg *call_leg;
+ struct mncc_call *mncc_forwarding_to_remote_ran;
+
+ /* There may be up to 7 incoming calls for this subscriber. This is the currently serviced voice call,
+ * as in, the other person the subscriber is currently talking to. */
+ struct gsm_trans *active_trans;
+ } cc;
+
+ struct msc_ho_state ho;
+
+ struct osmo_use_count use_count;
+ struct osmo_use_count_entry use_count_buf[8];
+ int32_t max_total_use_count;
+};
+
+osmo_static_assert(offsetof(struct msc_a, c) == 0, msc_role_common_first_member_of_msc_a);
+
+struct msc_a_ran_dec_data {
+ enum msc_role from_role;
+ const struct an_apdu *an_apdu;
+ const struct ran_msg *ran_dec;
+};
+
+#define LOG_MSC_A(MSC_A, LEVEL, FMT, ARGS ...) \
+ LOG_MSC_A_CAT(MSC_A, (MSC_A) ? (MSC_A)->c.ran->log_subsys : DMSC, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_A_CAT(MSC_A, SUBSYS, LEVEL, FMT, ARGS ...) \
+ LOGPFSMSL((MSC_A) ? (MSC_A)->c.fi : NULL, SUBSYS, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_A_CAT_SRC(MSC_A, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ARGS ...) \
+ LOGPFSMSLSRC((MSC_A) ? (MSC_A)->c.fi : NULL, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ## ARGS)
+
+enum msc_a_states {
+ MSC_A_ST_VALIDATE_L3,
+ MSC_A_ST_AUTH_CIPH,
+ MSC_A_ST_WAIT_CLASSMARK_UPDATE,
+ MSC_A_ST_AUTHENTICATED,
+ MSC_A_ST_COMMUNICATING,
+ MSC_A_ST_RELEASING,
+ MSC_A_ST_RELEASED,
+};
+
+struct msc_a *msc_a_alloc(struct msub *msub, struct ran_infra *ran);
+
+int msc_a_classmark_request_then_cipher_mode_cmd(struct msc_a *msc_a, bool umts_aka, bool retrieve_imeisv);
+
+bool msc_a_is_establishing_auth_ciph(const struct msc_a *msc_a);
+bool msc_a_is_accepted(const struct msc_a *msc_a);
+bool msc_a_in_release(struct msc_a *msc_a);
+
+struct gsm_network *msc_a_net(const struct msc_a *msc_a);
+struct vlr_subscr *msc_a_vsub(const struct msc_a *msc_a);
+struct msc_i *msc_a_msc_i(const struct msc_a *msc_a);
+struct msc_t *msc_a_msc_t(const struct msc_a *msc_a);
+
+struct msc_a *msc_a_for_vsub(const struct vlr_subscr *vsub, bool valid_conn_only);
+
+void msc_a_pending_cm_service_req_add(struct msc_a *msc_a, enum osmo_cm_service_type type);
+unsigned int msc_a_pending_cm_service_req_count(struct msc_a *msc_a, enum osmo_cm_service_type type);
+void msc_a_pending_cm_service_req_del(struct msc_a *msc_a, enum osmo_cm_service_type type);
+
+#define msc_a_ran_down(A,B,C) \
+ _msc_a_ran_down(A,B,C, __FILE__, __LINE__)
+int _msc_a_ran_down(struct msc_a *msc_a, enum msc_role to_role, const struct ran_msg *ran_enc_msg,
+ const char *file, int line);
+#define msc_a_msg_down(A,B,C,D) \
+ _msc_a_msg_down(A,B,C,D, __FILE__, __LINE__)
+int _msc_a_msg_down(struct msc_a *msc_a, enum msc_role to_role, uint32_t to_role_event,
+ const struct ran_msg *ran_enc_msg,
+ const char *file, int line);
+
+int msc_a_tx_dtap_to_i(struct msc_a *msc_a, struct msgb *dtap);
+int msc_a_tx_common_id(struct msc_a *msc_a);
+int msc_a_tx_mm_serv_ack(struct msc_a *msc_a);
+int msc_a_tx_mm_serv_rej(struct msc_a *msc_a, enum gsm48_reject_value value);
+
+int msc_a_up_l3(struct msc_a *msc_a, struct msgb *msg);
+
+void msc_a_up_ciph_res(struct msc_a *msc_a, bool success, const char *imeisv);
+
+bool msc_a_is_accepted(const struct msc_a *msc_a);
+bool msc_a_is_establishing_auth_ciph(const struct msc_a *msc_a);
+
+int msc_a_try_call_assignment(struct gsm_trans *cc_trans);
+
+const char *msc_a_cm_service_type_to_use(enum osmo_cm_service_type cm_service_type);
+
+void msc_a_release_cn(struct msc_a *msc_a);
+void msc_a_release_mo(struct msc_a *msc_a, enum gsm48_gsm_cause gsm_cause);
+
+int msc_a_ran_decode_cb(struct osmo_fsm_inst *msc_a_fi, void *data, const struct ran_msg *msg);
+
+int msc_a_vlr_set_cipher_mode(void *_msc_a, bool umts_aka, bool retrieve_imeisv);
+
+struct msgb *msc_a_ran_encode(struct msc_a *msc_a, const struct ran_msg *ran_enc_msg);
+
+void msc_a_update_id(struct msc_a *msc_a);
diff --git a/include/osmocom/msc/msc_a_remote.h b/include/osmocom/msc/msc_a_remote.h
new file mode 100644
index 000000000..db7f50773
--- /dev/null
+++ b/include/osmocom/msc/msc_a_remote.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#define LOG_MSC_A_REMOTE(MSC_A_REMOTE, LEVEL, FMT, ARGS ...) \
+ LOG_MSC_A_REMOTE_CAT(MSC_A_REMOTE, (MSC_A_REMOTE) ? (MSC_A_REMOTE)->c.ran->log_subsys : DMSC, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_A_REMOTE_CAT(MSC_A_REMOTE, SUBSYS, LEVEL, FMT, ARGS ...) \
+ LOGPFSMSL((MSC_A_REMOTE) ? (MSC_A_REMOTE)->c.fi : NULL, SUBSYS, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_A_REMOTE_CAT_SRC(MSC_A_REMOTE, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ARGS ...) \
+ LOGPFSMSLSRC((MSC_A_REMOTE) ? (MSC_A_REMOTE)->c.fi : NULL, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ## ARGS)
+
+struct msub;
+struct ran_infra;
+
+struct msc_a *msc_a_remote_alloc(struct msub *msub, struct ran_infra *ran,
+ const uint8_t *remote_msc_name, size_t remote_msc_name_len);
+
+int msc_a_remote_assign_handover_number(struct msc_a *msc_a);
+struct msc_a *msc_a_remote_find_by_handover_number(const char *handover_number);
diff --git a/include/osmocom/msc/msc_common.h b/include/osmocom/msc/msc_common.h
index 3ca34692d..78337f764 100644
--- a/include/osmocom/msc/msc_common.h
+++ b/include/osmocom/msc/msc_common.h
@@ -1,5 +1,8 @@
#pragma once
+#include <osmocom/gsm/protocol/gsm_04_08.h>
+#include <osmocom/gsm/gsm0808.h>
+
struct msgb;
struct gsm_network;
struct vlr_subscr;
@@ -7,17 +10,51 @@ struct vlr_subscr;
#define MSC_HLR_REMOTE_IP_DEFAULT "127.0.0.1"
#define MSC_HLR_REMOTE_PORT_DEFAULT OSMO_GSUP_PORT
+/* TS 48.008 DLCI containing DCCH/ACCH + SAPI */
+#define OMSC_LINKID_CB(__msgb) (__msgb)->cb[3]
+
enum nsap_addr_enc {
NSAP_ADDR_ENC_X213,
NSAP_ADDR_ENC_V4RAW,
};
+#define MAX_A5_KEY_LEN (128/8)
+
+struct geran_encr {
+ /*! alg_id is in encoded format:
+ * alg_id == 1 means A5/0 i.e. no encryption, alg_id == 4 means A5/3.
+ * alg_id == 0 means no such IE was present. */
+ uint8_t alg_id;
+ uint8_t key_len;
+ uint8_t key[MAX_A5_KEY_LEN];
+};
+
+enum complete_layer3_type {
+ COMPLETE_LAYER3_NONE,
+ COMPLETE_LAYER3_LU,
+ COMPLETE_LAYER3_CM_SERVICE_REQ,
+ COMPLETE_LAYER3_PAGING_RESP,
+};
+
+extern const struct value_string complete_layer3_type_names[];
+static inline const char *complete_layer3_type_name(enum complete_layer3_type val)
+{
+ return get_value_string(complete_layer3_type_names, val);
+}
+
+struct cell_ids_entry {
+ struct llist_head entry;
+ struct gsm0808_cell_id_list2 cell_ids;
+};
+
typedef int (*mncc_recv_cb_t)(struct gsm_network *, struct msgb *);
struct gsm_network *gsm_network_init(void *ctx, mncc_recv_cb_t mncc_recv);
void gsm_network_set_mncc_sock_path(struct gsm_network *net, const char *mncc_sock_path);
+extern const struct vlr_ops msc_vlr_ops;
int msc_vlr_alloc(struct gsm_network *net);
int msc_vlr_start(struct gsm_network *net);
+int msc_gsup_client_start(struct gsm_network *net);
-void msc_stop_paging(struct vlr_subscr *vsub);
+uint32_t msc_cc_next_outgoing_callref();
diff --git a/include/osmocom/msc/msc_ho.h b/include/osmocom/msc/msc_ho.h
new file mode 100644
index 000000000..99956f1e6
--- /dev/null
+++ b/include/osmocom/msc/msc_ho.h
@@ -0,0 +1,104 @@
+/* MSC Handover API */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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/>.
+ */
+
+#pragma once
+
+#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/core/sockaddr_str.h>
+
+#include <osmocom/mgcp_client/mgcp_client.h>
+
+#include <osmocom/msc/neighbor_ident.h>
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/mncc_call.h>
+
+
+struct gsm0808_handover_required;
+
+struct msc_a;
+struct ran_dec_handover_required;
+
+#define LOG_HO(msc_a, level, fmt, args...) \
+ LOGPFSML((msc_a)? ((msc_a)->ho.fi ? : (msc_a)->c.fi) : NULL, \
+ level, "%s" fmt, (msc_a->ho.fi ? "" : "HO: "), ##args)
+
+enum msc_ho_fsm_state {
+ MSC_HO_ST_REQUIRED,
+ MSC_HO_ST_WAIT_REQUEST_ACK,
+ MSC_HO_ST_WAIT_COMPLETE,
+};
+
+enum msc_ho_fsm_event {
+ MSC_HO_EV_RX_REQUEST_ACK,
+ MSC_HO_EV_RX_DETECT,
+ MSC_HO_EV_RX_COMPLETE,
+ MSC_HO_EV_RX_FAILURE,
+ MSC_HO_EV_MNCC_FORWARDING_COMPLETE,
+ MSC_HO_EV_MNCC_FORWARDING_FAILED,
+};
+
+struct msc_ho_state {
+ struct osmo_fsm_inst *fi;
+ struct ran_handover_required info;
+ unsigned int next_cil_idx;
+ bool subsequent_ho;
+ bool ready_to_switch_rtp;
+ bool rtp_switched_to_new_cell;
+
+ struct {
+ enum osmo_rat_type ran_type;
+ struct gsm0808_cell_id cid;
+ struct osmo_cell_global_id cgi;
+ enum msc_neighbor_type type;
+ union {
+ struct ran_peer *ran_peer;
+ const char *msc_ipa_name;
+ };
+
+ /* The RTP address from Handover Request Acknowledge.
+ * Might be from AoIP Transport Layer Address from a BSC RAN peer,
+ * or from MNCC forwarding for inter-MSC handover. */
+ struct osmo_sockaddr_str ran_remote_rtp;
+ /* The codec from Handover Request Acknowledge. */
+ bool codec_present;
+ enum mgcp_codecs codec;
+
+ /* Inter-MSC voice forwarding via MNCC, to the remote MSC. The Prepare Handover Response sent us the
+ * Handover Number the remote MSC assigned. This is a call to that Handover Number, via PBX.
+ * (NULL if not an inter-MSC Handover) */
+ struct mncc_call *mncc_forwarding_to_remote_ran;
+ } new_cell;
+
+ struct {
+ /* Saved RTP IP:port and codec in case we need to roll back */
+ struct osmo_sockaddr_str ran_remote_rtp;
+ enum mgcp_codecs codec;
+ } old_cell;
+};
+
+void msc_ho_start(struct msc_a *msc_a, const struct ran_handover_required *ho_req);
+
+enum msc_neighbor_type msc_ho_find_target_cell(struct msc_a *msc_a, const struct gsm0808_cell_id *cid,
+ const struct neighbor_ident_entry **remote_msc,
+ struct ran_peer **ran_peer_from_neighbor_ident,
+ struct ran_peer **ran_peer_from_seen_cells);
diff --git a/include/osmocom/msc/msc_i.h b/include/osmocom/msc/msc_i.h
new file mode 100644
index 000000000..a2a5fb133
--- /dev/null
+++ b/include/osmocom/msc/msc_i.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/mncc.h>
+
+#include <osmocom/msc/msc_roles.h>
+
+struct ran_infra;
+struct mncc_call;
+
+#define LOG_MSC_I(MSC_I, LEVEL, FMT, ARGS ...) \
+ LOG_MSC_I_CAT(MSC_I, (MSC_I) ? (MSC_I)->c.ran->log_subsys : DMSC, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_I_CAT(MSC_I, SUBSYS, LEVEL, FMT, ARGS ...) \
+ LOGPFSMSL((MSC_I) ? (MSC_I)->c.fi : NULL, SUBSYS, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_I_CAT_SRC(MSC_I, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ARGS ...) \
+ LOGPFSMSLSRC((MSC_I) ? (MSC_I)->c.fi : NULL, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ## ARGS)
+
+struct msc_i {
+ /* struct msc_role_common must remain at start */
+ struct msc_role_common c;
+ struct ran_conn *ran_conn;
+
+ struct {
+ struct call_leg *call_leg;
+ struct mncc_call *mncc_forwarding_to_remote_cn;
+ } inter_msc;
+};
+
+osmo_static_assert(offsetof(struct msc_i, c) == 0, msc_role_common_first_member_of_msc_i);
+
+enum msc_i_state {
+ MSC_I_ST_READY,
+ MSC_I_ST_CLEARING,
+ MSC_I_ST_CLEARED,
+};
+
+struct msc_i *msc_i_alloc(struct msub *msub, struct ran_infra *ran);
+void msc_i_set_ran_conn(struct msc_i *msc_i, struct ran_conn *ran_conn);
+
+void msc_i_clear(struct msc_i *msc_i);
+void msc_i_cleared(struct msc_i *msc_i);
+
+int msc_i_down_l2(struct msc_i *msc_i, struct msgb *l2);
+
+struct gsm_network *msc_i_net(const struct msc_i *msc_i);
+struct vlr_subscr *msc_i_vsub(const struct msc_i *msc_i);
diff --git a/include/osmocom/msc/msc_i_remote.h b/include/osmocom/msc/msc_i_remote.h
new file mode 100644
index 000000000..526d76f86
--- /dev/null
+++ b/include/osmocom/msc/msc_i_remote.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#define LOG_MSC_I_REMOTE(MSC_I_REMOTE, LEVEL, FMT, ARGS ...) \
+ LOG_MSC_I_REMOTE_CAT(MSC_I_REMOTE, (MSC_I_REMOTE) ? (MSC_I_REMOTE)->c.ran->log_subsys : DMSC, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_I_REMOTE_CAT(MSC_I_REMOTE, SUBSYS, LEVEL, FMT, ARGS ...) \
+ LOGPFSMSL((MSC_I_REMOTE) ? (MSC_I_REMOTE)->c.fi : NULL, SUBSYS, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_I_REMOTE_CAT_SRC(MSC_I_REMOTE, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ARGS ...) \
+ LOGPFSMSLSRC((MSC_I_REMOTE) ? (MSC_I_REMOTE)->c.fi : NULL, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ## ARGS)
+
+struct msub;
+struct ran_infra;
+struct e_link;
+
+struct msc_i *msc_i_remote_alloc(struct msub *msub, struct ran_infra *ran, struct e_link *e);
diff --git a/include/osmocom/msc/msc_ifaces.h b/include/osmocom/msc/msc_ifaces.h
deleted file mode 100644
index 94423caa5..000000000
--- a/include/osmocom/msc/msc_ifaces.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#pragma once
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/msc/gsm_data.h>
-#include <osmocom/msc/transaction.h>
-
-/* These are the interfaces of the MSC layer towards (from?) the BSC and RNC,
- * i.e. in the direction towards the mobile device (MS aka UE).
- *
- * 2G will use the A-interface,
- * 3G aka UMTS will use the Iu-interface (for the MSC, it's IuCS).
- *
- * To allow linking parts of the MSC code without having to include entire
- * infrastructures of external libraries, the core transmitting and receiving
- * functions are left unimplemented. For example, a unit test does not need to
- * link against external ASN1 libraries if it is never going to encode actual
- * outgoing messages. It is up to each building scope to implement real world
- * functions or to plug mere dummy implementations.
- *
- * For example, msc_tx_dtap(conn, msg), depending on conn->via_iface, will call
- * either iu_tx() or a_tx() [note: at time of writing, the A-interface is not
- * yet implemented]. When you try to link against libmsc, you will find that
- * the compiler complains about an undefined reference to iu_tx(). If you,
- * however, link against libiu as well as the osmo-iuh libs (etc.), iu_tx() is
- * available. A unit test may instead simply implement a dummy iu_tx() function
- * and not link against osmo-iuh, see tests/libiudummy/.
- */
-
-/* Each main linkage must implement this function (see comment above). */
-extern int iu_tx(struct msgb *msg, uint8_t sapi);
-
-int msc_tx_dtap(struct ran_conn *conn,
- struct msgb *msg);
-
-int msc_gsm48_tx_mm_serv_ack(struct ran_conn *conn);
-int msc_gsm48_tx_mm_serv_rej(struct ran_conn *conn,
- enum gsm48_reject_value value);
-
-int msc_tx_common_id(struct ran_conn *conn);
diff --git a/include/osmocom/msc/msc_mgcp.h b/include/osmocom/msc/msc_mgcp.h
deleted file mode 100644
index 304e96706..000000000
--- a/include/osmocom/msc/msc_mgcp.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* (C) 2017 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/>.
- *
- */
-
-#pragma once
-
-#include <osmocom/mgcp_client/mgcp_client.h>
-#include <osmocom/msc/gsm_data.h>
-
-struct ran_conn;
-
-/* MGCP state handler context. This context information stores all information
- * to handle the direction of the RTP streams via MGCP. There is one instance
- * of this context struct per RAN connection.
- * (see also struct ran_conn) */
-struct mgcp_ctx {
- /* FSM instance, which handles the connection switching procedure */
- struct osmo_fsm_inst *fsm;
-
- /* RTP endpoint string. This string identifies the endpoint
- * on the MGW on which the RAN and CN connection is created. This
- * endpoint number is assigned by the MGW. */
- char rtp_endpoint[MGCP_ENDPOINT_MAXLEN];
-
- /* Call id of the current call. Will be derived from the callref
- * of the transaction that is valid during the first CRCX. (The
- * callref may change throughout the call) */
- unsigned int call_id;
-
- /* Set to true, when the context information is no longer needed */
- bool free_ctx;
-
- /* RTP connection identifiers */
- char conn_id_ran[MGCP_CONN_ID_LENGTH];
- char conn_id_cn[MGCP_CONN_ID_LENGTH];
-
- /* Copy of the pointer and the data with context information
- * needed to process the AoIP and MGCP requests (system data) */
- struct mgcp_client *mgcp;
- struct gsm_trans *trans;
- mgcp_trans_id_t mgw_pending_trans;
-};
-
-int msc_mgcp_try_call_assignment(struct gsm_trans *trans);
-int msc_mgcp_call_assignment(struct gsm_trans *trans);
-int msc_mgcp_ass_complete(struct ran_conn *conn, uint16_t port, char *addr);
-int msc_mgcp_ass_fail(struct ran_conn *conn);
-int msc_mgcp_call_complete(struct gsm_trans *trans, uint16_t port, char *addr);
-int msc_mgcp_call_release(struct gsm_trans *trans);
diff --git a/include/osmocom/msc/msc_roles.h b/include/osmocom/msc/msc_roles.h
new file mode 100644
index 000000000..a1fab2f23
--- /dev/null
+++ b/include/osmocom/msc/msc_roles.h
@@ -0,0 +1,387 @@
+#pragma once
+
+#include <osmocom/core/fsm.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/gsm/gsup.h>
+
+#include <osmocom/msc/msc_common.h>
+#include <osmocom/msc/ran_infra.h>
+
+/* Each subscriber connection is managed by different roles, as described in 3GPP TS 49.008 '4.3 Roles of MSC-A, MSC-I
+ * and MSC-T':
+ *
+ * MSC-A: subscriber management and control of all transactions (CC, SMS, USSD,...)
+ * MSC-I: "internal": the actual BSSMAP link to the BSS, or RANAP link to the RNC.
+ * MSC-T: "transitory": a new pending RAN link to a BSS or RNC, while handover is in progress.
+ * MSC-T becomes the new MSC-I once handover ends successfully.
+ *
+ * Without inter-MSC handover involved, all of the roles are managed by a single MSC instance. During inter-MSC
+ * handover negotiation, an MSC-T is set up at a remote MSC while MSC-A remains in the original MSC, and when handover
+ * concludes successfully, the remote MSC-T becomes the new remote MSC-I, replacing the local MSC-I role.
+ *
+ * Furthermore, the 3GPP specs use the following terms for naming MSC locations: MSC-A, MSC-B and MSC-B', as well as BSS
+ * or BSS-A, BSS-B and BSS-B':
+ *
+ * MSC-A: the first MSC the subscriber connected to.
+ * MSC-B: a remote MSC (if any).
+ * MSC-B': another remote MSC (if any, during Subsequent Handover).
+ *
+ * The full role assignments are spelled out in 3GPP TS 29.002.
+ *
+ * In Osmocom, the MAP protocol spoken between the MSCs is modeled using GSUP instead.
+ *
+ * Here are some diagrams of the lifecycle of a single subscriber's MSC-A,-I,-T roles at the locations MSC-A, MSC-B and
+ * MSC-B'.
+ *
+ * Initially:
+ *
+ * [MSC-A]
+ * BSS <-> MSC-I
+ *
+ * Then during inter-MSC handover negotiation:
+ *
+ * [MSC-A] <-MAP-> MSC-B
+ * BSS <-> MSC-I MSC-T <-> new BSS
+ *
+ * and when successful:
+ *
+ * [MSC-A] <-MAP-> MSC-B
+ * MSC-I <-> BSS
+ *
+ * Additional subsequent handover:
+ *
+ * [MSC-A] <-MAP-> MSC-B
+ * ^ MSC-I <-> BSS
+ * |
+ * +-------MAP-> MSC-B'
+ * MSC-T <-> new BSS
+ *
+ * (Here, quote, MSC-A "shall act as the target BSS towards the MSC-I and as the MSC towards the MSC-T.")
+ * and when successful:
+ *
+ * [MSC-A]
+ * ^
+ * |
+ * +-------MAP-> MSC-B
+ * MSC-I <-> BSS
+ *
+ * Subsequent handover back to the original MSC:
+ *
+ * [MSC-A] <-MAP-> MSC-B
+ * new BSS <-> MSC-T MSC-I <-> BSS
+ *
+ * and then
+ * [MSC-A]
+ * BSS <-> MSC-I
+ *
+ *
+ * Inter-BSC Handover is just a special case of inter-MSC Handover, where the same MSC-A takes on both MSC-I and MSC-T
+ * roles:
+ *
+ * [MSC-A]
+ * BSS <-> MSC-I
+ * new BSS <-> MSC-T
+ *
+ * The mechanism to take on different roles is implemented by different FSM instances. Each FSM kind has one
+ * implementation that acts locally, and another implementation to forward to a remote MSC. For example, in this
+ * scenario:
+ *
+ * [MSC-A] <-MAP-> MSC-B
+ * MSC-I <-> BSS
+ *
+ * the implementation is
+ *
+ * [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-> msc_i_REMOTE <---GSUP---> msc_a_REMOTE <-> msc_i <--BSSMAP--> [BSS]
+ *
+ * MSC-A has a locally acting msc_a FSM implementation. The msc_i FSM implementation at MSC-A receives signals from the
+ * msc_a FSM and "merely" sends the MAP instructions to MSC-B.
+ *
+ * At MSC-B, in turn, the msc_a FSM's "remote" implementation receives the MAP messages and dispatches according events
+ * to the MSC-B's local msc_i FSM instance, which is implemented to directly act towards the BSS.
+ *
+ * To implement single-MSC operation, we have the separate MSC roles' local implementations on the same MSC instance
+ * instead of forwarding.
+ *
+ *
+ * Use of MAP procedures on GSUP towards HLR:
+ *
+ * The MSC <-> VLR communication does still happen locally in the MSC-A only. In other words, there may be MAP message
+ * handling between the MSCs (in the form of GSUP), but no MAP to talk to our internal VLR.
+ *
+ * From the VLR to the HLR, though, we again use GSUP for subscriber related HLR operations such as LU requesting and
+ * retrieving auth tokens.
+ *
+ * To complete the picture, the MSC-A <--GSUP--> MSC-B forwarding happens over the same GSUP connection
+ * as the VLR <--GSUP--> HLR link:
+ *
+ * OsmoMSC
+ * MSC-A <----------E-interface--->+--GSUP--> [IPA routing] ----E--> MSC-B
+ * ^ ^ (in osmo-hlr) \
+ * | (internal API) / \--D--> HLR
+ * v /
+ * VLR <------------D-interface-/
+ */
+
+struct inter_msc_link;
+struct ran_conn;
+
+enum msc_role {
+ MSC_ROLE_A,
+ MSC_ROLE_I,
+ MSC_ROLE_T,
+
+ MSC_ROLES_COUNT
+};
+
+extern const struct value_string msc_role_names[];
+static inline const char *msc_role_name(enum msc_role role)
+{ return get_value_string(msc_role_names, role); }
+
+
+enum msc_common_events {
+ /* Explicitly start with 0 (first real event will be -1 + 1 = 0). */
+ OFFSET_MSC_COMMON_EV = -1,
+
+ MSC_REMOTE_EV_RX_GSUP,
+
+ MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,
+ MSC_EV_CALL_LEG_RTP_COMPLETE,
+ MSC_EV_CALL_LEG_RTP_RELEASED,
+ MSC_EV_CALL_LEG_TERM,
+
+ /* MNCC has told us to RTP_CREATE, but local RTP port has not yet been set up.
+ * The MSC role should respond by calling mncc_set_rtp_stream() */
+ MSC_MNCC_EV_NEED_LOCAL_RTP,
+ MSC_MNCC_EV_CALL_PROCEEDING,
+ MSC_MNCC_EV_CALL_COMPLETE,
+ MSC_MNCC_EV_CALL_ENDED,
+
+ LAST_MSC_COMMON_EV,
+};
+
+
+/* The events that the msc_a_local and msc_a_remote FSM implementations can receive,
+ * according to specifications. Not all of these are necessarily implemented. */
+enum msc_a_events {
+ OFFSET_MSC_A_EV = LAST_MSC_COMMON_EV - 1,
+
+ /* Establishing Layer 3 happens only at MSC-A (all-local MSC). To distinguish from the inter-MSC DTAP
+ * forwarding, keep this as a separate event. */
+ MSC_A_EV_FROM_I_COMPLETE_LAYER_3,
+
+ /* In inter-MSC situations, DTAP is forwarded transparently in AN-APDU IEs (formerly named
+ * BSS-APDU); see
+ * - 3GPP TS 49.008 4.2 'Transfer of DTAP and BSSMAP layer 3 messages on the * E-interface',
+ * - 3GPP TS 29.010 4.5.4 'BSSAP Messages transfer on E-Interface',
+ * - 3GPP TS 29.002 8.4.3 MAP_PROCESS_ACCESS_SIGNALLING service, 8.4.4 MAP_FORWARD_ACCESS_SIGNALLING service.
+ *
+ * MSC-B ---DTAP--> MSC-A MAP PROCESS ACCESS SIGNALLING request
+ * MSC-B <--DTAP--- MSC-A MAP FORWARD ACCESS SIGNALLING request
+ * (where neither will receive a "response")
+ *
+ * See 3GPP TS 49.008 6. 'BSSMAP messages transferred on the E-interface'.
+ * Depending on the RAN, the AN-APDU contains a BSSMAP or a RANAP encoded message.
+ * MSC-I to MSC-A:
+ * - Managing attach to one BSC+MSC:
+ * - CLASSMARK_UPDATE,
+ * - CIPHER_MODE_COMPLETE,
+ * - CIPHER_MODE_REJECT,
+ * - ASSIGNMENT_COMPLETE,
+ * - ASSIGNMENT_FAILURE,
+ * - CLEAR_REQUEST,
+ * - Handover related messages:
+ * - HANDOVER_REQUEST,
+ * - HANDOVER_PERFORMED,
+ * - HANDOVER_FAILURE,
+ * - Messages we don't need/support yet:
+ * - CHANNEL_MODIFY_REQUEST (MSC assisted codec changing handover),
+ * - SAPI_N_REJECT,
+ * - CONFUSION,
+ * - BSS_INVOKE_TRACE,
+ * - QUEUING_INDICATION,
+ * - PERFORM_LOCATION_REQUEST (*not* related to a Location Updating, but about passing the MS's geological
+ * position)
+ * - PERFORM_LOCATION_ABORT,
+ * - PERFORM_LOCATION_RESPONSE,
+ * - CONNECTION_ORIENTED_INFORMATION is listed in 48.008 3.2.1.70 as "(void)",
+ */
+ MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST,
+ MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST,
+
+ /* See 3GPP TS 29.002 8.4.2 MAP_SEND_END_SIGNAL service. */
+ MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST,
+
+ /* These BSSMAP messages are relevant for MSC-T -> MSC-A, i.e. from the transitory during inter-MSC handover:
+ *
+ * - Handover related messages:
+ * - HANDOVER_REQUEST_ACKNOWLEDGE,
+ * - HANDOVER_COMPLETE,
+ * - HANDOVER_FAILURE,
+ * - HANDOVER_DETECT,
+ * - CLEAR_REQUEST,
+ * - Messages we don't need/support yet:
+ * - CONFUSION,
+ * - QUEUING_INDICATION,
+ */
+ MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST,
+
+ /* Essentially the HO Request Ack. 3GPP TS 29.002 8.4.1 MAP_PREPARE_HANDOVER service. */
+ MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE,
+ MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE,
+
+ /* Done establishing the radio link to the MS, for Handover.
+ * See 3GPP TS 29.002 8.4.2 MAP_SEND_END_SIGNAL service.
+ * Not to be confused with the MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE that tells MSC-B to release. */
+ MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST,
+
+ /* gsm_04_08.c has successfully received a valid Complete Layer 3 message, i.e. Location Updating, CM Service
+ * Request, Paging Reponse or IMSI Detach. */
+ MSC_A_EV_COMPLETE_LAYER_3_OK,
+
+ /* Received a Classmark Update -- during GERAN ciphering, msc_a may have to wait for Classmark information to
+ * determine supported ciphers. */
+ MSC_A_EV_CLASSMARK_UPDATE,
+
+ /* LU or Process Access FSM have determined that the peer has verified its authenticity. */
+ MSC_A_EV_AUTHENTICATED,
+
+ /* A valid request is starting to be processed on the connection. Upon this event, msc_a moves from
+ * MSC_A_ST_AUTHENTICATED to MSC_A_ST_COMMUNICATING, and enters the only state without an expiry timeout. */
+ MSC_A_EV_TRANSACTION_ACCEPTED,
+
+ /* MSC originated close request, e.g. all done, failed authentication, ... */
+ MSC_A_EV_CN_CLOSE,
+
+ /* Subscriber originated close request */
+ MSC_A_EV_MO_CLOSE,
+
+ /* msc_a->use_count has reached a total of zero. */
+ MSC_A_EV_UNUSED,
+
+ MSC_A_EV_HANDOVER_REQUIRED,
+ MSC_A_EV_HANDOVER_END,
+
+ /* indicates nr of MSC_A events, keep this as last enum value */
+ LAST_MSC_A_EV
+};
+osmo_static_assert(LAST_MSC_A_EV <= 32, not_too_many_msc_a_events);
+
+extern const struct value_string msc_a_fsm_event_names[];
+
+enum msc_from_ran_events {
+ OFFSET_MSC_EV_FROM_RAN = LAST_MSC_COMMON_EV - 1,
+
+ MSC_EV_FROM_RAN_COMPLETE_LAYER_3,
+
+ /* A BSSMAP/RANAP message came in on the RAN conn. */
+ MSC_EV_FROM_RAN_UP_L2,
+
+ /* The RAN connection is gone, or busy going. */
+ MSC_EV_FROM_RAN_CONN_RELEASED,
+
+ LAST_MSC_EV_FROM_RAN
+};
+
+/* The events that the msc_i_local and msc_i_remote FSM implementations can receive.
+ * The MSC-I can also receive all msc_common_events and msc_from_ran_events. */
+enum msc_i_events {
+ OFFSET_E_MSC_I = LAST_MSC_EV_FROM_RAN - 1,
+
+ /* BSSMAP/RANAP comes in from MSC-A to be sent out on the RAN conn.
+ * Depending on the RAN, the AN-APDU contains a BSSMAP or a RANAP encoded message.
+ * Relevant BSSMAP procedures, see 3GPP TS 49.008 6. 'BSSMAP messages transferred on the E-interface':
+ * - Managing attach to one BSC+MSC:
+ * - CLASSMARK_REQUEST,
+ * - CIPHER_MODE_COMMAND,
+ * - COMMON_ID,
+ * - ASSIGNMENT_REQUEST,
+ * - Handover related messages:
+ * - HANDOVER_REQUEST_ACKNOWLEDGE,
+ * - HANDOVER_FAILURE,
+ * - Messages we don't need/support yet:
+ * - CONFUSION,
+ * - MSC_INVOKE_TRACE,
+ * - QUEUING_INDICATION,
+ * - LSA_INFORMATION,
+ * - PERFORM_LOCATION_REQUEST, (*not* related to a Location Updating, but about passing the MS's geological position)
+ * - PERFORM_LOCATION_ABORT,
+ * - PERFORM_LOCATION_RESPONSE,
+ * - CONNECTION_ORIENTED_INFORMATION is listed in 48.008 3.2.1.70 as "(void)"
+ */
+ MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST,
+
+ /* MSC-A tells us to release the RAN connection. */
+ MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE,
+
+ MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT,
+ MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR,
+
+ LAST_MSC_I_EV
+};
+osmo_static_assert(LAST_MSC_I_EV <= 32, not_too_many_msc_i_events);
+
+extern const struct value_string msc_i_fsm_event_names[];
+
+/* The events that the msc_t_local and msc_t_remote FSM implementations can receive.
+ * The MSC-T can also receive all msc_common_events and msc_from_ran_events. */
+enum msc_t_events {
+ /* sufficient would be to use LAST_MSC_EV_FROM_RAN as offset. But while we have enough numbers
+ * available, it is a good idea to keep MSC-I and MSC-T events separate, to catch errors of
+ * sending wrong event kinds. */
+ OFFSET_MSC_T_EV = LAST_MSC_I_EV - 1,
+
+ /* BSSMAP/RANAP comes in from MSC-A to be sent out on the RAN conn.
+ * Relevant BSSMAP procedures, see 3GPP TS 49.008 6. 'BSSMAP messages transferred on the E-interface':
+ * - Handover related messages:
+ * - HANDOVER_REQUEST,
+ * - CLASSMARK_UPDATE, (?)
+ * - Messages we don't need/support yet:
+ * - CONFUSION,
+ * - MSC_INVOKE_TRACE,
+ * - BSS_INVOKE_TRACE,
+ */
+ MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST,
+ MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST,
+
+ /* MSC originated close request, e.g. all done, failed handover, ... */
+ MSC_T_EV_CN_CLOSE,
+
+ /* Subscriber originated close request */
+ MSC_T_EV_MO_CLOSE,
+
+ MSC_T_EV_CLEAR_COMPLETE,
+
+ LAST_MSC_T_EV
+};
+osmo_static_assert(LAST_MSC_T_EV <= 32, not_too_many_msc_t_events);
+
+extern const struct value_string msc_t_fsm_event_names[];
+
+/* All MSC role FSM implementations share this at the start of their fi->priv struct.
+ * See struct msc_a, struct msc_i, struct msc_t in their individual headers. */
+struct msc_role_common {
+ enum msc_role role;
+
+ struct osmo_fsm_inst *fi;
+
+ /* For a local implementation, this is NULL. Otherwise, this identifies how to reach the remote
+ * MSC that this "remote" implementation forwards messages to. */
+ struct e_link *remote_to;
+
+ struct msub *msub;
+ struct gsm_network *net;
+ struct ran_infra *ran;
+};
+
+/* AccessNetworkSignalInfo as in 3GPP TS 29.002. */
+struct an_apdu {
+ /* accessNetworkProtocolId */
+ enum osmo_gsup_access_network_protocol an_proto;
+ /* signalInfo */
+ struct msgb *msg;
+ /* If this AN-APDU is sent between MSCs, additional information from the E-interface messaging, like the
+ * Handover Number, will placed/available here. Otherwise may be left NULL. */
+ const struct osmo_gsup_message *e_info;
+};
diff --git a/include/osmocom/msc/msc_t.h b/include/osmocom/msc/msc_t.h
new file mode 100644
index 000000000..39b3abca0
--- /dev/null
+++ b/include/osmocom/msc/msc_t.h
@@ -0,0 +1,60 @@
+#pragma once
+
+#include <osmocom/msc/msc_roles.h>
+
+struct ran_conn;
+struct ran_infra;
+struct ran_peer;
+struct gsm_mncc;
+struct mncc_call;
+
+#define LOG_MSC_T(MSC_T, LEVEL, FMT, ARGS ...) \
+ LOG_MSC_T_CAT(MSC_T, (MSC_T) ? (MSC_T)->c.ran->log_subsys : DMSC, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_T_CAT(MSC_T, SUBSYS, LEVEL, FMT, ARGS ...) \
+ LOGPFSMSL((MSC_T) ? (MSC_T)->c.fi : NULL, SUBSYS, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_T_CAT_SRC(MSC_T, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ARGS ...) \
+ LOGPFSMSLSRC((MSC_T) ? (MSC_T)->c.fi : NULL, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ## ARGS)
+
+struct msc_t {
+ /* struct msc_role_common must remain at start */
+ struct msc_role_common c;
+
+ struct ran_conn *ran_conn;
+
+ struct {
+ uint8_t chosen_channel;
+ uint8_t chosen_encr_alg;
+ uint8_t chosen_speech_version;
+ } geran;
+
+ struct {
+ struct an_apdu ho_request;
+ struct gsm0808_cell_id cell_id_target;
+ uint32_t callref;
+ char handover_number[16]; /* No libosmocore definition for MSISDN_MAXLEN? */
+ struct call_leg *call_leg;
+ struct mncc_call *mncc_forwarding_to_remote_cn;
+ } inter_msc;
+
+ struct osmo_gsm48_classmark classmark;
+ bool ho_success;
+ bool ho_fail_sent;
+};
+
+enum msc_t_state {
+ MSC_T_ST_PENDING_FIRST_CO_INITIAL_MSG,
+ MSC_T_ST_WAIT_LOCAL_RTP,
+ MSC_T_ST_WAIT_HO_REQUEST_ACK,
+ MSC_T_ST_WAIT_HO_COMPLETE,
+};
+
+struct msc_t *msc_t_alloc_without_ran_peer(struct msub *msub, struct ran_infra *ran);
+int msc_t_set_ran_peer(struct msc_t *msc_t, struct ran_peer *ran_peer);
+struct msc_t *msc_t_alloc(struct msub *msub, struct ran_peer *ran_peer);
+int msc_t_down_l2_co(struct msc_t *msc_t, const struct an_apdu *an_apdu, bool initial);
+void msc_t_clear(struct msc_t *msc_t);
+
+struct gsm_network *msc_t_net(const struct msc_t *msc_t);
+struct vlr_subscr *msc_t_vsub(const struct msc_t *msc_t);
+
+struct mncc_call *msc_t_check_call_to_handover_number(const struct gsm_mncc *msg);
diff --git a/include/osmocom/msc/msc_t_remote.h b/include/osmocom/msc/msc_t_remote.h
new file mode 100644
index 000000000..170505405
--- /dev/null
+++ b/include/osmocom/msc/msc_t_remote.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#define LOG_MSC_T_REMOTE(MSC_T_REMOTE, LEVEL, FMT, ARGS ...) \
+ LOG_MSC_T_REMOTE_CAT(MSC_T_REMOTE, (MSC_T_REMOTE) ? (MSC_T_REMOTE)->c.ran->log_subsys : DMSC, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_T_REMOTE_CAT(MSC_T_REMOTE, SUBSYS, LEVEL, FMT, ARGS ...) \
+ LOGPFSMSL((MSC_T_REMOTE) ? (MSC_T_REMOTE)->c.fi : NULL, SUBSYS, LEVEL, FMT, ## ARGS)
+#define LOG_MSC_T_REMOTE_CAT_SRC(MSC_T_REMOTE, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ARGS ...) \
+ LOGPFSMSLSRC((MSC_T_REMOTE) ? (MSC_T_REMOTE)->c.fi : NULL, SUBSYS, LEVEL, SRCFILE, LINE, FMT, ## ARGS)
+
+struct msub;
+struct ran_infra;
+
+struct msc_t *msc_t_remote_alloc(struct msub *msub, struct ran_infra *ran,
+ const uint8_t *remote_msc_name, size_t remote_msc_name_len);
diff --git a/include/osmocom/msc/msub.h b/include/osmocom/msc/msub.h
new file mode 100644
index 000000000..2418febcf
--- /dev/null
+++ b/include/osmocom/msc/msub.h
@@ -0,0 +1,79 @@
+#pragma once
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/msc_roles.h>
+
+struct vlr_subscr;
+struct gsm_network;
+enum gsm48_gsm_cause;
+enum complete_layer3_type;
+enum osmo_gsup_access_network_protocol;
+
+#define VSUB_USE_MSUB "active-conn"
+
+struct msub {
+ struct llist_head entry;
+ struct osmo_fsm_inst *fi;
+
+ struct vlr_subscr *vsub;
+
+ /* role = {MSC_ROLE_A, MSC_ROLE_I, MSC_ROLE_T} */
+ struct osmo_fsm_inst *role[MSC_ROLES_COUNT];
+ struct gsm_network *net;
+};
+
+extern struct llist_head msub_list;
+
+#define LOG_MSUB_CAT_SRC(msub, cat, level, file, line, fmt, args ...) \
+ LOGPSRC(cat, level, file, line, "(%s) " fmt, msub_name(msub), ## args)
+
+#define LOG_MSUB_CAT(msub, cat, level, fmt, args ...) \
+ LOGP(cat, level, "msub(%s) " fmt, msub_name(msub), ## args)
+
+#define LOG_MSUB(msub, level, fmt, args ...) \
+ LOG_MSUB_CAT(msub, DMSC, level, fmt, ## args)
+
+struct msub *msub_alloc(struct gsm_network *net);
+
+#define msub_role_alloc(MSUB, ROLE, FSM, ROLE_STRUCT, RAN) \
+ (ROLE_STRUCT*)_msub_role_alloc(MSUB, ROLE, FSM, sizeof(ROLE_STRUCT), #ROLE_STRUCT ":" #FSM, RAN)
+struct msc_role_common *_msub_role_alloc(struct msub *msub, enum msc_role role, struct osmo_fsm *role_fsm,
+ size_t struct_size, const char *struct_name, struct ran_infra *ran);
+
+const char *msub_name(const struct msub *msub);
+
+struct msub *msub_for_vsub(const struct vlr_subscr *for_vsub);
+
+void msub_set_role(struct msub *msub, struct osmo_fsm_inst *msc_role);
+void msub_remove_role(struct msub *msub, struct osmo_fsm_inst *fi);
+
+struct msc_a *msub_msc_a(const struct msub *msub);
+struct msc_i *msub_msc_i(const struct msub *msub);
+struct msc_t *msub_msc_t(const struct msub *msub);
+struct ran_conn *msub_ran_conn(const struct msub *msub);
+const char *msub_ran_conn_name(const struct msub *msub);
+
+int msub_set_vsub(struct msub *msub, struct vlr_subscr *vsub);
+struct vlr_subscr *msub_vsub(const struct msub *msub);
+struct gsm_network *msub_net(const struct msub *msub);
+
+int msub_role_to_role_event(struct msub *msub, enum msc_role from_role, enum msc_role to_role);
+#define msub_role_dispatch(MSUB, TO_ROLE, TO_ROLE_EVENT, AN_APDU) \
+ _msub_role_dispatch(MSUB, TO_ROLE, TO_ROLE_EVENT, AN_APDU, __FILE__, __LINE__)
+int _msub_role_dispatch(struct msub *msub, enum msc_role to_role, uint32_t to_role_event, const struct an_apdu *an_apdu,
+ const char *file, int line);
+int msub_tx_an_apdu(struct msub *msub, enum msc_role from_role, enum msc_role to_role, struct an_apdu *an_apdu);
+
+void msub_update_id_from_mi(struct msub *msub, const uint8_t mi[], uint8_t mi_len);
+void msub_update_id(struct msub *msub);
+void msub_update_id_for_vsub(struct vlr_subscr *for_vsub);
+
+void msub_pending_cm_service_req_add(struct msub *msub, enum osmo_cm_service_type type);
+unsigned int msub_pending_cm_service_req_count(struct msub *msub, enum osmo_cm_service_type type);
+void msub_pending_cm_service_req_del(struct msub *msub, enum osmo_cm_service_type type);
+
+void msc_role_forget_conn(struct osmo_fsm_inst *role, struct ran_conn *conn);
+
+struct msgb *msc_role_ran_encode(struct osmo_fsm_inst *role, const struct ran_msg *ran_msg);
+int msc_role_ran_decode(struct osmo_fsm_inst *fi, const struct an_apdu *an_apdu,
+ ran_decode_cb_t decode_cb, void *decode_cb_data);
diff --git a/include/osmocom/msc/neighbor_ident.h b/include/osmocom/msc/neighbor_ident.h
new file mode 100644
index 000000000..8cd74ab57
--- /dev/null
+++ b/include/osmocom/msc/neighbor_ident.h
@@ -0,0 +1,68 @@
+/* Manage identity of neighboring BSS cells for inter-BSC handover */
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/gsm/gsm0808.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+struct vty;
+struct gsm_network;
+
+enum msc_neighbor_type {
+ MSC_NEIGHBOR_TYPE_NONE = 0,
+ MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER,
+ MSC_NEIGHBOR_TYPE_REMOTE_MSC,
+};
+
+struct msc_ipa_name {
+ char buf[64];
+ size_t len;
+};
+
+int msc_ipa_name_from_str(struct msc_ipa_name *min, const char *name);
+int msc_ipa_name_cmp(const struct msc_ipa_name *a, const struct msc_ipa_name *b);
+
+struct neighbor_ident_addr {
+ enum osmo_rat_type ran_type;
+ enum msc_neighbor_type type;
+ union {
+ char local_ran_peer_pc_str[23];
+ struct msc_ipa_name remote_msc_ipa_name;
+ };
+};
+
+struct neighbor_ident_entry {
+ struct llist_head entry;
+
+ struct neighbor_ident_addr addr;
+
+ /* A list of struct cell_ids_entry. A gsm0808_cell_id_list2 would in principle suffice, but to support
+ * storing more than 127 cell ids and to allow storing IDs of differing types, have a list of any number of
+ * gsm0808_cell_id_list2. */
+ struct llist_head cell_ids;
+};
+
+void neighbor_ident_init(struct gsm_network *net);
+const char *neighbor_ident_addr_name(const struct neighbor_ident_addr *nia);
+
+const struct neighbor_ident_entry *neighbor_ident_add(struct llist_head *ni_list,
+ const struct neighbor_ident_addr *nia,
+ const struct gsm0808_cell_id *cid);
+
+const struct neighbor_ident_entry *neighbor_ident_find_by_cell(const struct llist_head *ni_list,
+ enum osmo_rat_type ran_type,
+ const struct gsm0808_cell_id *cell_id);
+
+const struct neighbor_ident_entry *neighbor_ident_find_by_addr(const struct llist_head *ni_list,
+ const struct neighbor_ident_addr *nia);
+
+void neighbor_ident_del(const struct neighbor_ident_entry *nie);
+
+void neighbor_ident_clear(struct llist_head *ni_list);
+
+void neighbor_ident_vty_init(struct gsm_network *net);
+void neighbor_ident_vty_write(struct vty *vty);
+
diff --git a/include/osmocom/msc/paging.h b/include/osmocom/msc/paging.h
new file mode 100644
index 000000000..4de679df7
--- /dev/null
+++ b/include/osmocom/msc/paging.h
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <osmocom/core/linuxlist.h>
+
+struct msc_a;
+struct vlr_subscr;
+struct gsm_trans;
+
+/* Modeled after the RANAP PagingCause; translates to enum sgsap_service_ind and BSSMAP Channel Needed (3GPP TS 48.008
+ * 3.2.2.36) by collapsing e.g. all call related paging causes to SGSAP_SERV_IND_CS_CALL, etc. */
+enum paging_cause {
+ PAGING_CAUSE_CALL_CONVERSATIONAL = 0,
+ PAGING_CAUSE_CALL_STREAMING,
+ PAGING_CAUSE_CALL_INTERACTIVE,
+ PAGING_CAUSE_CALL_BACKGROUND,
+ PAGING_CAUSE_SIGNALLING_LOW_PRIO,
+ PAGING_CAUSE_SIGNALLING_HIGH_PRIO,
+ PAGING_CAUSE_UNSPECIFIED,
+};
+
+extern const struct value_string paging_cause_names[];
+static inline const char *paging_cause_name(enum paging_cause val)
+{ return get_value_string(paging_cause_names, val); }
+
+/* A successful Paging will pass a valid msc_a, an expired paging will pass msc_a == NULL. */
+typedef void (* paging_cb_t )(struct msc_a *msc_a, struct gsm_trans *trans);
+
+struct paging_request {
+ struct llist_head entry;
+
+ /* human readable label to be able to log pending request kinds */
+ const char *label;
+ enum paging_cause cause;
+
+ /* the callback data */
+ paging_cb_t paging_cb;
+ struct gsm_trans *trans;
+};
+
+struct paging_request *paging_request_start(struct vlr_subscr *vsub, enum paging_cause cause,
+ paging_cb_t paging_cb, struct gsm_trans *trans,
+ const char *label);
+void paging_request_remove(struct paging_request *pr);
+
+void paging_response(struct msc_a *msc_a);
+void paging_expired(struct vlr_subscr *vsub);
diff --git a/include/osmocom/msc/ran_conn.h b/include/osmocom/msc/ran_conn.h
index 0b99e252c..7aa50df07 100644
--- a/include/osmocom/msc/ran_conn.h
+++ b/include/osmocom/msc/ran_conn.h
@@ -3,238 +3,31 @@
#include <stdint.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/sigtran/sccp_sap.h>
-#include <osmocom/mgcp_client/mgcp_client.h>
-#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/core/linuxlist.h>
-#define LOG_RAN_CONN(conn, level, fmt, args ...) \
- LOG_RAN_CONN_CAT(conn, (conn) ? (conn)->log_subsys : DMSC, level, fmt, ## args)
-
-#define LOG_RAN_CONN_CAT(conn, subsys, level, fmt, args ...) \
- LOGPFSMSL((conn)? (conn)->fi : NULL, subsys, level, fmt, ## args)
-
-#define VSUB_USE_CONN "conn"
-
-enum ran_conn_fsm_event {
- /* Accepted the initial Complete Layer 3 (starting to evaluate Authentication and Ciphering) */
- RAN_CONN_E_COMPLETE_LAYER_3,
- /* Received Classmark Update, typically neede for Ciphering Mode Command */
- RAN_CONN_E_CLASSMARK_UPDATE,
- /* LU or Process Access FSM has determined that this conn is good */
- RAN_CONN_E_ACCEPTED,
- /* received first reply from MS in "real" CC, SMS, USSD communication */
- RAN_CONN_E_COMMUNICATING,
- /* Some async action has completed, check again whether all is done */
- RAN_CONN_E_RELEASE_WHEN_UNUSED,
- /* MS/BTS/BSC originated close request */
- RAN_CONN_E_MO_CLOSE,
- /* MSC originated close request, e.g. failed authentication */
- RAN_CONN_E_CN_CLOSE,
- /* The usage count for the conn has reached zero */
- RAN_CONN_E_UNUSED,
-};
-
-enum ran_conn_fsm_state {
- RAN_CONN_S_NEW,
- RAN_CONN_S_AUTH_CIPH,
- RAN_CONN_S_WAIT_CLASSMARK_UPDATE,
- RAN_CONN_S_ACCEPTED,
- RAN_CONN_S_COMMUNICATING,
- RAN_CONN_S_RELEASING,
- RAN_CONN_S_RELEASED,
-};
-
-enum integrity_protection_state {
- INTEGRITY_PROTECTION_NONE = 0,
- INTEGRITY_PROTECTION_IK = 1,
- INTEGRITY_PROTECTION_IK_CK = 2,
-};
-
-enum complete_layer3_type {
- COMPLETE_LAYER3_NONE,
- COMPLETE_LAYER3_LU,
- COMPLETE_LAYER3_CM_SERVICE_REQ,
- COMPLETE_LAYER3_PAGING_RESP,
-};
-
-#define MAX_A5_KEY_LEN (128/8)
-
-struct geran_encr {
- uint8_t alg_id;
- uint8_t key_len;
- uint8_t key[MAX_A5_KEY_LEN];
-};
-
-extern const struct value_string complete_layer3_type_names[];
-static inline const char *complete_layer3_type_name(enum complete_layer3_type val)
-{
- return get_value_string(complete_layer3_type_names, val);
-}
-
-struct gsm_classmark {
- bool classmark1_set;
- struct gsm48_classmark1 classmark1;
- uint8_t classmark2_len;
- uint8_t classmark2[3];
- uint8_t classmark3_len;
- uint8_t classmark3[14]; /* if cm3 gets extended by spec, it will be truncated */
-};
+struct ran_peer;
+struct osmo_fsm_inst;
+struct msgb;
/* active radio connection of a mobile subscriber */
struct ran_conn {
- /* global linked list of ran_conn instances */
+ /* Entry in sccp_ran_inst->ran_conns */
struct llist_head entry;
- /* FSM instance to control the RAN connection's permissions and lifetime. */
- struct osmo_fsm_inst *fi;
- enum complete_layer3_type complete_layer3_type;
-
- /* usage count. If this drops to zero, we start the release
- * towards A/Iu */
- uint32_t use_count;
- uint32_t use_tokens;
-
- /* The MS has opened the conn with a CM Service Request, and we shall
- * keep it open for an actual request (or until timeout). */
- bool received_cm_service_request;
-
- /* libmsc/libvlr subscriber information (if available) */
- struct vlr_subscr *vsub;
-
- /* LU expiration handling */
- uint8_t expire_timer_stopped;
-
- /* Are we part of a special "silent" call */
- int silent_call;
+ struct ran_peer *ran_peer;
+ uint32_t sccp_conn_id;
- /* back pointers */
- struct gsm_network *network;
+ /* MSC role that this RAN connection belongs to. This will be either an msc_i (currently active
+ * connection) or an msc_t (transitory new connection during Handover). */
+ struct osmo_fsm_inst *msc_role;
- /* connected via 2G or 3G? */
- enum osmo_rat_type via_ran;
- /* whether to log on DBSSAP, DIUCS, ... */
- int log_subsys;
-
- uint16_t lac;
- struct geran_encr geran_encr;
-
- /* "Temporary" storage for the case the VLR asked for Cipher Mode Command, but the MSC still
- * wants to request a Classmark Update first. */
- struct {
- bool umts_aka;
- bool retrieve_imeisv;
- } geran_set_cipher_mode;
-
- /* N(SD) expected in the received frame, per flow (TS 24.007 11.2.3.2.3.2.2) */
- uint8_t n_sd_next[4];
-
- struct {
- struct mgcp_ctx *mgcp_ctx;
- unsigned int mgcp_rtp_endpoint;
-
- uint16_t local_port_ran;
- char local_addr_ran[INET_ADDRSTRLEN];
- uint16_t remote_port_ran;
- char remote_addr_ran[INET_ADDRSTRLEN];
- enum mgcp_codecs codec_ran;
-
- uint16_t local_port_cn;
- char local_addr_cn[INET_ADDRSTRLEN];
- uint16_t remote_port_cn;
- char remote_addr_cn[INET_ADDRSTRLEN];
- enum mgcp_codecs codec_cn;
- } rtp;
-
- /* which Iu-CS connection, if any. */
- struct {
- struct ranap_ue_conn_ctx *ue_ctx;
- uint8_t rab_id;
- bool waiting_for_release_complete;
- } iu;
-
- struct {
- /* A pointer to the SCCP user that handles
- * the SCCP connections for this subscriber
- * connection */
- struct osmo_sccp_user *scu;
-
- /* The address of the BSC that is associated
- * with this RAN connection */
- struct osmo_sccp_addr bsc_addr;
-
- /* The connection identifier that is used
- * to reference the SCCP connection that is
- * associated with this RAN connection */
- uint32_t conn_id;
-
- bool waiting_for_clear_complete;
- } a;
-
- /* Temporary storage for Classmark Information for times when a connection has no VLR subscriber
- * associated yet. It will get copied to the VLR subscriber upon msc_vlr_subscr_assoc(). */
- struct gsm_classmark temporary_classmark;
-};
-
-struct ran_conn *ran_conn_alloc(struct gsm_network *network, enum osmo_rat_type via_ran, uint16_t lac);
-
-void ran_conn_update_id_from_mi(struct ran_conn *conn, const uint8_t *mi, uint8_t mi_len);
-void ran_conn_update_id(struct ran_conn *conn);
-const char *ran_conn_get_conn_id(struct ran_conn *conn);
-void ran_conn_update_id_for_vsub(struct vlr_subscr *for_vsub);
-
-void ran_conn_complete_layer_3(struct ran_conn *conn);
-
-void ran_conn_sapi_n_reject(struct ran_conn *conn, int dlci);
-int ran_conn_clear_request(struct ran_conn *conn, uint32_t cause);
-void ran_conn_compl_l3(struct ran_conn *conn,
- struct msgb *msg, uint16_t chosen_channel);
-void ran_conn_dtap(struct ran_conn *conn, struct msgb *msg);
-int ran_conn_classmark_request_then_cipher_mode_cmd(struct ran_conn *conn, bool umts_aka,
- bool retrieve_imeisv);
-int ran_conn_geran_set_cipher_mode(struct ran_conn *conn, bool umts_aka, bool retrieve_imeisv);
-void ran_conn_cipher_mode_compl(struct ran_conn *conn, struct msgb *msg, uint8_t alg_id);
-void ran_conn_rx_sec_mode_compl(struct ran_conn *conn);
-void ran_conn_classmark_chg(struct ran_conn *conn,
- const uint8_t *cm2, uint8_t cm2_len,
- const uint8_t *cm3, uint8_t cm3_len);
-void ran_conn_assign_fail(struct ran_conn *conn, uint8_t cause, uint8_t *rr_cause);
-
-void ran_conn_init(void);
-bool ran_conn_is_accepted(const struct ran_conn *conn);
-bool ran_conn_is_establishing_auth_ciph(const struct ran_conn *conn);
-void ran_conn_communicating(struct ran_conn *conn);
-void ran_conn_close(struct ran_conn *conn, uint32_t cause);
-void ran_conn_mo_close(struct ran_conn *conn, uint32_t cause);
-bool ran_conn_in_release(struct ran_conn *conn);
-
-void ran_conn_rx_bssmap_clear_complete(struct ran_conn *conn);
-void ran_conn_rx_iu_release_complete(struct ran_conn *conn);
-void ran_conn_sgs_release_sent(struct ran_conn *conn);
-
-enum ran_conn_use {
- RAN_CONN_USE_UNTRACKED = -1,
- RAN_CONN_USE_COMPL_L3,
- RAN_CONN_USE_DTAP,
- RAN_CONN_USE_AUTH_CIPH,
- RAN_CONN_USE_CM_SERVICE,
- RAN_CONN_USE_TRANS_CC,
- RAN_CONN_USE_TRANS_SMS,
- RAN_CONN_USE_TRANS_NC_SS,
- RAN_CONN_USE_SILENT_CALL,
- RAN_CONN_USE_RELEASE,
+ bool closing;
};
-extern const struct value_string ran_conn_use_names[];
-static inline const char *ran_conn_use_name(enum ran_conn_use val)
-{ return get_value_string(ran_conn_use_names, val); }
-
-#define ran_conn_get(conn, balance_token) \
- _ran_conn_get(conn, balance_token, __FILE__, __LINE__)
-#define ran_conn_put(conn, balance_token) \
- _ran_conn_put(conn, balance_token, __FILE__, __LINE__)
-struct ran_conn * _ran_conn_get(struct ran_conn *conn, enum ran_conn_use balance_token,
- const char *file, int line);
-void _ran_conn_put(struct ran_conn *conn, enum ran_conn_use balance_token,
- const char *file, int line);
-bool ran_conn_used_by(struct ran_conn *conn, enum ran_conn_use token);
+struct ran_conn *ran_conn_create_incoming(struct ran_peer *ran_peer, uint32_t sccp_conn_id);
+struct ran_conn *ran_conn_create_outgoing(struct ran_peer *ran_peer);
+const char *ran_conn_name(struct ran_conn *conn);
+int ran_conn_down_l2_co(struct ran_conn *conn, struct msgb *l3, bool initial);
+void ran_conn_msc_role_gone(struct ran_conn *conn, struct osmo_fsm_inst *msc_role);
+void ran_conn_close(struct ran_conn *conn);
+void ran_conn_discard(struct ran_conn *conn);
diff --git a/include/osmocom/msc/ran_infra.h b/include/osmocom/msc/ran_infra.h
new file mode 100644
index 000000000..38c424f09
--- /dev/null
+++ b/include/osmocom/msc/ran_infra.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/gsm/gsup.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/ran_msg.h>
+
+struct osmo_tdef;
+
+extern struct osmo_tdef msc_tdefs_geran[];
+extern struct osmo_tdef msc_tdefs_utran[];
+extern struct osmo_tdef msc_tdefs_sgs[];
+
+extern const struct value_string an_proto_names[];
+static inline const char *an_proto_name(enum osmo_gsup_access_network_protocol val)
+{ return get_value_string(an_proto_names, val); }
+
+struct ran_infra {
+ const enum osmo_rat_type type;
+ const enum osmo_gsup_access_network_protocol an_proto;
+ uint32_t ssn;
+ const int log_subsys;
+ struct osmo_tdef * const tdefs;
+ const struct sccp_ran_ops sccp_ran_ops;
+ const ran_dec_l2_t ran_dec_l2;
+ const ran_encode_t ran_encode;
+ struct sccp_ran_inst *sri;
+};
+
+extern struct ran_infra msc_ran_infra[];
+extern const int msc_ran_infra_len;
diff --git a/include/osmocom/msc/ran_msg.h b/include/osmocom/msc/ran_msg.h
new file mode 100644
index 000000000..4d0485d43
--- /dev/null
+++ b/include/osmocom/msc/ran_msg.h
@@ -0,0 +1,281 @@
+/* API to forward upcoming NAS events, e.g. from BSSAP and RANAP, to be handled by MSC-A or MSC-I. */
+/*
+ * (C) 2019 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ *
+ * Author: Neels Hofmeyr <neels@hofmeyr.de>
+ *
+ * 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/>.
+ */
+#pragma once
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/fsm.h>
+#include <osmocom/core/sockaddr_str.h>
+#include <osmocom/gsm/protocol/gsm_08_08.h>
+#include <osmocom/mgcp_client/mgcp_client.h>
+
+#include <osmocom/msc/msc_common.h>
+
+struct msgb;
+struct osmo_fsm_inst;
+
+#define LOG_RAN_DEC(NAS_DEC, subsys, level, fmt, args...) \
+ LOGPFSMSL((NAS_DEC)? (NAS_DEC)->caller_fi : NULL, subsys, level, "RAN decode: " fmt, ## args)
+
+#define LOG_RAN_ENC(FI, subsys, level, fmt, args...) \
+ LOGPFSMSL(FI, subsys, level, "RAN encode: " fmt, ## args)
+
+/* These message types are named after the BSSAP procedures in nas_a.h; most are also used for RANAP procedures of
+ * similar meaning in nas_iu.h. */
+enum ran_msg_type {
+ RAN_MSG_NONE = 0,
+ RAN_MSG_COMPL_L3,
+ RAN_MSG_DTAP,
+ RAN_MSG_CLEAR_COMMAND,
+ RAN_MSG_CLEAR_REQUEST,
+ RAN_MSG_CLEAR_COMPLETE,
+ RAN_MSG_CLASSMARK_REQUEST,
+ RAN_MSG_CLASSMARK_UPDATE,
+ RAN_MSG_CIPHER_MODE_COMMAND,
+ RAN_MSG_CIPHER_MODE_COMPLETE,
+ RAN_MSG_CIPHER_MODE_REJECT,
+ RAN_MSG_COMMON_ID,
+ RAN_MSG_ASSIGNMENT_COMMAND,
+ RAN_MSG_ASSIGNMENT_COMPLETE,
+ RAN_MSG_ASSIGNMENT_FAILURE,
+ RAN_MSG_SAPI_N_REJECT,
+ RAN_MSG_LCLS_STATUS,
+ RAN_MSG_LCLS_BREAK_REQ,
+ RAN_MSG_HANDOVER_COMMAND,
+ RAN_MSG_HANDOVER_PERFORMED,
+ RAN_MSG_HANDOVER_REQUIRED,
+ RAN_MSG_HANDOVER_REQUIRED_REJECT,
+ RAN_MSG_HANDOVER_REQUEST,
+ RAN_MSG_HANDOVER_REQUEST_ACK,
+ RAN_MSG_HANDOVER_DETECT,
+ RAN_MSG_HANDOVER_SUCCEEDED,
+ RAN_MSG_HANDOVER_COMPLETE,
+ RAN_MSG_HANDOVER_FAILURE,
+};
+
+extern const struct value_string ran_msg_type_names[];
+static inline const char *ran_msg_type_name(enum ran_msg_type val)
+{ return get_value_string(ran_msg_type_names, val); }
+
+struct ran_clear_command {
+ enum gsm0808_cause gsm0808_cause;
+ bool csfb_ind;
+};
+
+struct ran_assignment_command {
+ const struct osmo_sockaddr_str *cn_rtp;
+ const struct gsm0808_channel_type *channel_type;
+ enum nsap_addr_enc rab_assign_addr_enc;
+};
+
+struct ran_cipher_mode_command {
+ const struct osmo_auth_vector *vec;
+ const struct osmo_gsm48_classmark *classmark;
+ struct {
+ bool umts_aka;
+ bool retrieve_imeisv;
+ uint8_t a5_encryption_mask;
+
+ /* out-argument to return the key to the caller, pass NULL if not needed. */
+ struct geran_encr *chosen_key;
+ } geran;
+};
+
+struct ran_handover_request {
+ const char *imsi;
+ const struct osmo_gsm48_classmark *classmark;
+ /* A Handover Request on GERAN-A sends separate IEs for
+ * - permitted algorithms, here composed from the a5_encryption_mask,
+ * - the key, here taken from chosen_encryption->key iff chosen_encryption is present,
+ * - the actually chosen algorithm ("Serving"), here taken from chosen_encryption->alg_id.
+ */
+ struct {
+ struct gsm0808_channel_type *channel_type;
+ uint8_t a5_encryption_mask;
+ /*! chosen_encryption->alg_id is in encoded format:
+ * alg_id == 1 means A5/0 i.e. no encryption, alg_id == 4 means A5/3.
+ * alg_id == 0 means no such IE was present. */
+ struct geran_encr *chosen_encryption;
+ } geran;
+ struct gsm0808_cell_id cell_id_serving;
+ struct gsm0808_cell_id cell_id_target;
+
+ enum gsm0808_cause bssap_cause;
+
+ bool current_channel_type_1_present;
+ uint8_t current_channel_type_1;
+
+ enum gsm0808_permitted_speech speech_version_used;
+
+ const uint8_t *old_bss_to_new_bss_info_raw;
+ uint8_t old_bss_to_new_bss_info_raw_len;
+
+ struct osmo_sockaddr_str *rtp_ran_local;
+
+ struct gsm0808_speech_codec_list *codec_list_msc_preferred;
+
+ bool call_id_present;
+ uint32_t call_id;
+
+ const uint8_t *global_call_reference;
+ uint8_t global_call_reference_len;
+};
+
+struct ran_handover_request_ack {
+ const uint8_t *rr_ho_command;
+ uint8_t rr_ho_command_len;
+ bool chosen_channel_present;
+ uint8_t chosen_channel;
+ /*! chosen_encr_alg is in encoded format:
+ * chosen_encr_alg == 1 means A5/0 i.e. no encryption, chosen_encr_alg == 4 means A5/3.
+ * chosen_encr_alg == 0 means no such IE was present. */
+ uint8_t chosen_encr_alg;
+
+ /* chosen_speech_version == 0 means "not present" */
+ enum gsm0808_permitted_speech chosen_speech_version;
+
+ struct osmo_sockaddr_str remote_rtp;
+ bool codec_present;
+ enum mgcp_codecs codec;
+};
+
+struct ran_handover_command {
+ const uint8_t *rr_ho_command;
+ uint8_t rr_ho_command_len;
+
+ const uint8_t *new_bss_to_old_bss_info_raw;
+ uint8_t new_bss_to_old_bss_info_raw_len;
+};
+
+struct ran_handover_required {
+ uint16_t cause;
+ struct gsm0808_cell_id_list2 cil;
+
+ bool current_channel_type_1_present;
+ /*! See gsm0808_chosen_channel() */
+ uint8_t current_channel_type_1;
+
+ enum gsm0808_permitted_speech speech_version_used;
+
+ uint8_t *old_bss_to_new_bss_info_raw;
+ size_t old_bss_to_new_bss_info_raw_len;
+};
+
+struct ran_msg {
+ enum ran_msg_type msg_type;
+
+ /* Since different RAN implementations feed these messages, they should place here an implementation specific
+ * string constant to name the actual message (e.g. "BSSMAP Assignment Complete" vs. "RANAP RAB Assignment
+ * Response") */
+ const char *msg_name;
+
+ union {
+ struct {
+ const struct gsm0808_cell_id *cell_id;
+ struct msgb *msg;
+ } compl_l3;
+ struct msgb *dtap;
+ struct {
+ enum gsm0808_cause bssap_cause;
+#define RAN_MSG_BSSAP_CAUSE_UNSET 0xffff
+ } clear_request;
+ struct ran_clear_command clear_command;
+ struct {
+ const struct osmo_gsm48_classmark *classmark;
+ } classmark_update;
+ struct ran_cipher_mode_command cipher_mode_command;
+ struct {
+ /*! alg_id is in encoded format:
+ * alg_id == 1 means A5/0 i.e. no encryption, alg_id == 4 means A5/3.
+ * alg_id == 0 means no such IE was present. */
+ uint8_t alg_id;
+ const char *imeisv;
+ } cipher_mode_complete;
+ struct {
+ enum gsm0808_cause bssap_cause;
+ } cipher_mode_reject;
+ struct {
+ const char *imsi;
+ } common_id;
+ struct {
+ enum gsm48_reject_value cause;
+ } cm_service_reject;
+ struct ran_assignment_command assignment_command;
+ struct {
+ struct osmo_sockaddr_str remote_rtp;
+ bool codec_present;
+ enum mgcp_codecs codec;
+ } assignment_complete;
+ struct {
+ enum gsm0808_cause bssap_cause;
+ uint8_t rr_cause;
+ const struct gsm0808_speech_codec_list *scl_bss_supported;
+ } assignment_failure;
+ struct {
+ enum gsm0808_cause bssap_cause;
+ uint8_t dlci;
+ } sapi_n_reject;
+ struct {
+ enum gsm0808_lcls_status status;
+ } lcls_status;
+ struct {
+ int todo;
+ } lcls_break_req;
+ struct ran_handover_required handover_required;
+ struct gsm0808_handover_required_reject handover_required_reject;
+ struct ran_handover_command handover_command;
+ struct {
+ enum gsm0808_cause cause;
+ } handover_failure;
+ struct ran_handover_request handover_request;
+ struct ran_handover_request_ack handover_request_ack;
+ };
+};
+
+/* MSC-A/I/T roles implement this to receive decoded NAS messages, upon feeding an L2 msgb to a ran_dec_l2_t matching the
+ * RAN type implementation. */
+typedef int (* ran_decode_cb_t )(struct osmo_fsm_inst *caller_fi, void *caller_data, const struct ran_msg *msg);
+
+struct ran_dec {
+ /* caller provided osmo_fsm_inst, used both for logging from within decoding of NAS events, as well as caller's
+ * context in decode_cb(). */
+ struct osmo_fsm_inst *caller_fi;
+ void *caller_data;
+
+ /* Callback receives the decoded NAS messages */
+ ran_decode_cb_t decode_cb;
+};
+
+/* NAS decoders (BSSAP/RANAP) implement this to turn a msgb into a struct ran_msg.
+ * An implementation typically calls ran_decoded() when done decoding.
+ * NAS decoding is modeled with a callback instead of a plain decoding, because some L2 messages by design contain more
+ * than one NAS event, e.g. Ciphering Mode Complete may include another L3 message for Identity Response, and LCLS
+ * Information messages can contain Status and Break Req events. */
+typedef int (* ran_dec_l2_t )(struct ran_dec *ran_dec, struct msgb *l2);
+
+int ran_decoded(struct ran_dec *ran_dec, struct ran_msg *msg);
+
+/* An MSC-A/I/T role that receives NAS events containing DTAP buffers may use this to detect DTAP duplicates as in TS
+ * 24.007 11.2.3.2 Message Type Octet / Duplicate Detection */
+bool ran_dec_dtap_undup_is_duplicate(struct osmo_fsm_inst *log_fi, uint8_t *n_sd_next, bool is_r99, struct msgb *l3);
+
+/* Implemented by individual RAN implementations, see ran_a_encode() and ran_iu_encode(). */
+typedef struct msgb *(* ran_encode_t )(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg);
diff --git a/include/osmocom/msc/ran_msg_a.h b/include/osmocom/msc/ran_msg_a.h
new file mode 100644
index 000000000..3ba081de2
--- /dev/null
+++ b/include/osmocom/msc/ran_msg_a.h
@@ -0,0 +1,45 @@
+/* Abstraction of BSSAP decoding into NAS events, to be handled by MSC-A or MSC-I, and encoding of BSSAP messages
+ * towards the RAN. */
+/*
+ * (C) 2019 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ *
+ * Author: Neels Hofmeyr <neels@hofmeyr.de>
+ *
+ * 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/>.
+ */
+#pragma once
+
+#include <stdint.h>
+
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/paging.h>
+
+struct msgb;
+struct sccp_ran_inst;
+struct msub;
+struct gsm_mncc_bearer_cap;
+
+int ran_a_decode_l2(struct ran_dec *ran_a, struct msgb *bssap);
+struct msgb *ran_a_encode(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg);
+
+enum reset_msg_type bssmap_is_reset_msg(const struct sccp_ran_inst *sri, const struct msgb *l2);
+struct msgb *bssmap_make_reset_msg(const struct sccp_ran_inst *sri, enum reset_msg_type type);
+struct msgb *bssmap_make_paging_msg(const struct sccp_ran_inst *sri, const struct gsm0808_cell_id *page_cell_id,
+ const char *imsi, uint32_t tmsi, enum paging_cause cause);
+const char *bssmap_msg_name(const struct sccp_ran_inst *sri, const struct msgb *l2);
+
+enum mgcp_codecs ran_a_mgcp_codec_from_sc(const struct gsm0808_speech_codec *sc);
+int ran_a_bearer_cap_to_channel_type(struct gsm0808_channel_type *ct, const struct gsm_mncc_bearer_cap *bc);
diff --git a/include/osmocom/msc/ran_msg_iu.h b/include/osmocom/msc/ran_msg_iu.h
new file mode 100644
index 000000000..316a91cdb
--- /dev/null
+++ b/include/osmocom/msc/ran_msg_iu.h
@@ -0,0 +1,35 @@
+/* Abstraction of RANAP decoding into NAS events, to be handled by MSC-A or MSC-I, and encoding of RANAP messages
+ * towards the RAN. */
+/*
+ * (C) 2019 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ *
+ * Author: Neels Hofmeyr <neels@hofmeyr.de>
+ *
+ * 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/>.
+ */
+#pragma once
+
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/paging.h>
+
+int ran_iu_decode_l2(struct ran_dec *ran_dec_iu, struct msgb *ranap);
+struct msgb *ran_iu_encode(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg);
+
+enum reset_msg_type ranap_is_reset_msg(const struct sccp_ran_inst *sri, const struct msgb *l2);
+struct msgb *ranap_make_reset_msg(const struct sccp_ran_inst *sri, enum reset_msg_type type);
+struct msgb *ranap_make_paging_msg(const struct sccp_ran_inst *sri, const struct gsm0808_cell_id *page_cell_id,
+ const char *imsi, uint32_t tmsi, enum paging_cause cause);
+const char *ranap_msg_name(const struct sccp_ran_inst *sri, const struct msgb *l2);
diff --git a/include/osmocom/msc/ran_peer.h b/include/osmocom/msc/ran_peer.h
new file mode 100644
index 000000000..e3ff59d9c
--- /dev/null
+++ b/include/osmocom/msc/ran_peer.h
@@ -0,0 +1,106 @@
+#pragma once
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/gsm/gsm0808.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/paging.h>
+
+struct vlr_subscr;
+struct ran_conn;
+struct neighbor_ident_entry;
+
+#define LOG_RAN_PEER_CAT(RAN_PEER, subsys, loglevel, fmt, args ...) \
+ LOGPFSMSL((RAN_PEER)? (RAN_PEER)->fi : NULL, subsys, loglevel, fmt, ## args)
+
+#define LOG_RAN_PEER(RAN_PEER, loglevel, fmt, args ...) \
+ LOG_RAN_PEER_CAT(RAN_PEER, \
+ (RAN_PEER) && (RAN_PEER)->sri? (RAN_PEER)->sri->ran->log_subsys : DMSC, \
+ loglevel, fmt, ## args)
+
+/* A BSC or RNC with activity on a local SCCP connection.
+ * Here we collect those BSC and RNC peers that are actually connected to the MSC and manage their connection Reset
+ * status.
+ *
+ * Before we had explicit neighbor configuration for inter-BSC and inter-MSC handover, the only way to know which peer
+ * address corresponds to which LAC (for paging a specific LAC) was to collect the LAC from L3 messages coming in on a
+ * subscriber connection. We still continue that practice to support unconfigured operation.
+ *
+ * The neighbor list config extends this by possibly naming LAC and CI that have not seen explicit activity yet, and
+ * allows us to page towards the correct peer's SCCP address from the start.
+ *
+ * So, for paging, the idea is to look for a LAC that is recorded here, and if not found, query the neighbor
+ * configuration for a peer's SCCP address matching that LAC. If found, look for active connections on that SCCP address
+ * here.
+ *
+ * Any valid RAN peer will contact us and initiate a RESET procedure. In turn, on osmo-msc start, we may choose to
+ * initiate a RESET procedure towards every known RAN peer.
+ *
+ * Semantically, it would make sense to keep the list of ran_conn instances in each struct ran_peer, but since
+ * non-Initial Connection-Oriented messages indicate only the conn by id (and identify the ran_peer from that), the conn
+ * list is kept in sccp_ran_inst. For convenience, see ran_peer_for_each_ran_conn().
+ */
+struct ran_peer {
+ /* Entry in sccp_ran_inst->ran_conns */
+ struct llist_head entry;
+
+ struct sccp_ran_inst *sri;
+ struct osmo_sccp_addr peer_addr;
+ struct osmo_fsm_inst *fi;
+
+ /* See cell_id_list.h */
+ struct llist_head cells_seen;
+};
+
+#define ran_peer_for_each_ran_conn(RAN_CONN, RAN_PEER) \
+ llist_for_each_entry(RAN_CONN, &(RAN_PEER)->sri->ran_conns, entry) \
+ if ((RAN_CONN)->ran_peer == (RAN_PEER))
+
+#define ran_peer_for_each_ran_conn_safe(RAN_CONN, RAN_CONN_NEXT, RAN_PEER) \
+ llist_for_each_entry_safe(RAN_CONN, RAN_CONN_NEXT, &(RAN_PEER)->sri->ran_conns, entry) \
+ if ((RAN_CONN)->ran_peer == (RAN_PEER))
+
+enum ran_peer_state {
+ RAN_PEER_ST_WAIT_RX_RESET = 0,
+ RAN_PEER_ST_WAIT_RX_RESET_ACK,
+ RAN_PEER_ST_READY,
+ RAN_PEER_ST_DISCARDING,
+};
+
+enum ran_peer_event {
+ RAN_PEER_EV_MSG_UP_CL = 0,
+ RAN_PEER_EV_MSG_UP_CO_INITIAL,
+ RAN_PEER_EV_MSG_UP_CO,
+ RAN_PEER_EV_MSG_DOWN_CL,
+ RAN_PEER_EV_MSG_DOWN_CO_INITIAL,
+ RAN_PEER_EV_MSG_DOWN_CO,
+ RAN_PEER_EV_RX_RESET,
+ RAN_PEER_EV_RX_RESET_ACK,
+ RAN_PEER_EV_CONNECTION_SUCCESS,
+ RAN_PEER_EV_CONNECTION_TIMEOUT,
+};
+
+struct ran_peer_ev_ctx {
+ uint32_t conn_id;
+ struct ran_conn *conn;
+ struct msgb *msg;
+};
+
+struct ran_peer *ran_peer_find_or_create(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *peer_addr);
+struct ran_peer *ran_peer_find(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *peer_addr);
+
+void ran_peer_cells_seen_add(struct ran_peer *ran_peer, const struct gsm0808_cell_id *id);
+
+int ran_peer_up_l2(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *calling_addr, bool co, uint32_t conn_id,
+ struct msgb *l2);
+void ran_peer_disconnect(struct sccp_ran_inst *sri, uint32_t conn_id);
+
+int ran_peers_down_paging(struct sccp_ran_inst *sri, enum CELL_IDENT page_where, struct vlr_subscr *vsub,
+ enum paging_cause cause);
+int ran_peer_down_paging(struct ran_peer *rp, const struct gsm0808_cell_id *page_id, struct vlr_subscr *vsub,
+ enum paging_cause cause);
+
+struct ran_peer *ran_peer_find_by_cell_id(struct sccp_ran_inst *sri, const struct gsm0808_cell_id *cid,
+ bool expecting_single_match);
+struct ran_peer *ran_peer_find_by_addr(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *addr);
diff --git a/include/osmocom/msc/rtp_stream.h b/include/osmocom/msc/rtp_stream.h
new file mode 100644
index 000000000..794e8066f
--- /dev/null
+++ b/include/osmocom/msc/rtp_stream.h
@@ -0,0 +1,64 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <osmocom/core/sockaddr_str.h>
+#include <osmocom/mgcp_client/mgcp_client.h>
+
+struct gsm_trans;
+
+struct osmo_fsm_inst;
+struct call_leg;
+struct osmo_mgcpc_ep;
+struct osmo_mgcpc_ep_ci;
+
+enum rtp_direction {
+ RTP_TO_RAN,
+ RTP_TO_CN,
+};
+
+extern const struct value_string rtp_direction_names[];
+static inline const char *rtp_direction_name(enum rtp_direction val)
+{ return get_value_string(rtp_direction_names, val); }
+
+/* A single bidirectional RTP hop between remote and MGW's local RTP port. */
+struct rtp_stream {
+ struct osmo_fsm_inst *fi;
+ struct call_leg *parent_call_leg;
+ enum rtp_direction dir;
+
+ uint32_t call_id;
+
+ /* Backpointer for callers (optional) */
+ struct gsm_trans *for_trans;
+
+ struct osmo_sockaddr_str local;
+ struct osmo_sockaddr_str remote;
+ bool remote_sent_to_mgw;
+
+ bool codec_known;
+ enum mgcp_codecs codec;
+ bool codec_sent_to_mgw;
+
+ struct osmo_mgcpc_ep_ci *ci;
+
+ enum mgcp_connection_mode crcx_conn_mode;
+};
+
+#define RTP_STREAM_FMT "local=" RTP_IP_PORT_FMT ",remote=" RTP_IP_PORT_FMT
+#define RTP_STREAM_ARGS(RS) RTP_IP_PORT_ARGS(&(RS)->local), RTP_IP_PORT_ARGS(&(RS)->remote),
+
+struct rtp_stream *rtp_stream_alloc(struct call_leg *parent_call_leg, enum rtp_direction dir,
+ uint32_t call_id, struct gsm_trans *for_trans);
+
+int rtp_stream_ensure_ci(struct rtp_stream *rtps, struct osmo_mgcpc_ep *at_endpoint);
+int rtp_stream_do_mdcx(struct rtp_stream *rtps);
+
+void rtp_stream_set_codec(struct rtp_stream *rtps, enum mgcp_codecs codec);
+void rtp_stream_set_remote_addr(struct rtp_stream *rtps, const struct osmo_sockaddr_str *r);
+int rtp_stream_commit(struct rtp_stream *rtps);
+
+void rtp_stream_release(struct rtp_stream *rtps);
+
+bool rtp_stream_is_established(struct rtp_stream *rtps);
diff --git a/include/osmocom/msc/sccp_ran.h b/include/osmocom/msc/sccp_ran.h
new file mode 100644
index 000000000..b7da314b2
--- /dev/null
+++ b/include/osmocom/msc/sccp_ran.h
@@ -0,0 +1,280 @@
+/* The RAN (Radio Access Network) side of an A- or Iu-connection, which is closely tied to an SCCP connection.
+ * (as opposed to the NAS side.)
+ *
+ * The SCCP connection is located with the MSC-I role, while the MSC-A responsible for subscriber management may be at a
+ * remote MSC behind an E-interface connection. In that case we need to forward the L2 messages over the E-interface and
+ * the BSSAP or RANAP messages get decoded and interpreted at MSC-A.
+ *
+ * The life cycle of a DTAP message from RAN to MSC-A -- starting from the bottom left:
+ *
+ * ------------------>[ 3GPP TS 24.008 ]------------------->|
+ * ^ (Request) (Response) |
+ * | v
+ * msc_a_up_l3() msc_a_tx_dtap_to_i(dtap_msgb)
+ * ^ |
+ * | v
+ * msc_a_nas_decode_cb(struct nas_dec_msg) msc_a_nas_enc(struct nas_enc_msg)
+ * ^ ^ . |
+ * | -Decode NAS- | . NAS v
+ * | | . ran_infra[type]->nas_encode(struct nas_enc_msg)
+ * nas_a_decode_l2() nas_iu_decode_l2() . | |
+ * ^ ^ . v v
+ * | | . nas_a_encode() nas_iu_encode()
+ * ran_infra[type]->nas_dec_l2() | |
+ * ^ | -Encode BSSAP/RANAP- |
+ * | v v
+ * msc_a_nas_dec() msub_tx_an_apdu(from MSC_ROLE_A to MSC_ROLE_I)
+ * ^ |
+ * | MSC-A v
+ * . msc_a FSM . . . . . . . . . . . . . . . . msc_a FSM . . . . . . . . . .
+ * ^ |
+ * | MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST v
+ * | data = an_apdu [possibly
+ * | via GSUP
+ * [possibly from remote MSC-A]
+ * via GSUP |
+ * to remote MSC-A] | MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+ * ^ | data = an_apdu
+ * | v
+ * . msc_i FSM . . . . . . . . . . . . . . . . msc_i FSM . . . . . . . . . .
+ * ^ MSC-I |
+ * | MSC_EV_FROM_RAN_UP_L2 V
+ * | data = an_apdu msc_i_down_l2(an_apdu->msg)
+ * | |
+ * ran_peer FSM V
+ * ^ ran_conn_down_l2_co();
+ * | RAN_PEER_EV_MSG_UP_CO |
+ * | data = struct ran_peer_ev_ctx | RAN_PEER_EV_MSG_DOWN_CO
+ * | | data = struct ran_peer_ev_ctx
+ * ran_peer_up_l2() V
+ * (ran_infa->sccp_ran_ops.up_l2) ran_peer FSM
+ * ^ ^ |
+ * | | v
+ * sccp_ran_sap_up() sccp_ran_down_l2_co(conn_id, msg)
+ * ^ ^ | |
+ * | | |SCCP|
+ * |SCCP| v v
+ * | | <------------------------------------------------------
+ * BSC RNC
+ * | |
+ * BTS NodeB
+ * | |
+ * MS UE
+ *
+ * sccp_ran:
+ * - handles receiving of SCCP primitives from the SCCP layer.
+ * - extracts L2 msg
+ * - passes on L2 msg and conn_id by calling sccp_ran_ops.up_l2 == ran_peer_up_l2().
+ *
+ * On Connection-Oriented *Initial* message
+ * ========================================
+ *
+ * ran_peer_up_l2()
+ * - notices an unknown, new osmo_rat_type:conn_id and
+ * - first creates an "empty" msub with new local MSC-I and MSC-A roles;
+ * in this case always a *local* MSC-A (never remote on Initial messages).
+ * - Passes the L2 msgb containing the BSSAP or RANAP as AN-APDU
+ * in MSC_A_EV_FROM_I_COMPLETE_LAYER_3 to the MSC-A role FSM instance.
+ *
+ * MSC-A:
+ * - Receives MSC_A_EV_FROM_I_COMPLETE_LAYER_3 AN-APDU, notices an_proto indicating BSSAP or RANAP.
+ * - Passes L2 message to ran_infra[]->nas_dec_l2(), which decodes the BSSAP or RANAP.
+ * - contained information is passed to msc_a_nas_decode_cb().
+ * - which msc_a starts Complete-L3 and VLR procedures,
+ * - associates msub with a vlr_subscr,
+ * - sends DTAP requests back down by calling msc_a_tx_dtap_to_i() (possibly other more specialized tx functions)
+ * - according to ran_infra[]->nas_encode(), the nas_enc_msg gets encoded as BSSAP or RANAP.
+ * - passes as AN-APDU to MSC-I in MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST signal.
+ *
+ * MSC-I, receiving AN-APDU from local MSC-A:
+ * - feeds L2 msgb to the ran_peer FSM as RAN_PEER_EV_MSG_DOWN_CO, passing the SCCP conn_id.
+ *
+ * sccp_ran_down_l2_co()
+ * - wraps in SCCP prim,
+ * - sends down.
+ *
+ *
+ * On (non-Initial) Connection-Oriented DTAP
+ * =========================================
+ *
+ * ran_peer_up_l2()
+ * - notices an already known conn_id by looking up a matching osmo_rat_type:ran_conn.
+ * - ran_conn already associated with an MSC-I role.
+ * - Now forwards AN-APDU like above, only using MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST.
+ *
+ *
+ * MSC-A and MSC-I roles on separate MSC instances
+ * ===============================================
+ *
+ * After inter-MSC handover, the MSC-I and MSC-A roles can be on separate MSC instances, typically physically distant /
+ * possibly belonging to a different operator. This will never see Complete-L3.
+ * Assuming that both instances are osmo-msc, then:
+ *
+ * At MSC-B:
+ * initially, via GSUP:
+ * - receives Handover Request from remote MSC-A,
+ * - creates msub with local MSC-T role,
+ * - sets up the ran_conn with a new SCCP conn_id, and waits for the MS/UE to show up.
+ * - (fast-forward to successful Handover)
+ * - MSC-T role becomes MSC-I for the remote MSC-A.
+ *
+ * Then for DTAP from the MS:
+ *
+ * sccp_ran:
+ * - receives SCCP,
+ * - extracts L2 and passes on to ran_peer_up_l2().
+ *
+ * ran_peer_up_l2()
+ * - notices an already known conn_id by looking up a matching ran_conn.
+ * - ran_conn already associated with an MSC-I role and an msub.
+ * - forwards AN-APDU in MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST to the MSC-A role.
+ *
+ * At MSC-B, the "MSC-A role" is a *remote* implementation,
+ * meaning there is an msc_a_remote FSM instance in MSC-B's msub:
+ *
+ * MSC-A-Remote:
+ * - msc_a_remote receives MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST,
+ * - wraps AN-APDU in GSUP message,
+ * - sends to remote MSC-A.
+ *
+ * At MSC-A:
+ * Here, msub has a *remote* MSC-I role,
+ * meaning it is an msc_i_remote FSM instance:
+ *
+ * MSC-I-Remote:
+ * - msc_i_remote receives and decodes GSUP message,
+ * - passes AN-APDU to MSC-A FSM instance via MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST.
+ *
+ * MSC-A role:
+ * - Receives MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST, notices an_proto indicating BSSAP or RANAP.
+ * - Passes L2 message to ran_infra[]->nas_dec_l2(), which decodes the BSSAP or RANAP.
+ * - contained information is passed to msc_a_nas_decode_cb().
+ * - sends DTAP requests back down by calling msc_a_tx_dtap_to_i() (possibly other more specialized tx functions)
+ * - according to ran_infra[]->nas_encode(), the nas_enc_msg gets encoded as BSSAP or RANAP.
+ * - passes as AN-APDU to MSC-I in MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST signal.
+ *
+ * MSC-I-Remote:
+ * - msc_i_remote wraps AN-APDU in GSUP message,
+ * - sends to MSC-B
+ *
+ * At MSC-B:
+ * MSC-A-Remote:
+ * - msc_a_remote receives GSUP message,
+ * - passes AN-APDU to msc_i in MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST.
+ *
+ * MSC-I:
+ * - BSSAP or RANAP is indicated both by the AN-APDU an_proto, as well as the ran_conn state for that subscriber.
+ * - feeds L2 msgb to the ran_peer FSM as RAN_PEER_EV_MSG_DOWN_CO, passing the SCCP conn_id.
+ *
+ * sccp_ran_down_l2_co()
+ * - wraps in SCCP prim,
+ * - sends down.
+ *
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+#include <osmocom/core/tdef.h>
+#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/gsm/gsm0808_utils.h>
+#include <osmocom/sigtran/sccp_sap.h>
+
+#include <osmocom/msc/paging.h>
+
+struct msgb;
+struct ran_infra;
+struct sccp_ran_inst;
+
+#define LOG_SCCP_RAN_CO(sri, peer_addr, conn_id, level, fmt, args...) \
+ LOGP((sri) && (sri)->ran? (sri)->ran->log_subsys : DMSC, level, "(%s-%u%s%s) " fmt, \
+ osmo_rat_type_name((sri) && (sri)->ran? (sri)->ran->type : -1), conn_id, \
+ peer_addr ? " from " : "", \
+ peer_addr ? osmo_sccp_inst_addr_name((sri)->sccp, peer_addr) : "", \
+ ## args)
+
+#define LOG_SCCP_RAN_CL_CAT(sri, peer_addr, subsys, level, fmt, args...) \
+ LOGP(subsys, level, "(%s%s%s) " fmt, \
+ osmo_rat_type_name((sri) && (sri)->ran? (sri)->ran->type : -1), \
+ peer_addr ? " from " : "", \
+ peer_addr ? osmo_sccp_inst_addr_name((sri)->sccp, peer_addr) : "", \
+ ## args)
+
+#define LOG_SCCP_RAN_CL(sri, peer_addr, level, fmt, args...) \
+ LOG_SCCP_RAN_CL_CAT(sri, peer_addr, (sri) && (sri)->ran? (sri)->ran->log_subsys : DMSC, level, fmt, ##args)
+
+#define LOG_SCCP_RAN_CAT(sri, subsys, level, fmt, args...) \
+ LOG_SCCP_RAN_CL_CAT(sri, NULL, subsys, level, fmt, ##args)
+
+#define LOG_SCCP_RAN(sri, level, fmt, args...) \
+ LOG_SCCP_RAN_CL(sri, NULL, level, fmt, ##args)
+
+extern struct osmo_tdef g_sccp_tdefs[];
+
+enum reset_msg_type {
+ SCCP_RAN_MSG_NON_RESET = 0,
+ SCCP_RAN_MSG_RESET,
+ SCCP_RAN_MSG_RESET_ACK,
+};
+
+struct sccp_ran_ops {
+ /* Implemented to receive L2 messages (e.g. BSSAP or RANAP passed to ran_peer).
+ * - ConnectionLess messages: co = false, calling_addr != NULL, conn_id == 0;
+ * - ConnectionOriented Initial messages: co = true, calling_addr != NULL;
+ * - ConnectionOriented non-Initial messages: co = true, calling_addr == NULL;
+ */
+ int (* up_l2 )(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *calling_addr, bool co, uint32_t conn_id,
+ struct msgb *l2);
+
+ /* Implemented to finally remove a connection state. Last event in a connection-oriented exchange. If the
+ * N-DISCONNECT contained l2 data, it was dispatched via up_l2() before this is called. */
+ void (* disconnect )(struct sccp_ran_inst *sri, uint32_t conn_id);
+
+ /* Return whether the given l2_cl message is a RESET, RESET ACKNOWLEDGE, or RESET-unrelated message.
+ * This callback is stored in struct sccp_ran_inst to provide RESET handling to the caller (ran_peer),
+ * it is not used in sccp_ran.c. */
+ enum reset_msg_type (* is_reset_msg )(const struct sccp_ran_inst *sri, const struct msgb *l2_cl);
+
+ /* Return a RESET or RESET ACK message for this RAN type.
+ * This callback is stored in struct sccp_ran_inst to provide RESET handling to the caller (ran_peer),
+ * it is not used in sccp_ran.c. */
+ struct msgb* (* make_reset_msg )(const struct sccp_ran_inst *sri, enum reset_msg_type);
+
+ /* Return a PAGING message towards the given Cell Identifier, to page for the given TMSI or IMSI.
+ * Page for TMSI if TMSI != GSM_RESERVED_TMSI, otherwise page for IMSI. */
+ struct msgb* (* make_paging_msg )(const struct sccp_ran_inst *sri, const struct gsm0808_cell_id *page_cell_id,
+ const char *imsi, uint32_t tmsi, enum paging_cause cause);
+
+ /* Return a human printable name for the msgb */
+ const char* (* msg_name )(const struct sccp_ran_inst *sri, const struct msgb *l2);
+};
+
+struct sccp_ran_inst {
+ struct ran_infra *ran;
+
+ struct osmo_sccp_instance *sccp;
+ struct osmo_sccp_user *scu;
+ struct osmo_sccp_addr local_sccp_addr;
+
+ struct llist_head ran_peers;
+ struct llist_head ran_conns;
+
+ void *user_data;
+
+ /* Compatibility with legacy osmo-hnbgw that was unable to properly handle RESET messages. Set to 'false' to
+ * require proper RESET procedures, set to 'true' to implicitly put a ran_peer in RAN_PEER_ST_READY upon the
+ * first CO message. Default is false = be strict. */
+ bool ignore_missing_reset;
+};
+
+struct sccp_ran_inst *sccp_ran_init(void *talloc_ctx, struct osmo_sccp_instance *sccp, enum osmo_sccp_ssn ssn,
+ const char *sccp_user_name, struct ran_infra *ran, void *user_data);
+
+int sccp_ran_down_l2_co_initial(struct sccp_ran_inst *sri,
+ const struct osmo_sccp_addr *called_addr,
+ uint32_t conn_id, struct msgb *l2);
+int sccp_ran_down_l2_co(struct sccp_ran_inst *sri, uint32_t conn_id, struct msgb *l2);
+int sccp_ran_down_l2_cl(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *called_addr, struct msgb *l2);
+
+int sccp_ran_disconnect(struct sccp_ran_inst *ran, uint32_t conn_id, uint32_t cause);
diff --git a/include/osmocom/msc/sgs_iface.h b/include/osmocom/msc/sgs_iface.h
index a167cd6d8..575468e10 100644
--- a/include/osmocom/msc/sgs_iface.h
+++ b/include/osmocom/msc/sgs_iface.h
@@ -24,8 +24,11 @@
#include <osmocom/gsm/protocol/gsm_29_118.h>
#include <osmocom/msc/vlr.h>
#include <osmocom/msc/vlr_sgs.h>
+#include <osmocom/msc/paging.h>
#include <osmocom/core/socket.h>
+struct msc_a;
+
static const unsigned int sgs_state_timer_defaults[_NUM_SGS_STATE_TIMERS] = {
[SGS_STATE_TS5] = SGS_TS5_DEFAULT,
[SGS_STATE_TS6_2] = SGS_TS6_2_DEFAULT,
@@ -82,6 +85,8 @@ extern struct sgs_state *g_sgs;
struct sgs_state *sgs_iface_init(void *ctx, struct gsm_network *network);
int sgs_iface_rx(struct sgs_connection *sgc, struct msgb *msg);
+enum sgsap_service_ind sgs_serv_ind_from_paging_cause(enum paging_cause);
int sgs_iface_tx_paging(struct vlr_subscr *vsub, enum sgsap_service_ind serv_ind);
-int sgs_iface_tx_dtap_ud(struct msgb *msg);
-void sgs_iface_tx_release(struct ran_conn *conn);
+int sgs_iface_tx_dtap_ud(struct msc_a *msc_a, struct msgb *msg);
+void sgs_iface_tx_release(struct vlr_subscr *vsub);
+
diff --git a/include/osmocom/msc/signal.h b/include/osmocom/msc/signal.h
index 51269763e..16b5678db 100644
--- a/include/osmocom/msc/signal.h
+++ b/include/osmocom/msc/signal.h
@@ -28,6 +28,9 @@
#include <osmocom/core/signal.h>
+struct msc_a;
+struct vty;
+
/*
* Signalling subsystems
*/
@@ -63,7 +66,7 @@ enum signal_subscr {
/* SS_SCALL signals */
enum signal_scall {
S_SCALL_SUCCESS,
- S_SCALL_EXPIRED,
+ S_SCALL_FAILED,
S_SCALL_DETACHED,
};
@@ -78,23 +81,18 @@ enum signal_global {
struct paging_signal_data {
struct vlr_subscr *vsub;
- struct gsm_bts *bts;
-
- int paging_result;
-
- /* NULL in case the paging didn't work */
- struct ran_conn *conn;
+ struct msc_a *msc_a;
};
struct scall_signal_data {
- struct ran_conn *conn;
- void *data;
+ struct msc_a *msc_a;
+ struct vty *vty;
};
struct sms_signal_data {
/* The transaction where this occured */
struct gsm_trans *trans;
/* Can be NULL for SMMA */
struct gsm_sms *sms;
- /* int paging result. Only the ones with > 0 */
- int paging_result;
+ /* true when paging was successful */
+ bool paging_result;
};
diff --git a/include/osmocom/msc/silent_call.h b/include/osmocom/msc/silent_call.h
index ca36052ff..fb53e9049 100644
--- a/include/osmocom/msc/silent_call.h
+++ b/include/osmocom/msc/silent_call.h
@@ -1,15 +1,18 @@
#ifndef _SILENT_CALL_H
#define _SILENT_CALL_H
-struct ran_conn;
struct gsm0808_channel_type;
+struct gsm_trans;
+
+int gsm_silent_call_start(struct vlr_subscr *vsub,
+ const struct gsm0808_channel_type *ct,
+ const char *traffic_dst_ip, uint16_t traffic_dst_port,
+ struct vty *vty);
-extern int gsm_silent_call_start(struct vlr_subscr *vsub,
- const struct gsm0808_channel_type *ct,
- const char *traffic_dst_ip, uint16_t traffic_dst_port,
- void *data);
extern int gsm_silent_call_stop(struct vlr_subscr *vsub);
+void trans_silent_call_free(struct gsm_trans *trans);
+
#if 0
extern int silent_call_rx(struct ran_conn *conn, struct msgb *msg);
extern int silent_call_reroute(struct ran_conn *conn, struct msgb *msg);
diff --git a/include/osmocom/msc/sms_queue.h b/include/osmocom/msc/sms_queue.h
index 70cabe287..ef73baf04 100644
--- a/include/osmocom/msc/sms_queue.h
+++ b/include/osmocom/msc/sms_queue.h
@@ -6,6 +6,7 @@ struct gsm_sms_queue;
struct vty;
#define VSUB_USE_SMS_PENDING "SMS-pending"
+#define MSC_A_USE_SMS_PENDING "SMS-pending"
int sms_queue_start(struct gsm_network *, int in_flight);
int sms_queue_trigger(struct gsm_sms_queue *);
diff --git a/include/osmocom/msc/transaction.h b/include/osmocom/msc/transaction.h
index 7ffcf3b78..99aca55ef 100644
--- a/include/osmocom/msc/transaction.h
+++ b/include/osmocom/msc/transaction.h
@@ -6,18 +6,21 @@
#include <osmocom/core/fsm.h>
#include <osmocom/msc/gsm_04_11.h>
#include <osmocom/msc/mncc.h>
+#include <osmocom/msc/msc_a.h>
#include <osmocom/msc/debug.h>
#include <osmocom/gsm/gsm0411_smc.h>
#include <osmocom/gsm/gsm0411_smr.h>
+struct vty;
+
/* Used for late TID assignment */
#define TRANS_ID_UNASSIGNED 0xff
#define LOG_TRANS_CAT(trans, subsys, level, fmt, args...) \
LOGP(subsys, level, \
"trans(%s %s callref-0x%x tid-%u%s) " fmt, \
- (trans) ? gsm48_pdisc_name((trans)->protocol) : "NULL", \
- (trans) ? ((trans)->conn ? (trans)->conn->fi->id : vlr_subscr_name((trans)->vsub)) : "NULL", \
+ (trans) ? trans_type_name((trans)->type) : "NULL", \
+ (trans) ? ((trans)->msc_a ? (trans)->msc_a->c.fi->id : vlr_subscr_name((trans)->vsub)) : "NULL", \
(trans) ? (trans)->callref : 0, \
(trans) ? (trans)->transaction_id : 0, \
(trans) && (trans)->paging_request ? ",PAGING" : "", \
@@ -34,6 +37,19 @@ enum bridge_state {
BRIDGE_STATE_BRIDGE_ESTABLISHED,
};
+enum trans_type {
+ TRANS_CC = GSM48_PDISC_CC,
+ TRANS_SMS = GSM48_PDISC_SMS,
+ TRANS_USSD = GSM48_PDISC_NC_SS,
+ TRANS_SILENT_CALL,
+};
+
+extern const struct value_string trans_type_names[];
+static inline const char *trans_type_name(enum trans_type val)
+{ return get_value_string(trans_type_names, val); }
+
+uint8_t trans_type_to_gsm48_proto(enum trans_type type);
+
/* One transaction */
struct gsm_trans {
/* Entry in list of all transactions */
@@ -42,8 +58,8 @@ struct gsm_trans {
/* Back pointer to the network struct */
struct gsm_network *net;
- /* The protocol within which we live */
- uint8_t protocol;
+ /* What kind of transaction */
+ enum trans_type type;
/* The current transaction ID */
uint8_t transaction_id;
@@ -55,7 +71,7 @@ struct gsm_trans {
struct vlr_subscr *vsub;
/* The associated connection we are using to transmit messages */
- struct ran_conn *conn;
+ struct msc_a *msc_a;
/* reference from MNCC or other application */
uint32_t callref;
@@ -64,7 +80,7 @@ struct gsm_trans {
int tch_recv;
/* is thats one paging? */
- struct subscr_request *paging_request;
+ struct paging_request *paging_request;
/* bearer capabilities (rate and codec) */
struct gsm_mncc_bearer_cap bearer_cap;
@@ -85,7 +101,6 @@ struct gsm_trans {
struct osmo_timer_list timer;
struct osmo_timer_list timer_guard;
struct gsm_mncc msg; /* stores setup/disconnect/release message */
- bool assignment_started;
} cc;
struct {
struct gsm411_smc_inst smc_inst;
@@ -105,6 +120,11 @@ struct gsm_trans {
/* Inactivity timer, triggers transaction release */
struct osmo_timer_list timer_guard;
} ss;
+ struct {
+ struct gsm0808_channel_type ct;
+ struct osmo_sockaddr_str rtp_cn;
+ struct vty *from_vty;
+ } silent_call;
};
struct {
@@ -115,8 +135,9 @@ struct gsm_trans {
-struct gsm_trans *trans_find_by_id(const struct ran_conn *conn,
- uint8_t proto, uint8_t trans_id);
+struct gsm_trans *trans_find_by_type(const struct msc_a *msc_a, enum trans_type type);
+struct gsm_trans *trans_find_by_id(const struct msc_a *msc_a,
+ enum trans_type type, uint8_t trans_id);
struct gsm_trans *trans_find_by_callref(const struct gsm_network *net,
uint32_t callref);
struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net,
@@ -125,26 +146,28 @@ struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net,
struct gsm_trans *trans_alloc(struct gsm_network *net,
struct vlr_subscr *vsub,
- uint8_t protocol, uint8_t trans_id,
+ enum trans_type type, uint8_t trans_id,
uint32_t callref);
void trans_free(struct gsm_trans *trans);
int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr *vsub,
- uint8_t protocol);
-struct gsm_trans *trans_has_conn(const struct ran_conn *conn);
-void trans_conn_closed(const struct ran_conn *conn);
+ enum trans_type type);
+struct gsm_trans *trans_has_conn(const struct msc_a *msc_a);
+void trans_conn_closed(const struct msc_a *msc_a);
static inline int trans_log_subsys(const struct gsm_trans *trans)
{
if (!trans)
return DMSC;
- switch (trans->protocol) {
- case GSM48_PDISC_CC:
+ switch (trans->type) {
+ case TRANS_CC:
return DCC;
- case GSM48_PDISC_SMS:
+ case TRANS_SMS:
return DLSMS;
default:
break;
}
+ if (trans->msc_a)
+ return trans->msc_a->c.ran->log_subsys;
return DMSC;
}
diff --git a/include/osmocom/msc/vlr.h b/include/osmocom/msc/vlr.h
index ce6a232fa..4c119514a 100644
--- a/include/osmocom/msc/vlr.h
+++ b/include/osmocom/msc/vlr.h
@@ -91,11 +91,6 @@ struct vlr_auth_tuple {
#define VLR_KEY_SEQ_INVAL 7 /* GSM 04.08 - 10.5.1.2 */
-struct vlr_ciph_result {
- enum vlr_ciph_result_cause cause;
- char imeisv[GSM48_MI_SIZE];
-};
-
enum vlr_subscr_security_context {
VLR_SEC_CTX_NONE,
VLR_SEC_CTX_GSM,
@@ -162,7 +157,8 @@ struct vlr_subscr {
bool la_allowed;
struct osmo_use_count use_count;
- struct osmo_use_count_entry use_count_buf[10];
+ struct osmo_use_count_entry use_count_buf[8];
+ int32_t max_total_use_count;
struct osmo_fsm_inst *lu_fsm;
struct osmo_fsm_inst *auth_fsm;
@@ -200,20 +196,19 @@ struct vlr_subscr {
struct osmo_timer_list Ts5;
} sgs;
- struct gsm_classmark classmark;
+ struct osmo_gsm48_classmark classmark;
};
enum vlr_ciph {
- VLR_CIPH_NONE, /*< A5/0, no encryption */
- VLR_CIPH_A5_1, /*< A5/1, encryption */
- VLR_CIPH_A5_2, /*< A5/2, deprecated export-grade encryption */
- VLR_CIPH_A5_3, /*< A5/3, 'new secure' encryption */
+ VLR_CIPH_NONE = 0, /*< A5/0, no encryption */
+ VLR_CIPH_A5_1 = 1, /*< A5/1, encryption */
+ VLR_CIPH_A5_2 = 2, /*< A5/2, deprecated export-grade encryption */
+ VLR_CIPH_A5_3 = 3, /*< A5/3, 'new secure' encryption */
};
static inline uint8_t vlr_ciph_to_gsm0808_alg_id(enum vlr_ciph ciph)
{
switch (ciph) {
- default:
case VLR_CIPH_NONE:
return GSM0808_ALG_ID_A5_0;
case VLR_CIPH_A5_1:
@@ -222,6 +217,8 @@ static inline uint8_t vlr_ciph_to_gsm0808_alg_id(enum vlr_ciph ciph)
return GSM0808_ALG_ID_A5_2;
case VLR_CIPH_A5_3:
return GSM0808_ALG_ID_A5_3;
+ default:
+ return GSM0808_ALG_ID_A5_7;
}
}
@@ -240,12 +237,12 @@ struct vlr_ops {
int (*tx_lu_acc)(void *msc_conn_ref, uint32_t send_tmsi);
int (*tx_lu_rej)(void *msc_conn_ref, enum gsm48_reject_value cause);
- int (*tx_cm_serv_acc)(void *msc_conn_ref);
- int (*tx_cm_serv_rej)(void *msc_conn_ref, enum gsm48_reject_value cause);
+ int (*tx_cm_serv_acc)(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type);
+ int (*tx_cm_serv_rej)(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type,
+ enum gsm48_reject_value cause);
int (*set_ciph_mode)(void *msc_conn_ref, bool umts_aka, bool retrieve_imeisv);
- /* UTRAN: send Common Id (when auth+ciph are complete) */
int (*tx_common_id)(void *msc_conn_ref);
int (*tx_mm_info)(void *msc_conn_ref);
@@ -255,9 +252,6 @@ struct vlr_ops {
/* notify MSC/SGSN that the given subscriber has been associated
* with this msc_conn_ref */
int (*subscr_assoc)(void *msc_conn_ref, struct vlr_subscr *vsub);
-
- /* Forward a parsed GSUP message towards MSC message router */
- int (*forward_gsup_msg)(struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg);
};
enum vlr_timer {
@@ -271,7 +265,7 @@ enum vlr_timer {
struct vlr_instance {
struct llist_head subscribers;
struct llist_head operations;
- struct osmo_gsup_client *gsup_client;
+ struct gsup_client_mux *gcm;
struct vlr_ops ops;
struct osmo_timer_list lu_expire_timer;
struct {
@@ -323,13 +317,13 @@ int vlr_subscr_rx_auth_resp(struct vlr_subscr *vsub, bool is_r99, bool is_utran,
const uint8_t *res, uint8_t res_len);
int vlr_subscr_rx_auth_fail(struct vlr_subscr *vsub, const uint8_t *auts);
int vlr_subscr_tx_auth_fail_rep(const struct vlr_subscr *vsub) __attribute__((warn_unused_result));
-void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, struct vlr_ciph_result *res);
+void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, enum vlr_ciph_result_cause result);
int vlr_subscr_rx_tmsi_reall_compl(struct vlr_subscr *vsub);
int vlr_subscr_rx_imsi_detach(struct vlr_subscr *vsub);
struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops);
-int vlr_start(struct ipaccess_unit *ipa_dev, struct vlr_instance *vlr,
- const char *gsup_server_addr_str, uint16_t gsup_server_port);
+int vlr_start(struct vlr_instance *vlr, struct gsup_client_mux *gcm);
+int vlr_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg);
/* internal use only */
@@ -351,6 +345,7 @@ lu_compl_vlr_proc_start(struct osmo_fsm_inst *parent,
const char *vlr_subscr_name(const struct vlr_subscr *vsub);
+const char *vlr_subscr_short_name(const struct vlr_subscr *vsub, unsigned int maxlen);
const char *vlr_subscr_msisdn_or_name(const struct vlr_subscr *vsub);
#define vlr_subscr_find_by_imsi(vlr, imsi, USE) \
@@ -454,7 +449,8 @@ vlr_proc_acc_req(struct osmo_fsm_inst *parent,
uint32_t parent_event_failure,
void *parent_event_data,
struct vlr_instance *vlr, void *msc_conn_ref,
- enum vlr_parq_type type, const uint8_t *mi_lv,
+ enum vlr_parq_type type, enum osmo_cm_service_type cm_service_type,
+ const uint8_t *mi_lv,
const struct osmo_location_area_id *lai,
bool authentication_required,
bool ciphering_required,
diff --git a/include/osmocom/msc/vlr_sgs.h b/include/osmocom/msc/vlr_sgs.h
index 1cbb771af..00d52f7b4 100644
--- a/include/osmocom/msc/vlr_sgs.h
+++ b/include/osmocom/msc/vlr_sgs.h
@@ -27,7 +27,7 @@ struct vlr_subscr;
struct vlr_instance;
#define VSUB_USE_SGS "SGs"
-#define VSUB_USE_SGS_PAGING "SGs-paging"
+#define VSUB_USE_SGS_PAGING_REQ "SGs-paging-req"
/* See also 3GPP TS 29.118, chapter 4.2.2 States at the VLR */
enum sgs_ue_fsm_state {
diff --git a/src/libmsc/Makefile.am b/src/libmsc/Makefile.am
index 454b9708e..d83489680 100644
--- a/src/libmsc/Makefile.am
+++ b/src/libmsc/Makefile.am
@@ -28,11 +28,12 @@ noinst_LIBRARIES = \
$(NULL)
libmsc_a_SOURCES = \
- a_iface.c \
- a_iface_bssap.c \
- a_reset.c \
+ call_leg.c \
+ cell_id_list.c \
+ sccp_ran.c \
msc_vty.c \
db.c \
+ e_link.c \
gsm_04_08.c \
gsm_04_08_cc.c \
gsm_04_11.c \
@@ -40,31 +41,42 @@ libmsc_a_SOURCES = \
gsm_04_14.c \
gsm_04_80.c \
gsm_09_11.c \
- gsm_subscriber.c \
+ gsup_client_mux.c \
mncc.c \
mncc_builtin.c \
mncc_sock.c \
- msc_ifaces.c \
- msc_mgcp.c \
+ mncc_call.c \
+ msub.c \
+ msc_a.c \
+ msc_a_remote.c \
+ msc_i.c \
+ msc_i_remote.c \
+ msc_t.c \
+ msc_t_remote.c \
+ msc_ho.c \
+ neighbor_ident.c \
+ neighbor_ident_vty.c \
+ paging.c \
ran_conn.c \
+ ran_infra.c \
+ ran_msg.c \
+ ran_msg_a.c \
+ ran_peer.c \
rrlp.c \
+ rtp_stream.c \
silent_call.c \
sms_queue.c \
transaction.c \
- osmo_msc.c \
+ msc_net_init.c \
ctrl_commands.c \
sgs_iface.c \
sgs_server.c \
sgs_vty.c \
$(NULL)
+
if BUILD_IU
libmsc_a_SOURCES += \
- iucs.c \
- iucs_ranap.c \
- $(NULL)
-else
-libmsc_a_SOURCES += \
- iu_dummy.c \
+ ran_msg_iu.c \
$(NULL)
endif
diff --git a/src/libmsc/a_iface.c b/src/libmsc/a_iface.c
deleted file mode 100644
index 91a2b6a3e..000000000
--- a/src/libmsc/a_iface.c
+++ /dev/null
@@ -1,687 +0,0 @@
-/* (C) 2017 by sysmocom s.f.m.c. GmbH
- * (C) 2018 by Harald Welte <laforge@gnumonks.org>
- * 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 <osmocom/core/utils.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/sigtran/sccp_helpers.h>
-#include <osmocom/sigtran/sccp_sap.h>
-#include <osmocom/sigtran/osmo_ss7.h>
-#include <osmocom/sigtran/protocol/m3ua.h>
-#include <osmocom/gsm/gsm0808.h>
-#include <osmocom/gsm/protocol/gsm_08_08.h>
-#include <osmocom/gsm/protocol/gsm_04_08.h>
-#include <osmocom/gsm/gsm0808_utils.h>
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/a_iface_bssap.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/mgcp_client/mgcp_client.h>
-#include <osmocom/core/byteswap.h>
-#include <osmocom/sccp/sccp_types.h>
-#include <osmocom/msc/a_reset.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/ran_conn.h>
-
-#include <errno.h>
-
-#define LOGPCONN LOG_RAN_CONN
-
-/* A pointer to the GSM network we work with. By the current paradigm,
- * there can only be one gsm_network per MSC. The pointer is set once
- * when calling a_init() */
-static struct gsm_network *gsm_network = NULL;
-
-/* A struct to track currently active connections. We need that information
- * to handle failure sitautions. In case of a problem, we must know which
- * connections are currently open and which BSC is responsible. We also need
- * the data to perform our connection checks (a_reset). All other logic will
- * look at the connection ids and addresses that are supplied by the
- * primitives */
-struct bsc_conn {
- struct llist_head list;
- uint32_t conn_id; /* Connection identifier */
- struct bsc_context *bsc;
-};
-
-/* Internal list with connections we currently maintain. This
- * list is of type struct bsc_conn (see above) */
-static LLIST_HEAD(active_connections);
-
-/* Record info of a new active connection in the active connection list */
-static void record_bsc_con(const void *ctx, struct bsc_context *bsc, uint32_t conn_id)
-{
- struct bsc_conn *conn;
-
- conn = talloc_zero(ctx, struct bsc_conn);
- OSMO_ASSERT(conn);
-
- conn->conn_id = conn_id;
- conn->bsc = bsc;
-
- llist_add_tail(&conn->list, &active_connections);
-}
-
-/* Delete info of a closed connection from the active connection list */
-void a_delete_bsc_con(uint32_t conn_id)
-{
- struct bsc_conn *conn;
- struct bsc_conn *conn_temp;
-
- llist_for_each_entry_safe(conn, conn_temp, &active_connections, list) {
- if (conn->conn_id == conn_id) {
- LOGP(DBSSAP, LOGL_DEBUG, "(conn%u) Removing A-interface conn\n", conn->conn_id);
- llist_del(&conn->list);
- talloc_free(conn);
- }
- }
-}
-
-/* Find a specified connection id */
-static struct bsc_conn *find_bsc_con(uint32_t conn_id)
-{
- struct bsc_conn *conn;
-
- /* Find the address for the current connection id */
- llist_for_each_entry(conn, &active_connections, list) {
- if (conn->conn_id == conn_id) {
- return conn;
- }
- }
-
- return NULL;
-}
-
-/* Check if a specified connection id has an active SCCP connection */
-static bool check_connection_active(uint32_t conn_id)
-{
- if (find_bsc_con(conn_id))
- return true;
- else
- return false;
-}
-
-/* Get the context for a specific calling (BSC) address */
-static struct bsc_context *get_bsc_context_by_sccp_addr(const struct osmo_sccp_addr *addr)
-{
- struct bsc_context *bsc_ctx;
- struct osmo_ss7_instance *ss7;
-
- if (!addr)
- return NULL;
-
- llist_for_each_entry(bsc_ctx, &gsm_network->a.bscs, list) {
- if (memcmp(&bsc_ctx->bsc_addr, addr, sizeof(*addr)) == 0)
- return bsc_ctx;
- }
-
- ss7 = osmo_ss7_instance_find(gsm_network->a.cs7_instance);
- OSMO_ASSERT(ss7);
- LOGP(DBSSAP, LOGL_NOTICE, "The calling BSC (%s) is unknown to this MSC ...\n",
- osmo_sccp_addr_name(ss7, addr));
- return NULL;
-}
-
-/* wrapper around osmo_sccp_tx_data_msg(): Transmit a fully encoded BSSAP (DTAP or BSSMAP) message */
-static int a_iface_tx_bssap(const struct ran_conn *conn, struct msgb *msg)
-{
- OSMO_ASSERT(conn);
- OSMO_ASSERT(conn->a.scu);
-
- LOGPCONN(conn, LOGL_DEBUG, "N-DATA.req(%s)\n", msgb_hexdump_l3(msg));
-
- /* some consistency checks to ensure we don't send invalid length */
- switch (msg->l3h[0]) {
- case BSSAP_MSG_DTAP:
- OSMO_ASSERT(msgb_l3len(msg) == msg->l3h[2] + 3);
- break;
- case BSSAP_MSG_BSS_MANAGEMENT:
- OSMO_ASSERT(msgb_l3len(msg) == msg->l3h[1] + 2);
- break;
- default:
- break;
- }
-
- return osmo_sccp_tx_data_msg(conn->a.scu, conn->a.conn_id, msg);
-}
-
-/* Send DTAP message via A-interface, take ownership of msg */
-int a_iface_tx_dtap(struct msgb *msg)
-{
- const struct ran_conn *conn;
- struct msgb *msg_resp;
-
- uint8_t link_id = OMSC_LINKID_CB(msg);
- OSMO_ASSERT(msg);
- conn = (struct ran_conn *)msg->dst;
- OSMO_ASSERT(conn);
-
- LOGPCONN(conn, LOGL_DEBUG, "Passing DTAP message (DLCI=0x%02x) from MSC to BSC\n", link_id);
-
- msg->l3h = msg->data;
- msg_resp = gsm0808_create_dtap(msg, link_id);
-
- /* gsm0808_create_dtap() has copied the data to msg_resp,
- * so msg has served its purpose now */
- msgb_free(msg);
-
- if (!msg_resp) {
- LOGPCONN(conn, LOGL_ERROR, "Unable to generate BSSMAP DTAP message!\n");
- return -EINVAL;
- }
-
- /* osmo_sccp_tx_data_msg() takes ownership of msg_resp */
- return a_iface_tx_bssap(conn, msg_resp);
-}
-
-/* Send Cipher mode command via A-interface */
-int a_iface_tx_cipher_mode(const struct ran_conn *conn,
- struct gsm0808_encrypt_info *ei, int include_imeisv)
-{
- /* TODO generalize for A- and Iu interfaces, don't name after 08.08 */
- struct msgb *msg_resp;
- uint8_t crm = 0x01;
-
- OSMO_ASSERT(conn);
- LOGPCONN(conn, LOGL_DEBUG, "Tx BSSMAP CIPHER MODE COMMAND to BSC, %u ciphers (%s)",
- ei->perm_algo_len, osmo_hexdump_nospc(ei->perm_algo, ei->perm_algo_len));
- LOGPC(DBSSAP, LOGL_DEBUG, " key %s\n", osmo_hexdump_nospc(ei->key, ei->key_len));
-
- msg_resp = gsm0808_create_cipher(ei, include_imeisv ? &crm : NULL);
- return a_iface_tx_bssap(conn, msg_resp);
-}
-
-/* Page a subscriber via A-interface */
-int a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac)
-{
- struct bsc_context *bsc_ctx;
- struct gsm0808_cell_id_list2 cil;
- struct msgb *msg;
- int page_count = 0;
- struct osmo_ss7_instance *ss7;
-
- OSMO_ASSERT(imsi);
-
- cil.id_discr = CELL_IDENT_LAC;
- cil.id_list[0].lac = lac;
- cil.id_list_len = 1;
-
- ss7 = osmo_ss7_instance_find(gsm_network->a.cs7_instance);
- OSMO_ASSERT(ss7);
-
- /* Deliver paging request to all known BSCs */
- llist_for_each_entry(bsc_ctx, &gsm_network->a.bscs, list) {
- if (a_reset_conn_ready(bsc_ctx->reset_fsm)) {
- LOGP(DBSSAP, LOGL_DEBUG,
- "Tx BSSMAP paging message from MSC %s to BSC %s (imsi=%s, tmsi=0x%08x, lac=%u)\n",
- osmo_sccp_addr_name(ss7, &bsc_ctx->msc_addr),
- osmo_sccp_addr_name(ss7, &bsc_ctx->bsc_addr), imsi, tmsi, lac);
- msg = gsm0808_create_paging2(imsi, &tmsi, &cil, NULL);
- osmo_sccp_tx_unitdata_msg(bsc_ctx->sccp_user,
- &bsc_ctx->msc_addr, &bsc_ctx->bsc_addr, msg);
- page_count++;
- } else {
- LOGP(DBSSAP, LOGL_DEBUG,
- "Connection down, dropping paging from MSC %s to BSC %s (imsi=%s, tmsi=0x%08x, lac=%u)\n",
- osmo_sccp_addr_name(ss7, &bsc_ctx->msc_addr),
- osmo_sccp_addr_name(ss7, &bsc_ctx->bsc_addr), imsi, tmsi, lac);
- }
- }
-
- if (page_count <= 0)
- LOGP(DBSSAP, LOGL_ERROR, "Could not deliver paging because none of the associated BSCs is available!\n");
-
- return page_count;
-}
-
-/* Convert speech version field */
-static uint8_t convert_speech_version_l3_to_A(int speech_ver)
-{
- /* The speech versions that are transmitted in the Bearer capability
- * information element, that is transmitted on the Layer 3 (CC)
- * use a different encoding than the permitted speech version
- * identifier, that is signalled in the channel type element on the A
- * interface. (See also 3GPP TS 48.008, 3.2.2.1 and 3GPP TS 24.008,
- * 10.5.103 */
-
- switch (speech_ver) {
- case GSM48_BCAP_SV_FR:
- return GSM0808_PERM_FR1;
- case GSM48_BCAP_SV_HR:
- return GSM0808_PERM_HR1;
- case GSM48_BCAP_SV_EFR:
- return GSM0808_PERM_FR2;
- case GSM48_BCAP_SV_AMR_F:
- return GSM0808_PERM_FR3;
- case GSM48_BCAP_SV_AMR_H:
- return GSM0808_PERM_HR3;
- case GSM48_BCAP_SV_AMR_OFW:
- return GSM0808_PERM_FR4;
- case GSM48_BCAP_SV_AMR_OHW:
- return GSM0808_PERM_HR4;
- case GSM48_BCAP_SV_AMR_FW:
- return GSM0808_PERM_FR5;
- case GSM48_BCAP_SV_AMR_OH:
- return GSM0808_PERM_HR6;
- }
-
- /* If nothing matches, tag the result as invalid */
- LOGP(DBSSAP, LOGL_ERROR, "Invalid permitted speech version: %d\n", speech_ver);
- return 0xFF;
-}
-
-/* Convert speech preference field */
-static uint8_t convert_speech_pref_l3_to_A(int radio)
-{
- /* The Radio channel requirement field that is transmitted in the
- * Bearer capability information element, that is transmitted on the
- * Layer 3 (CC) uses a different encoding than the Channel rate and
- * type field that is signalled in the channel type element on the A
- * interface. (See also 3GPP TS 48.008, 3.2.2.1 and 3GPP TS 24.008,
- * 10.5.102 */
-
- switch (radio) {
- case GSM48_BCAP_RRQ_FR_ONLY:
- return GSM0808_SPEECH_FULL_BM;
- case GSM48_BCAP_RRQ_DUAL_FR:
- return GSM0808_SPEECH_FULL_PREF;
- case GSM48_BCAP_RRQ_DUAL_HR:
- return GSM0808_SPEECH_HALF_PREF;
- }
-
- LOGP(DBSSAP, LOGL_ERROR, "Invalid radio channel preference: %d; defaulting to full rate.\n",
- radio);
- return GSM0808_SPEECH_FULL_BM;
-}
-
-/* Assemble the channel type field */
-static int enc_channel_type(struct gsm0808_channel_type *ct, const struct gsm_mncc_bearer_cap *bc)
-{
- unsigned int i;
- uint8_t sv;
- unsigned int count = 0;
- bool only_gsm_hr = true;
-
- OSMO_ASSERT(ct);
- OSMO_ASSERT(bc);
-
- ct->ch_indctr = GSM0808_CHAN_SPEECH;
-
- for (i = 0; i < ARRAY_SIZE(bc->speech_ver); i++) {
- if (bc->speech_ver[i] == -1)
- break;
- sv = convert_speech_version_l3_to_A(bc->speech_ver[i]);
- if (sv != 0xFF) {
- /* Detect if something else than
- * GSM HR V1 is supported */
- if (sv == GSM0808_PERM_HR2 ||
- sv == GSM0808_PERM_HR3 || sv == GSM0808_PERM_HR4 || sv == GSM0808_PERM_HR6)
- only_gsm_hr = false;
-
- ct->perm_spch[count] = sv;
- count++;
- }
- }
- ct->perm_spch_len = count;
-
- if (only_gsm_hr)
- /* Note: We must avoid the usage of GSM HR1 as this
- * codec only offers very poor audio quality. If the
- * MS only supports GSM HR1 (and full rate), and has
- * a preference for half rate. Then we will ignore the
- * preference and assume a preference for full rate. */
- ct->ch_rate_type = GSM0808_SPEECH_FULL_BM;
- else
- ct->ch_rate_type = convert_speech_pref_l3_to_A(bc->radio);
-
- if (count)
- return 0;
- else
- return -EINVAL;
-}
-
-/* Assemble the speech codec field */
-static int enc_speech_codec_list(struct gsm0808_speech_codec_list *scl, const struct gsm0808_channel_type *ct)
-{
- unsigned int i;
- int rc;
-
- memset(scl, 0, sizeof(*scl));
- for (i = 0; i < ct->perm_spch_len; i++) {
- rc = gsm0808_speech_codec_from_chan_type(&scl->codec[i], ct->perm_spch[i]);
- if (rc != 0)
- return -EINVAL;
- }
- scl->len = i;
-
- return 0;
-}
-
-/* Send assignment request via A-interface */
-int a_iface_tx_assignment(const struct gsm_trans *trans)
-{
- const struct ran_conn *conn;
- struct gsm0808_channel_type ct;
- struct gsm0808_speech_codec_list scl;
- struct msgb *msg;
- struct sockaddr_storage rtp_addr;
- struct sockaddr_in rtp_addr_in;
- int rc;
-
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- LOGPCONN(conn, LOGL_DEBUG, "Tx BSSMAP ASSIGNMENT COMMAND to BSC\n");
-
- /* Channel type */
- rc = enc_channel_type(&ct, &trans->bearer_cap);
- if (rc < 0) {
- LOGPCONN(conn, LOGL_ERROR, "Not sending Assignment to BSC: failed to generate channel type\n");
- return -EINVAL;
- }
-
- /* Speech codec list */
- rc = enc_speech_codec_list(&scl, &ct);
- if (rc < 0) {
- LOGPCONN(conn, LOGL_ERROR, "Not sending Assignment to BSC: failed to generate speech codec list\n");
- return -EINVAL;
- }
-
- /* Package RTP-Address data */
- memset(&rtp_addr_in, 0, sizeof(rtp_addr_in));
- rtp_addr_in.sin_family = AF_INET;
- rtp_addr_in.sin_port = osmo_htons(conn->rtp.local_port_ran);
- rtp_addr_in.sin_addr.s_addr = inet_addr(conn->rtp.local_addr_ran);
-
- if (rtp_addr_in.sin_addr.s_addr == INADDR_NONE) {
- LOGPCONN(conn, LOGL_ERROR, "Invalid RTP-Address -- assignment not sent!\n");
- return -EINVAL;
- }
- if (rtp_addr_in.sin_port == 0) {
- LOGPCONN(conn, LOGL_ERROR, "Invalid RTP-Port -- assignment not sent!\n");
- return -EINVAL;
- }
-
- memset(&rtp_addr, 0, sizeof(rtp_addr));
- memcpy(&rtp_addr, &rtp_addr_in, sizeof(rtp_addr_in));
-
- msg = gsm0808_create_ass(&ct, NULL, &rtp_addr, &scl, NULL);
- return a_iface_tx_bssap(conn, msg);
-}
-
-/* Send clear command via A-interface */
-int a_iface_tx_clear_cmd(const struct ran_conn *conn)
-{
- struct msgb *msg;
- struct vlr_subscr *vsub = conn->vsub;
- bool csfb_ind = false;
-
- LOGPCONN(conn, LOGL_INFO, "Tx BSSMAP CLEAR COMMAND to BSC\n");
-
- if (vsub && vsub->sgs_fsm->state == SGS_UE_ST_ASSOCIATED)
- csfb_ind = true;
-
- msg = gsm0808_create_clear_command2(GSM0808_CAUSE_CALL_CONTROL, csfb_ind);
- return a_iface_tx_bssap(conn, msg);
-}
-
-int a_iface_tx_classmark_request(const struct ran_conn *conn)
-{
- struct msgb *msg;
-
- LOGPCONN(conn, LOGL_INFO, "Tx BSSMAP CLASSMARK REQUEST to BSC\n");
-
- msg = gsm0808_create_classmark_request();
- return a_iface_tx_bssap(conn, msg);
-}
-
-/* Callback function: Close all open connections */
-static void a_reset_cb(const void *priv)
-{
- struct msgb *msg;
- struct bsc_context *bsc_ctx = (struct bsc_context*) priv;
- struct osmo_ss7_instance *ss7;
-
- /* Skip if the A interface is not properly initalized yet */
- if (!gsm_network)
- return;
-
- /* Clear all now orphaned RAN connections */
- a_clear_all(bsc_ctx->sccp_user, &bsc_ctx->bsc_addr);
-
- /* Send reset to the remote BSC */
- ss7 = osmo_ss7_instance_find(gsm_network->a.cs7_instance);
- OSMO_ASSERT(ss7);
- LOGP(DBSSAP, LOGL_NOTICE, "Tx BSSMAP RESET to BSC %s\n", osmo_sccp_addr_name(ss7, &bsc_ctx->bsc_addr));
- msg = gsm0808_create_reset();
- osmo_sccp_tx_unitdata_msg(bsc_ctx->sccp_user, &bsc_ctx->msc_addr,
- &bsc_ctx->bsc_addr, msg);
-}
-
-/* Add a new BSC connection to our internal list with known BSCs */
-static struct bsc_context *add_bsc(const struct osmo_sccp_addr *msc_addr,
- const struct osmo_sccp_addr *bsc_addr, struct osmo_sccp_user *scu)
-{
- struct bsc_context *bsc_ctx;
- struct osmo_ss7_instance *ss7;
-
- ss7 = osmo_ss7_instance_find(gsm_network->a.cs7_instance);
- OSMO_ASSERT(ss7);
- LOGP(DBSSAP, LOGL_NOTICE, "Adding new BSC connection for BSC %s...\n", osmo_sccp_addr_name(ss7, bsc_addr));
-
- /* Generate and fill up a new bsc context */
- bsc_ctx = talloc_zero(gsm_network, struct bsc_context);
- OSMO_ASSERT(bsc_ctx);
- memcpy(&bsc_ctx->bsc_addr, bsc_addr, sizeof(*bsc_addr));
- memcpy(&bsc_ctx->msc_addr, msc_addr, sizeof(*msc_addr));
- bsc_ctx->sccp_user = scu;
- llist_add_tail(&bsc_ctx->list, &gsm_network->a.bscs);
-
- return bsc_ctx;
-}
-
-/* start the BSSMAP RESET fsm */
-void a_start_reset(struct bsc_context *bsc_ctx, bool already_connected)
-{
- char bsc_name[32];
- OSMO_ASSERT(bsc_ctx->reset_fsm == NULL);
- /* Start reset procedure to make the new connection active */
- snprintf(bsc_name, sizeof(bsc_name), "bsc-%i", bsc_ctx->bsc_addr.pc);
- bsc_ctx->reset_fsm = a_reset_alloc(bsc_ctx, bsc_name, a_reset_cb, bsc_ctx, already_connected);
-}
-
-/* determine if given msg is BSSMAP RESET related (true) or not (false) */
-static bool bssmap_is_reset(struct msgb *msg)
-{
- struct bssmap_header *bs = (struct bssmap_header *)msgb_l2(msg);
-
- if (msgb_l2len(msg) < sizeof(*bs))
- return false;
-
- if (bs->type != BSSAP_MSG_BSS_MANAGEMENT)
- return false;
-
- if (msg->l2h[sizeof(*bs)] == BSS_MAP_MSG_RESET)
- return true;
-
- if (msg->l2h[sizeof(*bs)] == BSS_MAP_MSG_RESET_ACKNOWLEDGE)
- return true;
-
- return false;
-}
-
-/* Callback function, called by the SSCP stack when data arrives */
-static int sccp_sap_up(struct osmo_prim_hdr *oph, void *_scu)
-{
- struct osmo_sccp_user *scu = _scu;
- struct osmo_scu_prim *scu_prim = (struct osmo_scu_prim *)oph;
- int rc = 0;
- struct a_conn_info a_conn_info;
- struct bsc_conn *bsc_con;
-
- memset(&a_conn_info, 0, sizeof(a_conn_info));
- a_conn_info.network = gsm_network;
-
- switch (OSMO_PRIM_HDR(&scu_prim->oph)) {
- case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_INDICATION):
- /* Handle inbound connection indication */
- a_conn_info.conn_id = scu_prim->u.connect.conn_id;
- a_conn_info.bsc = get_bsc_context_by_sccp_addr(&scu_prim->u.unitdata.calling_addr);
- if (!a_conn_info.bsc) {
- /* We haven't heard from this BSC before, allocate it */
- a_conn_info.bsc = add_bsc(&scu_prim->u.connect.called_addr,
- &scu_prim->u.connect.calling_addr, scu);
- a_start_reset(a_conn_info.bsc, false);
- } else {
- /* This BSC is already known to us, check if we have been through reset yet */
- if (a_reset_conn_ready(a_conn_info.bsc->reset_fsm) == false) {
- LOGP(DBSSAP, LOGL_NOTICE, "Refusing N-CONNECT.ind(%u, %s), BSC not reset yet\n",
- scu_prim->u.connect.conn_id, msgb_hexdump_l2(oph->msg));
- rc = osmo_sccp_tx_disconn(scu, a_conn_info.conn_id, &a_conn_info.bsc->msc_addr,
- SCCP_RETURN_CAUSE_UNQUALIFIED);
- break;
- }
-
- osmo_sccp_tx_conn_resp(scu, scu_prim->u.connect.conn_id, &scu_prim->u.connect.called_addr, NULL, 0);
- if (msgb_l2len(oph->msg) > 0) {
- LOGP(DBSSAP, LOGL_DEBUG, "N-CONNECT.ind(%u, %s)\n",
- scu_prim->u.connect.conn_id, msgb_hexdump_l2(oph->msg));
- rc = a_sccp_rx_dt(scu, &a_conn_info, oph->msg);
- } else {
- LOGP(DBSSAP, LOGL_DEBUG, "N-CONNECT.ind(%u)\n", scu_prim->u.connect.conn_id);
- rc = -ENODATA;
- }
-
- if (rc < 0) {
- /* initial message (COMPL L3) caused some error, we didn't allocate
- * a subscriber_conn and must close the connection again */
- rc = osmo_sccp_tx_disconn(scu, a_conn_info.conn_id,
- &a_conn_info.bsc->msc_addr,
- SCCP_RETURN_CAUSE_UNQUALIFIED);
- } else
- record_bsc_con(scu, a_conn_info.bsc, scu_prim->u.connect.conn_id);
- }
- break;
-
- case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION):
- /* Handle incoming connection oriented data */
- bsc_con = find_bsc_con(scu_prim->u.data.conn_id);
- if (!bsc_con) {
- LOGP(DBSSAP, LOGL_ERROR, "N-DATA.ind(%u, %s) for unknown conn_id\n",
- scu_prim->u.data.conn_id, msgb_hexdump_l2(oph->msg));
- break;
- }
- a_conn_info.conn_id = scu_prim->u.data.conn_id;
- a_conn_info.bsc = bsc_con->bsc;
- LOGP(DBSSAP, LOGL_DEBUG, "N-DATA.ind(%u, %s)\n",
- scu_prim->u.data.conn_id, msgb_hexdump_l2(oph->msg));
- a_sccp_rx_dt(scu, &a_conn_info, oph->msg);
- break;
-
- case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
- /* Handle inbound UNITDATA */
-
- /* Get BSC context, create a new one if necessary */
- a_conn_info.bsc = get_bsc_context_by_sccp_addr(&scu_prim->u.unitdata.calling_addr);
- if (!a_conn_info.bsc) {
- /* We haven't heard from this BSC before, allocate it */
- a_conn_info.bsc = add_bsc(&scu_prim->u.unitdata.called_addr,
- &scu_prim->u.unitdata.calling_addr, scu);
- /* Make sure that reset procedure is started */
- a_start_reset(a_conn_info.bsc, false);
- }
-
- /* As long as we are in the reset phase, only reset related BSSMAP messages may pass
- * beond here. */
- if (!bssmap_is_reset(oph->msg) && a_reset_conn_ready(a_conn_info.bsc->reset_fsm) == false) {
- LOGP(DBSSAP, LOGL_NOTICE, "Ignoring N-UNITDATA.ind(%s), BSC not reset yet\n",
- msgb_hexdump_l2(oph->msg));
- break;
- }
-
- DEBUGP(DBSSAP, "N-UNITDATA.ind(%s)\n", msgb_hexdump_l2(oph->msg));
- a_sccp_rx_udt(scu, &a_conn_info, oph->msg);
- break;
-
- default:
- LOGP(DBSSAP, LOGL_ERROR, "Unhandled SIGTRAN operation %s on primitive %u\n",
- get_value_string(osmo_prim_op_names, oph->operation), oph->primitive);
- break;
- }
-
- /* We didn't transfer msgb ownership to any downstream functions so we rely on
- * this single/central location to free() the msgb wrapping the primitive */
- msgb_free(oph->msg);
- return rc;
-}
-
-/* Clear all RAN connections on a specified BSC */
-void a_clear_all(struct osmo_sccp_user *scu, const struct osmo_sccp_addr *bsc_addr)
-{
- struct ran_conn *conn;
- struct ran_conn *conn_temp;
- struct gsm_network *network = gsm_network;
-
- OSMO_ASSERT(scu);
- OSMO_ASSERT(bsc_addr);
-
- llist_for_each_entry_safe(conn, conn_temp, &network->ran_conns, entry) {
- /* Clear only A connections and connections that actually
- * belong to the specified BSC */
- if (conn->via_ran == OSMO_RAT_GERAN_A && memcmp(bsc_addr, &conn->a.bsc_addr, sizeof(conn->a.bsc_addr)) == 0) {
- uint32_t conn_id = conn->a.conn_id;
- LOGPCONN(conn, LOGL_NOTICE, "Dropping orphaned RAN connection\n");
- /* This call will/may talloc_free(conn), so we must save conn_id above */
- ran_conn_clear_request(conn, GSM48_CC_CAUSE_SWITCH_CONG);
-
- /* If there is still an SCCP connection active, remove it now */
- if (check_connection_active(conn_id)) {
- osmo_sccp_tx_disconn(scu, conn_id, bsc_addr,
- SCCP_RELEASE_CAUSE_END_USER_ORIGINATED);
- a_delete_bsc_con(conn_id);
- }
- }
- }
-}
-
-/* Initalize A interface connection between to MSC and BSC */
-int a_init(struct osmo_sccp_instance *sccp, struct gsm_network *network)
-{
- OSMO_ASSERT(sccp);
- OSMO_ASSERT(network);
-
- /* FIXME: Remove hardcoded parameters, use parameters in parameter list */
- LOGP(DBSSAP, LOGL_NOTICE, "Initalizing SCCP connection to stp...\n");
-
- /* Set GSM network variable, there can only be
- * one network by design */
- if (gsm_network != NULL) {
- OSMO_ASSERT(gsm_network == network);
- } else
- gsm_network = network;
-
- /* SCCP Protocol stack */
- osmo_sccp_user_bind(sccp, "OsmoMSC-A", sccp_sap_up, SCCP_SSN_BSSAP);
-
- return 0;
-}
diff --git a/src/libmsc/a_iface_bssap.c b/src/libmsc/a_iface_bssap.c
deleted file mode 100644
index cb245b805..000000000
--- a/src/libmsc/a_iface_bssap.c
+++ /dev/null
@@ -1,730 +0,0 @@
-/* (C) 2017 by Sysmocom s.f.m.c. GmbH
- * (C) 2018 by Harald Welte <laforge@gnumonks.org>
- * 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 <osmocom/core/utils.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/sigtran/sccp_helpers.h>
-#include <osmocom/sccp/sccp_types.h>
-#include <osmocom/gsm/gsm0808.h>
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/gsm/gsm0808_utils.h>
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/gsm_data.h>
-#include <osmocom/msc/a_iface_bssap.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/core/byteswap.h>
-#include <osmocom/msc/a_reset.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/msc_mgcp.h>
-#include <osmocom/msc/ran_conn.h>
-
-#include <errno.h>
-
-#define IP_V4_ADDR_LEN 4
-
-#define LOGPCONN LOG_RAN_CONN
-
-/*
- * Helper functions to lookup and allocate subscribers
- */
-
-/* Allocate a new RAN connection */
-static struct ran_conn *ran_conn_allocate_a(const struct a_conn_info *a_conn_info,
- struct gsm_network *network,
- uint16_t lac, struct osmo_sccp_user *scu, int conn_id)
-{
- struct ran_conn *conn;
-
- LOGP(DMSC, LOGL_DEBUG, "Allocating A-Interface RAN conn: lac %i, conn_id %i\n", lac, conn_id);
-
- conn = ran_conn_alloc(network, OSMO_RAT_GERAN_A, lac);
- if (!conn)
- return NULL;
-
- conn->a.conn_id = conn_id;
- conn->a.scu = scu;
-
- /* Also backup the calling address of the BSC, this allows us to
- * identify later which BSC is responsible for this RAN connection */
- memcpy(&conn->a.bsc_addr, &a_conn_info->bsc->bsc_addr, sizeof(conn->a.bsc_addr));
-
- LOGPCONN(conn, LOGL_DEBUG, "A-Interface RAN connection successfully allocated!\n");
- return conn;
-}
-
-/* Return an existing A RAN connection record for the given
- * connection IDs, or return NULL if not found. */
-static struct ran_conn *ran_conn_lookup_a(const struct gsm_network *network, int conn_id)
-{
- struct ran_conn *conn;
-
- OSMO_ASSERT(network);
-
- DEBUGP(DMSC, "Looking for A subscriber: conn_id %i\n", conn_id);
-
- /* FIXME: log_subscribers() is defined in iucs.c as static inline, if
- * maybe this function should be public to reach it from here? */
- /* log_subscribers(network); */
-
- llist_for_each_entry(conn, &network->ran_conns, entry) {
- if (conn->via_ran == OSMO_RAT_GERAN_A && conn->a.conn_id == conn_id) {
- LOGPCONN(conn, LOGL_DEBUG, "Found A subscriber for conn_id %i\n", conn_id);
- return conn;
- }
- }
- DEBUGP(DMSC, "No A subscriber found for conn_id %i\n", conn_id);
- return NULL;
-}
-
-/*
- * BSSMAP handling for UNITDATA
- */
-
-/* Endpoint to handle BSSMAP reset */
-static void bssmap_rx_reset(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
-{
- struct gsm_network *network = a_conn_info->network;
- struct osmo_ss7_instance *ss7;
-
- ss7 = osmo_ss7_instance_find(network->a.cs7_instance);
- OSMO_ASSERT(ss7);
-
- LOGP(DBSSAP, LOGL_NOTICE, "Rx BSSMAP RESET from BSC %s, sending RESET ACK\n",
- osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));
- osmo_sccp_tx_unitdata_msg(scu, &a_conn_info->bsc->msc_addr, &a_conn_info->bsc->bsc_addr,
- gsm0808_create_reset_ack());
-
- /* Make sure all orphand RAN connections will be cleard */
- a_clear_all(scu, &a_conn_info->bsc->bsc_addr);
-
- if (!a_conn_info->bsc->reset_fsm)
- a_start_reset(a_conn_info->bsc, true);
-
- /* Treat an incoming RESET like an ACK to any RESET request we may have just sent.
- * After all, what we wanted is the A interface to be reset, which we now know has happened. */
- a_reset_ack_confirm(a_conn_info->bsc->reset_fsm);
-}
-
-/* Endpoint to handle BSSMAP reset acknowlegement */
-static void bssmap_rx_reset_ack(const struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info,
- struct msgb *msg)
-{
-
- struct gsm_network *network = a_conn_info->network;
- struct osmo_ss7_instance *ss7;
-
- ss7 = osmo_ss7_instance_find(network->a.cs7_instance);
- OSMO_ASSERT(ss7);
-
- if (a_conn_info->bsc->reset_fsm == NULL) {
- LOGP(DBSSAP, LOGL_ERROR, "Received RESET ACK from an unknown BSC %s, ignoring...\n",
- osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));
- return;
- }
-
- LOGP(DBSSAP, LOGL_NOTICE, "Received RESET ACK from BSC %s\n",
- osmo_sccp_addr_name(ss7, &a_conn_info->bsc->bsc_addr));
-
- /* Confirm that we managed to get the reset ack message
- * towards the connection reset logic */
- a_reset_ack_confirm(a_conn_info->bsc->reset_fsm);
-}
-
-/* Handle UNITDATA BSSMAP messages */
-static void bssmap_rcvmsg_udt(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
-{
- /* Note: When in the MSC role, RESET ACK is the only valid message that
- * can be received via UNITDATA */
-
- if (msgb_l3len(msg) < 1) {
- LOGP(DBSSAP, LOGL_NOTICE, "Error: No data received -- discarding message!\n");
- return;
- }
-
- LOGP(DBSSAP, LOGL_DEBUG, "Rx BSSMAP UDT %s\n", gsm0808_bssmap_name(msg->l3h[0]));
-
- switch (msg->l3h[0]) {
- case BSS_MAP_MSG_RESET:
- bssmap_rx_reset(scu, a_conn_info, msg);
- break;
- case BSS_MAP_MSG_RESET_ACKNOWLEDGE:
- bssmap_rx_reset_ack(scu, a_conn_info, msg);
- break;
- default:
- LOGP(DBSSAP, LOGL_NOTICE, "Unimplemented message format: %s -- message discarded!\n",
- gsm0808_bssmap_name(msg->l3h[0]));
- }
-}
-
-/* Receive incoming connection less data messages via sccp */
-void a_sccp_rx_udt(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
-{
- /* Note: The only valid message type that can be received
- * via UNITDATA are BSS Management messages */
- struct bssmap_header *bs;
-
- OSMO_ASSERT(scu);
- OSMO_ASSERT(a_conn_info);
- OSMO_ASSERT(msg);
-
- LOGP(DBSSAP, LOGL_DEBUG, "Rx BSSMAP UDT: %s\n", msgb_hexdump_l2(msg));
-
- if (msgb_l2len(msg) < sizeof(*bs)) {
- LOGP(DBSSAP, LOGL_ERROR, "Error: Header is too short -- discarding message!\n");
- return;
- }
-
- bs = (struct bssmap_header *)msgb_l2(msg);
- if (bs->length < msgb_l2len(msg) - sizeof(*bs)) {
- LOGP(DBSSAP, LOGL_ERROR, "Error: Message is too short -- discarding message!\n");
- return;
- }
-
- switch (bs->type) {
- case BSSAP_MSG_BSS_MANAGEMENT:
- msg->l3h = &msg->l2h[sizeof(struct bssmap_header)];
- bssmap_rcvmsg_udt(scu, a_conn_info, msg);
- break;
- default:
- LOGP(DBSSAP, LOGL_ERROR,
- "Error: Unimplemented message type: %s -- message discarded!\n", gsm0808_bssmap_name(bs->type));
- }
-}
-
-/*
- * BSSMAP handling for connection oriented data
- */
-
-/* Endpoint to handle BSSMAP clear request */
-static int bssmap_rx_clear_rqst(struct ran_conn *conn,
- struct msgb *msg, struct tlv_parsed *tp)
-{
- uint8_t cause;
-
- LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR REQUEST\n");
-
- if (!TLVP_PRESENT(tp, GSM0808_IE_CAUSE)) {
- LOGP(DBSSAP, LOGL_ERROR, "Cause code is missing -- discarding message!\n");
- return -EINVAL;
- }
- cause = TLVP_VAL(tp, GSM0808_IE_CAUSE)[0];
-
- ran_conn_mo_close(conn, cause);
-
- return 0;
-}
-
-/* Endpoint to handle BSSMAP clear complete */
-static int bssmap_rx_clear_complete(struct osmo_sccp_user *scu,
- const struct a_conn_info *a_conn_info,
- struct ran_conn *conn)
-{
- int rc;
-
- LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP CLEAR COMPLETE, releasing SCCP connection\n");
-
- if (conn)
- ran_conn_rx_bssmap_clear_complete(conn);
-
- rc = osmo_sccp_tx_disconn(scu, a_conn_info->conn_id,
- NULL, SCCP_RELEASE_CAUSE_END_USER_ORIGINATED);
-
- /* Remove the record from the list with active connections. */
- a_delete_bsc_con(a_conn_info->conn_id);
-
- return rc;
-}
-
-/* Endpoint to handle layer 3 complete messages */
-static int bssmap_rx_l3_compl(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info,
- struct msgb *msg, struct tlv_parsed *tp)
-{
- struct gsm0808_cell_id_list2 cil;
- uint16_t lac = 0;
- uint8_t data_length;
- const uint8_t *data;
- struct gsm_network *network = a_conn_info->network;
- struct ran_conn *conn;
-
- LOGP(DBSSAP, LOGL_INFO, "Rx BSSMAP COMPLETE L3 INFO (conn_id=%i)\n", a_conn_info->conn_id);
-
- if (!TLVP_PRESENT(tp, GSM0808_IE_CELL_IDENTIFIER)) {
- LOGP(DBSSAP, LOGL_ERROR, "Mandatory CELL IDENTIFIER not present -- discarding message!\n");
- return -EINVAL;
- }
- if (!TLVP_PRESENT(tp, GSM0808_IE_LAYER_3_INFORMATION)) {
- LOGP(DBSSAP, LOGL_ERROR, "Mandatory LAYER 3 INFORMATION not present -- discarding message!\n");
- return -EINVAL;
- }
-
- /* Parse Cell ID element -- this should yield a cell identifier "list" with 1 element. */
-
- data_length = TLVP_LEN(tp, GSM0808_IE_CELL_IDENTIFIER);
- data = TLVP_VAL(tp, GSM0808_IE_CELL_IDENTIFIER);
- if (gsm0808_dec_cell_id_list2(&cil, data, data_length) < 0 || cil.id_list_len != 1) {
- LOGP(DBSSAP, LOGL_ERROR,
- "Unable to parse element CELL IDENTIFIER -- discarding message!\n");
- return -EINVAL;
- }
-
- /* Determine the LAC which we will use for this subscriber. */
- switch (cil.id_discr) {
- case CELL_IDENT_WHOLE_GLOBAL: {
- const struct osmo_cell_global_id *id = &cil.id_list[0].global;
- if (osmo_plmn_cmp(&id->lai.plmn, &network->plmn) != 0) {
- LOGP(DBSSAP, LOGL_ERROR,
- "WHOLE GLOBAL CELL IDENTIFIER does not match network MCC/MNC -- discarding message!\n");
- return -EINVAL;
- }
- lac = id->lai.lac;
- break;
- }
- case CELL_IDENT_LAC_AND_CI: {
- const struct osmo_lac_and_ci_id *id = &cil.id_list[0].lac_and_ci;
- lac = id->lac;
- break;
- }
- case CELL_IDENT_LAI_AND_LAC: {
- const struct osmo_location_area_id *id = &cil.id_list[0].lai_and_lac;
- if (osmo_plmn_cmp(&id->plmn, &network->plmn) != 0) {
- LOGP(DBSSAP, LOGL_ERROR,
- "LAI AND LAC CELL IDENTIFIER does not match network MCC/MNC -- discarding message!\n");
- return -EINVAL;
- }
- lac = id->lac;
- break;
- }
- case CELL_IDENT_LAC:
- lac = cil.id_list[0].lac;
- break;
-
- case CELL_IDENT_CI:
- case CELL_IDENT_NO_CELL:
- case CELL_IDENT_BSS:
- LOGP(DBSSAP, LOGL_ERROR,
- "CELL IDENTIFIER does not specify a LAC -- discarding message!\n");
- return -EINVAL;
-
- default:
- LOGP(DBSSAP, LOGL_ERROR,
- "Unable to parse element CELL IDENTIFIER (unknown cell identification discriminator 0x%x) "
- "-- discarding message!\n", cil.id_discr);
- return -EINVAL;
- }
-
- /* Parse Layer 3 Information element */
- msg->l3h = (uint8_t*)TLVP_VAL(tp, GSM0808_IE_LAYER_3_INFORMATION);
- msgb_l3trim(msg, TLVP_LEN(tp, GSM0808_IE_LAYER_3_INFORMATION));
-
- if (msgb_l3len(msg) < sizeof(struct gsm48_hdr)) {
- LOGP(DBSSAP, LOGL_ERROR, "COMPL_L3 with too short L3 (%d) -- discarding\n",
- msgb_l3len(msg));
- return -ENODATA;
- }
-
- /* Create new subscriber context */
- conn = ran_conn_allocate_a(a_conn_info, network, lac, scu, a_conn_info->conn_id);
-
- /* Handover location update to the MSC code */
- ran_conn_compl_l3(conn, msg, 0);
- return 0;
-}
-
-/* Endpoint to handle BSSMAP classmark update */
-static int bssmap_rx_classmark_upd(struct ran_conn *conn, struct msgb *msg,
- struct tlv_parsed *tp)
-{
- const uint8_t *cm2 = NULL;
- const uint8_t *cm3 = NULL;
- uint8_t cm2_len = 0;
- uint8_t cm3_len = 0;
-
- LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP CLASSMARK UPDATE\n");
-
- if (!TLVP_PRESENT(tp, GSM0808_IE_CLASSMARK_INFORMATION_T2)) {
- LOGPCONN(conn, LOGL_ERROR, "Mandatory Classmark Information Type 2 not present -- discarding message!\n");
- return -EINVAL;
- }
-
- cm2 = TLVP_VAL(tp, GSM0808_IE_CLASSMARK_INFORMATION_T2);
- cm2_len = TLVP_LEN(tp, GSM0808_IE_CLASSMARK_INFORMATION_T2);
-
- if (TLVP_PRESENT(tp, GSM0808_IE_CLASSMARK_INFORMATION_T3)) {
- cm3 = TLVP_VAL(tp, GSM0808_IE_CLASSMARK_INFORMATION_T3);
- cm3_len = TLVP_LEN(tp, GSM0808_IE_CLASSMARK_INFORMATION_T3);
- }
-
- /* Inform MSC about the classmark change */
- ran_conn_classmark_chg(conn, cm2, cm2_len, cm3, cm3_len);
-
- return 0;
-}
-
-/* Endpoint to handle BSSMAP cipher mode complete */
-static int bssmap_rx_ciph_compl(struct ran_conn *conn, struct msgb *msg,
- struct tlv_parsed *tp)
-{
- /* FIXME: The field GSM0808_IE_LAYER_3_MESSAGE_CONTENTS is optional by
- * means of the specification. So there can be messages without L3 info.
- * In this case, the code will crash becrause ran_conn_cipher_mode_compl()
- * is not able to deal with msg = NULL and apperently
- * ran_conn_cipher_mode_compl() was never meant to be used without L3 data.
- * This needs to be discussed further! */
-
- uint8_t alg_id = 1;
- struct rate_ctr_group *msc = conn->network->msc_ctrs;
-
- LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP CIPHER MODE COMPLETE\n");
-
- if (TLVP_PRESENT(tp, GSM0808_IE_CHOSEN_ENCR_ALG)) {
- alg_id = TLVP_VAL(tp, GSM0808_IE_CHOSEN_ENCR_ALG)[0] - 1;
- }
-
- if (TLVP_PRESENT(tp, GSM0808_IE_LAYER_3_MESSAGE_CONTENTS)) {
- msg->l3h = (uint8_t*)TLVP_VAL(tp, GSM0808_IE_LAYER_3_MESSAGE_CONTENTS);
- msgb_l3trim(msg, TLVP_LEN(tp, GSM0808_IE_LAYER_3_MESSAGE_CONTENTS));
- } else {
- msg = NULL;
- }
-
- rate_ctr_inc(&msc->ctr[MSC_CTR_BSSMAP_CIPHER_MODE_COMPLETE]);
-
- /* Hand over cipher mode complete message to the MSC */
- ran_conn_cipher_mode_compl(conn, msg, alg_id);
-
- return 0;
-}
-
-/* Endpoint to handle BSSMAP cipher mode reject, 3GPP TS 08.08 §3.2.1.48 */
-static int bssmap_rx_ciph_rej(struct ran_conn *conn,
- struct msgb *msg, struct tlv_parsed *tp)
-{
- int rc;
- enum gsm0808_cause cause;
- struct rate_ctr_group *msc = conn->network->msc_ctrs;
-
- LOGPCONN(conn, LOGL_NOTICE, "RX BSSMAP CIPHER MODE REJECT\n");
-
- rc = gsm0808_get_cipher_reject_cause(tp);
- if (rc < 0) {
- LOGPCONN(conn, LOGL_ERROR, "failed (%s) to extract Cause from Cipher mode reject: %s\n",
- strerror(-rc), msgb_hexdump(msg));
- return rc;
- }
-
- rate_ctr_inc(&msc->ctr[MSC_CTR_BSSMAP_CIPHER_MODE_REJECT]);
- cause = (enum gsm0808_cause)rc;
- LOGPCONN(conn, LOGL_NOTICE, "Cipher mode rejection cause: %s\n", gsm0808_cause_name(cause));
-
- /* FIXME: Can we do something meaningful here? e.g. report to the
- * msc code somehow that the cipher mode command has failed. */
-
- return 0;
-}
-
-/* Endpoint to handle BSSMAP assignment failure */
-static int bssmap_rx_ass_fail(struct ran_conn *conn, struct msgb *msg,
- struct tlv_parsed *tp)
-{
- uint8_t cause;
- uint8_t *rr_cause_ptr = NULL;
- uint8_t rr_cause;
-
- LOGPCONN(conn, LOGL_NOTICE, "Rx BSSMAP ASSIGNMENT FAILURE message\n");
-
- if (!TLVP_PRESENT(tp, GSM0808_IE_CAUSE)) {
- LOGPCONN(conn, LOGL_ERROR, "Cause code is missing -- discarding message!\n");
- return -EINVAL;
- }
- cause = TLVP_VAL(tp, GSM0808_IE_CAUSE)[0];
-
- if (TLVP_PRESENT(tp, GSM0808_IE_RR_CAUSE)) {
- rr_cause = TLVP_VAL(tp, GSM0808_IE_RR_CAUSE)[0];
- rr_cause_ptr = &rr_cause;
- }
-
- /* FIXME: In AoIP, the Assignment failure will carry also an optional
- * Codec List (BSS Supported) element. It has to be discussed if we
- * can ignore this element. If not, The ran_conn_assign_fail() function
- * call has to change. However ran_conn_assign_fail() does nothing in the
- * end. So probably we can just leave it as it is. Even for AoIP */
-
- /* Inform the MSC about the assignment failure event */
- ran_conn_assign_fail(conn, cause, rr_cause_ptr);
-
- return 0;
-}
-
-/* Endpoint to handle sapi "n" reject */
-static int bssmap_rx_sapi_n_rej(struct ran_conn *conn, struct msgb *msg,
- struct tlv_parsed *tp)
-{
- uint8_t dlci;
-
- LOGPCONN(conn, LOGL_NOTICE, "Rx BSSMAP SAPI-N-REJECT message\n");
-
- /* Note: The MSC code seems not to care about the cause code, but by
- * the specification it is mandatory, so we check its presence. See
- * also 3GPP TS 48.008 3.2.1.34 SAPI "n" REJECT */
- if (!TLVP_PRESENT(tp, GSM0808_IE_CAUSE)) {
- LOGPCONN(conn, LOGL_ERROR, "Cause code is missing -- discarding message!\n");
- return -EINVAL;
- }
- if (!TLVP_PRESENT(tp, GSM0808_IE_DLCI)) {
- LOGPCONN(conn, LOGL_ERROR, "DLCI is missing -- discarding message!\n");
- return -EINVAL;
- }
- dlci = TLVP_VAL(tp, GSM0808_IE_DLCI)[0];
-
- /* Inform the MSC about the sapi "n" reject event */
- ran_conn_sapi_n_reject(conn, dlci);
-
- return 0;
-}
-
-/* Use the speech codec info we go with the assignment complete to dtermine
- * which codec we will signal to the MGW */
-static enum mgcp_codecs mgcp_codec_from_sc(struct gsm0808_speech_codec *sc)
-{
- switch (sc->type) {
- case GSM0808_SCT_FR1:
- return CODEC_GSM_8000_1;
- break;
- case GSM0808_SCT_FR2:
- return CODEC_GSMEFR_8000_1;
- break;
- case GSM0808_SCT_FR3:
- return CODEC_AMR_8000_1;
- break;
- case GSM0808_SCT_FR4:
- return CODEC_AMRWB_16000_1;
- break;
- case GSM0808_SCT_FR5:
- return CODEC_AMRWB_16000_1;
- break;
- case GSM0808_SCT_HR1:
- return CODEC_GSMHR_8000_1;
- break;
- case GSM0808_SCT_HR3:
- return CODEC_AMR_8000_1;
- break;
- case GSM0808_SCT_HR4:
- return CODEC_AMRWB_16000_1;
- break;
- case GSM0808_SCT_HR6:
- return CODEC_AMRWB_16000_1;
- break;
- default:
- return CODEC_PCMU_8000_1;
- break;
- }
-}
-
-/* Endpoint to handle assignment complete */
-static int bssmap_rx_ass_compl(struct ran_conn *conn, struct msgb *msg,
- struct tlv_parsed *tp)
-{
- struct sockaddr_storage rtp_addr;
- struct gsm0808_speech_codec sc;
- struct sockaddr_in *rtp_addr_in;
- int rc;
-
- LOGPCONN(conn, LOGL_INFO, "Rx BSSMAP ASSIGNMENT COMPLETE message\n");
-
- if (!TLVP_PRESENT(tp, GSM0808_IE_AOIP_TRASP_ADDR)) {
- LOGPCONN(conn, LOGL_ERROR, "AoIP transport identifier missing -- discarding message!\n");
- return -EINVAL;
- }
-
- /* Decode AoIP transport address element */
- rc = gsm0808_dec_aoip_trasp_addr(&rtp_addr, TLVP_VAL(tp, GSM0808_IE_AOIP_TRASP_ADDR),
- TLVP_LEN(tp, GSM0808_IE_AOIP_TRASP_ADDR));
- if (rc < 0) {
- LOGPCONN(conn, LOGL_ERROR, "Unable to decode aoip transport address.\n");
- return -EINVAL;
- }
-
- /* Decode speech codec (choosen) element */
- rc = gsm0808_dec_speech_codec(&sc, TLVP_VAL(tp, GSM0808_IE_SPEECH_CODEC),
- TLVP_LEN(tp, GSM0808_IE_SPEECH_CODEC));
- if (rc < 0) {
- LOGPCONN(conn, LOGL_ERROR, "Unable to decode speech codec (choosen).\n");
- return -EINVAL;
- }
- conn->rtp.codec_ran = mgcp_codec_from_sc(&sc);
-
- /* use address / port supplied with the AoIP
- * transport address element */
- if (rtp_addr.ss_family == AF_INET) {
- rtp_addr_in = (struct sockaddr_in *)&rtp_addr;
- msc_mgcp_ass_complete(conn, osmo_ntohs(rtp_addr_in->sin_port), inet_ntoa(rtp_addr_in->sin_addr));
- } else {
- LOGPCONN(conn, LOGL_ERROR, "Unsopported addressing scheme. (supports only IPV4)\n");
- return -EINVAL;
- }
-
- return 0;
-}
-
-/* Handle incoming LCLS-NOTIFICATION BSSMAP message: 3GPP TS 48.008 §3.2.1.93 */
-static int bssmap_rx_lcls_notif(const struct ran_conn *conn, const struct msgb *msg, const struct tlv_parsed *tp)
-{
-
- bool status_avail = TLVP_PRESENT(tp, GSM0808_IE_LCLS_BSS_STATUS),
- break_avail = TLVP_PRESENT(tp, GSM0808_IE_LCLS_BREAK_REQ);
-
- /* Either §3.2.2.119 LCLS-BSS-Status or §3.2.2.120 LCLS-Break-Request shall be present */
- if (!(status_avail ^ break_avail)) {
- LOGPCONN(conn, LOGL_ERROR, "Ignoring broken LCLS Notification message\n");
- return -EINVAL;
- }
-
- if (status_avail)
- LOGPCONN(conn, LOGL_NOTICE, "Received LCLS Status: %s\n",
- gsm0808_lcls_status_name(tlvp_val8(tp, GSM0808_IE_LCLS_BSS_STATUS, GSM0808_LCLS_STS_NA)));
-
- if (break_avail)
- LOGPCONN(conn, LOGL_NOTICE, "Received LCLS Break Request\n");
-
- return 0;
-}
-
-/* Handle incoming connection oriented BSSMAP messages */
-static int rx_bssmap(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
-{
- struct ran_conn *conn;
- struct tlv_parsed tp;
- int rc;
- uint8_t msg_type;
-
- if (msgb_l3len(msg) < 1) {
- LOGP(DBSSAP, LOGL_NOTICE, "Error: No data received -- discarding message!\n");
- return -1;
- }
- msg_type = msg->l3h[0];
-
- rc = osmo_bssap_tlv_parse(&tp, msg->l3h + 1, msgb_l3len(msg) - 1);
- if (rc < 0) {
- LOGP(DBSSAP, LOGL_ERROR, "Failed parsing TLV -- discarding message! %s\n",
- osmo_hexdump(msg->l3h, msgb_l3len(msg)));
- return -EINVAL;
- }
-
- /* Only message types allowed without a 'conn' */
- switch (msg_type) {
- case BSS_MAP_MSG_COMPLETE_LAYER_3:
- return bssmap_rx_l3_compl(scu, a_conn_info, msg, &tp);
- default:
- break;
- }
-
- conn = ran_conn_lookup_a(a_conn_info->network, a_conn_info->conn_id);
- if (!conn) {
- LOGP(DBSSAP, LOGL_ERROR, "Couldn't find ran_conn for conn_id=%d\n", a_conn_info->conn_id);
- /* We expect a Clear Complete to come in on a valid conn. But if for some reason we still
- * have the SCCP connection while the RAN connection data is already gone, at
- * least close the SCCP conn. */
-
- if (msg_type == BSS_MAP_MSG_CLEAR_COMPLETE)
- return bssmap_rx_clear_complete(scu, a_conn_info, NULL);
-
- return -EINVAL;
- }
-
- LOGPCONN(conn, LOGL_DEBUG, "Rx BSSMAP DT1 %s\n", gsm0808_bssmap_name(msg_type));
-
- switch (msg_type) {
- case BSS_MAP_MSG_CLEAR_RQST:
- return bssmap_rx_clear_rqst(conn, msg, &tp);
- case BSS_MAP_MSG_CLEAR_COMPLETE:
- return bssmap_rx_clear_complete(scu, a_conn_info, conn);
- case BSS_MAP_MSG_CLASSMARK_UPDATE:
- return bssmap_rx_classmark_upd(conn, msg, &tp);
- case BSS_MAP_MSG_CIPHER_MODE_COMPLETE:
- return bssmap_rx_ciph_compl(conn, msg, &tp);
- case BSS_MAP_MSG_CIPHER_MODE_REJECT:
- return bssmap_rx_ciph_rej(conn, msg, &tp);
- case BSS_MAP_MSG_ASSIGMENT_FAILURE:
- return bssmap_rx_ass_fail(conn, msg, &tp);
- case BSS_MAP_MSG_SAPI_N_REJECT:
- return bssmap_rx_sapi_n_rej(conn, msg, &tp);
- case BSS_MAP_MSG_ASSIGMENT_COMPLETE:
- return bssmap_rx_ass_compl(conn, msg, &tp);
- case BSS_MAP_MSG_LCLS_NOTIFICATION:
- return bssmap_rx_lcls_notif(conn, msg, &tp);
- default:
- LOGPCONN(conn, LOGL_ERROR, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg_type));
- return -EINVAL;
- }
-
- return -EINVAL;
-}
-
-/* Endpoint to handle regular BSSAP DTAP messages. No ownership of 'msg' is passed on! */
-static int rx_dtap(const struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
-{
- struct gsm_network *network = a_conn_info->network;
- struct ran_conn *conn;
- struct dtap_header *dtap = (struct dtap_header *) msg->l2h;
-
- conn = ran_conn_lookup_a(network, a_conn_info->conn_id);
- if (!conn) {
- return -EINVAL;
- }
-
- LOGPCONN(conn, LOGL_DEBUG, "Rx DTAP %s\n", msgb_hexdump_l2(msg));
-
- /* ran_conn_dtap expects the dtap payload in l3h */
- msg->l3h = msg->l2h + 3;
- OMSC_LINKID_CB(msg) = dtap->link_id;
-
- /* Forward dtap payload into the msc */
- ran_conn_dtap(conn, msg);
-
- return 0;
-}
-
-/* Handle incoming connection oriented messages. No ownership of 'msg' is passed on! */
-int a_sccp_rx_dt(struct osmo_sccp_user *scu, const struct a_conn_info *a_conn_info, struct msgb *msg)
-{
- OSMO_ASSERT(scu);
- OSMO_ASSERT(a_conn_info);
- OSMO_ASSERT(msg);
-
- if (msgb_l2len(msg) < sizeof(struct bssmap_header)) {
- LOGP(DBSSAP, LOGL_NOTICE, "The header is too short -- discarding message!\n");
- return -EINVAL;
- }
-
- switch (msg->l2h[0]) {
- case BSSAP_MSG_BSS_MANAGEMENT:
- msg->l3h = &msg->l2h[sizeof(struct bssmap_header)];
- return rx_bssmap(scu, a_conn_info, msg);
- case BSSAP_MSG_DTAP:
- return rx_dtap(scu, a_conn_info, msg);
- default:
- LOGP(DBSSAP, LOGL_ERROR, "Unimplemented BSSAP msg type: %s\n", gsm0808_bssap_name(msg->l2h[0]));
- return -EINVAL;
- }
-
- return -EINVAL;
-}
diff --git a/src/libmsc/a_reset.c b/src/libmsc/a_reset.c
deleted file mode 100644
index d6d4a1c5e..000000000
--- a/src/libmsc/a_reset.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* (C) 2017 by sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Philipp Maier
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/fsm.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/a_reset.h>
-#include <osmocom/msc/msc_common.h>
-
-#define RESET_RESEND_INTERVAL 2 /* sec */
-#define RESET_RESEND_TIMER_NO 16 /* See also 3GPP TS 48.008 Chapter 3.1.4.1.3.2 */
-
-enum reset_fsm_states {
- ST_DISC, /* Disconnected from remote end */
- ST_CONN, /* We have a confirmed connection */
-};
-
-enum reset_fsm_evt {
- EV_CONN_ACK, /* Received either BSSMAP RESET or BSSMAP RESET
- * ACK from the remote end */
-};
-
-/* Reset context data (callbacks, state machine etc...) */
-struct reset_ctx {
- /* Callback function to be called when a connection
- * failure is detected and a rest must occur */
- void (*cb)(void *priv);
-
- /* Privated data for the callback function */
- void *priv;
-};
-
-static const struct value_string fsm_event_names[] = {
- OSMO_VALUE_STRING(EV_CONN_ACK),
- {0, NULL}
-};
-
-/* Disconnected state */
-static void fsm_disc_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- osmo_fsm_inst_state_chg(fi, ST_CONN, 0, 0);
-}
-
-/* Timer callback to retransmit the reset signal */
-static int fsm_reset_ack_timeout_cb(struct osmo_fsm_inst *fi)
-{
- struct reset_ctx *reset_ctx = (struct reset_ctx *)fi->priv;
- LOGPFSML(fi, LOGL_NOTICE, "(re)sending BSSMAP RESET message...\n");
- reset_ctx->cb(reset_ctx->priv);
- osmo_fsm_inst_state_chg(fi, ST_DISC, RESET_RESEND_INTERVAL, RESET_RESEND_TIMER_NO);
- return 0;
-}
-
-static struct osmo_fsm_state reset_fsm_states[] = {
- [ST_DISC] = {
- .in_event_mask = (1 << EV_CONN_ACK),
- .out_state_mask = (1 << ST_CONN) | (1 << ST_DISC),
- .name = "DISC",
- .action = fsm_disc_cb,
- },
- [ST_CONN] = {
- .in_event_mask = (1 << EV_CONN_ACK),
- .name = "CONN",
- },
-};
-
-/* State machine definition */
-static struct osmo_fsm fsm = {
- .name = "A-RESET",
- .states = reset_fsm_states,
- .num_states = ARRAY_SIZE(reset_fsm_states),
- .log_subsys = DMSC,
- .timer_cb = fsm_reset_ack_timeout_cb,
- .event_names = fsm_event_names,
-};
-
-/* Create and start state machine which handles the reset/reset-ack procedure */
-struct osmo_fsm_inst *a_reset_alloc(void *ctx, const char *name, void *cb,
- void *priv, bool already_connected)
-{
- OSMO_ASSERT(name);
-
- struct reset_ctx *reset_ctx;
- struct osmo_fsm_inst *reset_fsm;
-
- /* Register the fsm description (if not already done) */
- if (osmo_fsm_find_by_name(fsm.name) != &fsm)
- osmo_fsm_register(&fsm);
-
- /* Allocate and configure a new fsm instance */
- reset_ctx = talloc_zero(ctx, struct reset_ctx);
- OSMO_ASSERT(reset_ctx);
- reset_ctx->priv = priv;
- reset_ctx->cb = cb;
- reset_fsm = osmo_fsm_inst_alloc(&fsm, ctx, reset_ctx, LOGL_DEBUG, name);
- OSMO_ASSERT(reset_fsm);
-
- if (already_connected)
- osmo_fsm_inst_state_chg(reset_fsm, ST_CONN, 0, 0);
- else {
- /* kick off reset-ack sending mechanism */
- osmo_fsm_inst_state_chg(reset_fsm, ST_DISC, RESET_RESEND_INTERVAL,
- RESET_RESEND_TIMER_NO);
- }
-
- return reset_fsm;
-}
-
-/* Confirm that we sucessfully received a reset acknowlege message */
-void a_reset_ack_confirm(struct osmo_fsm_inst *reset_fsm)
-{
- OSMO_ASSERT(reset_fsm);
- osmo_fsm_inst_dispatch(reset_fsm, EV_CONN_ACK, NULL);
-}
-
-/* Check if we have a connection to a specified msc */
-bool a_reset_conn_ready(struct osmo_fsm_inst *reset_fsm)
-{
- /* If no reset context is supplied, we assume that
- * the connection can't be ready! */
- if (!reset_fsm)
- return false;
-
- if (reset_fsm->state == ST_CONN)
- return true;
-
- return false;
-}
diff --git a/src/libmsc/call_leg.c b/src/libmsc/call_leg.c
new file mode 100644
index 000000000..b10f176c2
--- /dev/null
+++ b/src/libmsc/call_leg.c
@@ -0,0 +1,356 @@
+/* Implementation to manage two RTP streams that make up an MO or MT call leg's RTP forwarding. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#include <osmocom/core/fsm.h>
+#include <osmocom/mgcp_client/mgcp_client_endpoint_fsm.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/msc_a.h>
+
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
+
+#define LOG_CALL_LEG(cl, level, fmt, args...) \
+ LOGPFSML(cl ? cl->fi : NULL, level, fmt, ##args)
+
+static struct gsm_network *gsmnet = NULL;
+
+enum call_leg_state {
+ CALL_LEG_ST_ESTABLISHING,
+ CALL_LEG_ST_ESTABLISHED,
+ CALL_LEG_ST_RELEASING,
+};
+
+struct osmo_tdef g_mgw_tdefs[] = {
+ { .T=-1, .default_val=4, .desc="MGCP response timeout" },
+ { .T=-2, .default_val=30, .desc="RTP stream establishing timeout" },
+ {}
+};
+
+static const struct osmo_tdef_state_timeout call_leg_fsm_timeouts[32] = {
+ [CALL_LEG_ST_ESTABLISHING] = { .T = -2 },
+ [CALL_LEG_ST_RELEASING] = { .T = -2 },
+};
+
+#define call_leg_state_chg(cl, state) \
+ osmo_tdef_fsm_inst_state_chg((cl)->fi, state, call_leg_fsm_timeouts, g_mgw_tdefs, 10)
+
+static struct osmo_fsm call_leg_fsm;
+
+void call_leg_init(struct gsm_network *net)
+{
+ gsmnet = net;
+ OSMO_ASSERT( osmo_fsm_register(&call_leg_fsm) == 0 );
+}
+
+struct call_leg *call_leg_alloc(struct osmo_fsm_inst *parent_fi,
+ uint32_t parent_event_term,
+ uint32_t parent_event_rtp_addr_available,
+ uint32_t parent_event_rtp_complete,
+ uint32_t parent_event_rtp_released)
+{
+ struct call_leg *cl;
+ struct osmo_fsm_inst *fi = osmo_fsm_inst_alloc_child(&call_leg_fsm, parent_fi, parent_event_term);
+
+ OSMO_ASSERT(fi);
+
+ cl = talloc_zero(fi, struct call_leg);
+ OSMO_ASSERT(cl);
+ fi->priv = cl;
+ *cl = (struct call_leg){
+ .fi = fi,
+ .parent_event_rtp_addr_available = parent_event_rtp_addr_available,
+ .parent_event_rtp_complete = parent_event_rtp_complete,
+ .parent_event_rtp_released = parent_event_rtp_released,
+ };
+
+ return cl;
+}
+
+void call_leg_reparent(struct call_leg *cl,
+ struct osmo_fsm_inst *new_parent_fi,
+ uint32_t parent_event_term,
+ uint32_t parent_event_rtp_addr_available,
+ uint32_t parent_event_rtp_complete,
+ uint32_t parent_event_rtp_released)
+{
+ LOG_CALL_LEG(cl, LOGL_DEBUG, "Reparenting from parent %s to parent %s\n",
+ cl->fi->proc.parent->name, new_parent_fi->name);
+ osmo_fsm_inst_change_parent(cl->fi, new_parent_fi, parent_event_term);
+ talloc_steal(new_parent_fi, cl->fi);
+ cl->parent_event_rtp_addr_available = parent_event_rtp_addr_available;
+ cl->parent_event_rtp_complete = parent_event_rtp_complete;
+ cl->parent_event_rtp_released = parent_event_rtp_released;
+}
+
+static int call_leg_fsm_timer_cb(struct osmo_fsm_inst *fi)
+{
+ struct call_leg *cl = fi->priv;
+ call_leg_release(cl);
+ return 0;
+}
+
+void call_leg_release(struct call_leg *cl)
+{
+ if (!cl)
+ return;
+ if (cl->fi->state == CALL_LEG_ST_RELEASING)
+ return;
+ call_leg_state_chg(cl, CALL_LEG_ST_RELEASING);
+}
+
+static void call_leg_mgw_endpoint_gone(struct call_leg *cl)
+{
+ int i;
+ cl->mgw_endpoint = NULL;
+ for (i = 0; i < ARRAY_SIZE(cl->rtp); i++) {
+ if (!cl->rtp[i])
+ continue;
+ cl->rtp[i]->ci = NULL;
+ }
+}
+
+static void call_leg_fsm_establishing_established(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct call_leg *cl = fi->priv;
+ struct rtp_stream *rtps;
+ int i;
+ bool established;
+
+ switch (event) {
+
+ case CALL_LEG_EV_RTP_STREAM_ESTABLISHED:
+ established = true;
+ for (i = 0; i < ARRAY_SIZE(cl->rtp); i++) {
+ if (!rtp_stream_is_established(cl->rtp[i])) {
+ established = false;
+ break;
+ }
+ }
+ if (!established)
+ break;
+ if (cl->fi->state != CALL_LEG_ST_ESTABLISHED)
+ call_leg_state_chg(cl, CALL_LEG_ST_ESTABLISHED);
+ break;
+
+ case CALL_LEG_EV_RTP_STREAM_ADDR_AVAILABLE:
+ rtps = data;
+ osmo_fsm_inst_dispatch(fi->proc.parent, cl->parent_event_rtp_addr_available, rtps);
+ break;
+
+ case CALL_LEG_EV_RTP_STREAM_GONE:
+ call_leg_release(cl);
+ break;
+
+ case CALL_LEG_EV_MGW_ENDPOINT_GONE:
+ call_leg_mgw_endpoint_gone(cl);
+ call_leg_release(cl);
+ break;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+void call_leg_fsm_established_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct call_leg *cl = fi->priv;
+ osmo_fsm_inst_dispatch(fi->proc.parent, cl->parent_event_rtp_complete, cl);
+}
+
+void call_leg_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
+}
+
+static void call_leg_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct call_leg *cl = fi->priv;
+
+ switch (event) {
+
+ case CALL_LEG_EV_RTP_STREAM_GONE:
+ /* We're already terminating, child RTP streams will also terminate, there is nothing left to do. */
+ break;
+
+ case CALL_LEG_EV_MGW_ENDPOINT_GONE:
+ call_leg_mgw_endpoint_gone(cl);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static const struct value_string call_leg_fsm_event_names[] = {
+ OSMO_VALUE_STRING(CALL_LEG_EV_RTP_STREAM_ADDR_AVAILABLE),
+ OSMO_VALUE_STRING(CALL_LEG_EV_RTP_STREAM_ESTABLISHED),
+ OSMO_VALUE_STRING(CALL_LEG_EV_RTP_STREAM_GONE),
+ OSMO_VALUE_STRING(CALL_LEG_EV_MGW_ENDPOINT_GONE),
+ {}
+};
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state call_leg_fsm_states[] = {
+ [CALL_LEG_ST_ESTABLISHING] = {
+ .name = "ESTABLISHING",
+ .in_event_mask = 0
+ | S(CALL_LEG_EV_RTP_STREAM_ADDR_AVAILABLE)
+ | S(CALL_LEG_EV_RTP_STREAM_ESTABLISHED)
+ | S(CALL_LEG_EV_RTP_STREAM_GONE)
+ | S(CALL_LEG_EV_MGW_ENDPOINT_GONE)
+ ,
+ .out_state_mask = 0
+ | S(CALL_LEG_ST_ESTABLISHED)
+ | S(CALL_LEG_ST_RELEASING)
+ ,
+ .action = call_leg_fsm_establishing_established,
+ },
+ [CALL_LEG_ST_ESTABLISHED] = {
+ .name = "ESTABLISHED",
+ .in_event_mask = 0
+ | S(CALL_LEG_EV_RTP_STREAM_ADDR_AVAILABLE)
+ | S(CALL_LEG_EV_RTP_STREAM_ESTABLISHED)
+ | S(CALL_LEG_EV_RTP_STREAM_GONE)
+ | S(CALL_LEG_EV_MGW_ENDPOINT_GONE)
+ ,
+ .out_state_mask = 0
+ | S(CALL_LEG_ST_ESTABLISHING)
+ | S(CALL_LEG_ST_RELEASING)
+ ,
+ .onenter = call_leg_fsm_established_onenter,
+ .action = call_leg_fsm_establishing_established, /* same action function as above */
+ },
+ [CALL_LEG_ST_RELEASING] = {
+ .name = "RELEASING",
+ .in_event_mask = 0
+ | S(CALL_LEG_EV_RTP_STREAM_GONE)
+ | S(CALL_LEG_EV_MGW_ENDPOINT_GONE)
+ ,
+ .onenter = call_leg_fsm_releasing_onenter,
+ .action = call_leg_fsm_releasing, /* same action function as above */
+ },
+};
+
+static struct osmo_fsm call_leg_fsm = {
+ .name = "call_leg",
+ .states = call_leg_fsm_states,
+ .num_states = ARRAY_SIZE(call_leg_fsm_states),
+ .log_subsys = DCC,
+ .event_names = call_leg_fsm_event_names,
+ .timer_cb = call_leg_fsm_timer_cb,
+};
+
+const struct value_string rtp_direction_names[] = {
+ OSMO_VALUE_STRING(RTP_TO_RAN),
+ OSMO_VALUE_STRING(RTP_TO_CN),
+ {}
+};
+
+static int call_leg_rtp_alloc(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id, struct gsm_trans *for_trans)
+{
+ if (cl->rtp[dir])
+ return 0;
+
+ if (!cl->mgw_endpoint)
+ cl->mgw_endpoint = osmo_mgcpc_ep_alloc(cl->fi, CALL_LEG_EV_MGW_ENDPOINT_GONE,
+ gsmnet->mgw.client, gsmnet->mgw.tdefs, cl->fi->id,
+ "%s", mgcp_client_rtpbridge_wildcard(gsmnet->mgw.client));
+ if (!cl->mgw_endpoint) {
+ LOG_CALL_LEG(cl, LOGL_ERROR, "failed to setup MGW endpoint\n");
+ return -EIO;
+ }
+
+ cl->rtp[dir] = rtp_stream_alloc(cl, dir, call_id, for_trans);
+ return 0;
+}
+
+int call_leg_ensure_rtp_alloc(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id, struct gsm_trans *for_trans)
+{
+ if (!cl->rtp[dir]) {
+ if (call_leg_rtp_alloc(cl, dir, call_id, for_trans))
+ return -EIO;
+ }
+ OSMO_ASSERT(cl->rtp[dir]);
+ return 0;
+}
+
+struct osmo_sockaddr_str *call_leg_local_ip(struct call_leg *cl, enum rtp_direction dir)
+{
+ struct rtp_stream *rtps;
+ if (!cl)
+ return NULL;
+ rtps = cl->rtp[dir];
+ if (!rtps)
+ return NULL;
+ if (!osmo_sockaddr_str_is_set(&rtps->local))
+ return NULL;
+ return &rtps->local;
+}
+
+/* Make sure an MGW endpoint CI is set up for an RTP connection.
+ * This is the one-stop for all to either completely set up a new endpoint connection, or to modify an existing one.
+ * If not yet present, allocate the rtp_stream for the given direction.
+ * Then, call rtp_stream_set_codec() if codec_if_known is non-NULL, and/or rtp_stream_set_remote_addr() if
+ * remote_addr_if_known is non-NULL.
+ * Finally make sure that a CRCX is sent out for this direction, if this has not already happened.
+ * If the CRCX has already happened but new codec / remote_addr data was passed, call rtp_stream_commit() to trigger an
+ * MDCX.
+ */
+int call_leg_ensure_ci(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id, struct gsm_trans *for_trans,
+ const enum mgcp_codecs *codec_if_known, const struct osmo_sockaddr_str *remote_addr_if_known)
+{
+ if (call_leg_ensure_rtp_alloc(cl, dir, call_id, for_trans))
+ return -EIO;
+ cl->rtp[dir]->crcx_conn_mode = cl->crcx_conn_mode[dir];
+ if (codec_if_known)
+ rtp_stream_set_codec(cl->rtp[dir], *codec_if_known);
+ if (remote_addr_if_known && osmo_sockaddr_str_is_set(remote_addr_if_known))
+ rtp_stream_set_remote_addr(cl->rtp[dir], remote_addr_if_known);
+ return rtp_stream_ensure_ci(cl->rtp[dir], cl->mgw_endpoint);
+}
+
+int call_leg_local_bridge(struct call_leg *cl1, uint32_t call_id1, struct gsm_trans *trans1,
+ struct call_leg *cl2, uint32_t call_id2, struct gsm_trans *trans2)
+{
+ enum mgcp_codecs codec;
+
+ cl1->local_bridge = cl2;
+ cl2->local_bridge = cl1;
+
+ /* We may just copy the codec info we have for the RAN side of the first leg to the CN side of both legs. This
+ * also means that if both legs use different codecs the MGW must perform transcoding on the second leg. */
+ if (!cl1->rtp[RTP_TO_RAN] || !cl1->rtp[RTP_TO_RAN]->codec_known) {
+ LOG_CALL_LEG(cl1, LOGL_ERROR, "RAN-side RTP stream codec is not known, not ready for bridging\n");
+ return -EINVAL;
+ }
+ codec = cl1->rtp[RTP_TO_RAN]->codec;
+
+ call_leg_ensure_ci(cl1, RTP_TO_CN, call_id1, trans1,
+ &codec, &cl2->rtp[RTP_TO_CN]->local);
+ call_leg_ensure_ci(cl2, RTP_TO_CN, call_id2, trans2,
+ &codec, &cl1->rtp[RTP_TO_CN]->local);
+ return 0;
+}
diff --git a/src/libmsc/cell_id_list.c b/src/libmsc/cell_id_list.c
new file mode 100644
index 000000000..6e59e1667
--- /dev/null
+++ b/src/libmsc/cell_id_list.c
@@ -0,0 +1,76 @@
+/* Manage a list of struct gsm0808_cell_id */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <osmocom/msc/cell_id_list.h>
+
+int cell_id_list_add_cell(void *talloc_ctx, struct llist_head *list, const struct gsm0808_cell_id *cid)
+{
+ struct cell_id_list_entry *e = cell_id_list_find(list, cid, 0, true);
+
+ if (e)
+ return 0;
+
+ e = talloc_zero(talloc_ctx, struct cell_id_list_entry);
+ e->cell_id = *cid;
+ llist_add_tail(&e->entry, list);
+ return 1;
+}
+
+int cell_id_list_add_list(void *talloc_ctx, struct llist_head *list, const struct gsm0808_cell_id_list2 *cil)
+{
+ struct gsm0808_cell_id one_id;
+ int i;
+ int added = 0;
+ for (i = 0; i < cil->id_list_len; i++) {
+ one_id = (struct gsm0808_cell_id){
+ .id_discr = cil->id_discr,
+ .id = cil->id_list[i],
+ };
+ added += cell_id_list_add_cell(talloc_ctx, list, &one_id);
+ }
+ return added;
+}
+
+void cell_id_list_del_entry(struct cell_id_list_entry *e)
+{
+ llist_del(&e->entry);
+ talloc_free(e);
+}
+
+struct cell_id_list_entry *cell_id_list_find(struct llist_head *list,
+ const struct gsm0808_cell_id *id,
+ unsigned int match_nr,
+ bool exact_match)
+{
+ struct cell_id_list_entry *e;
+ llist_for_each_entry(e, list, entry) {
+ if (gsm0808_cell_ids_match(id, &e->cell_id, exact_match)) {
+ if (match_nr)
+ match_nr--;
+ else
+ return e;
+ }
+ }
+ return NULL;
+}
diff --git a/src/libmsc/e_link.c b/src/libmsc/e_link.c
new file mode 100644
index 000000000..261413766
--- /dev/null
+++ b/src/libmsc/e_link.c
@@ -0,0 +1,380 @@
+/* E-interface messaging over a GSUP connection */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/fsm.h>
+#include <osmocom/gsupclient/gsup_client.h>
+
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/gsup_client_mux.h>
+#include <osmocom/msc/e_link.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/ran_infra.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_a_remote.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/msc_i_remote.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/msc_t_remote.h>
+
+#define LOG_E_LINK(e_link, level, fmt, args...) \
+ LOGPFSML(e_link->msc_role, level, fmt, ##args)
+
+#define LOG_E_LINK_CAT(e_link, ss, level, fmt, args...) \
+ LOGPFSMSL(e_link->msc_role, ss, level, fmt, ##args)
+
+void e_link_assign(struct e_link *e, struct osmo_fsm_inst *msc_role)
+{
+ struct msc_role_common *c;
+ if (e->msc_role) {
+ c = e->msc_role->priv;
+ if (c->remote_to == e) {
+ c->remote_to = NULL;
+ msub_update_id(c->msub);
+ }
+ }
+
+ c = msc_role->priv;
+ e->msc_role = msc_role;
+ c->remote_to = e;
+
+ msub_update_id(c->msub);
+ LOG_E_LINK(e, LOGL_DEBUG, "Assigned E-link to %s\n", e_link_name(e));
+}
+
+struct e_link *e_link_alloc(struct gsup_client_mux *gcm, struct osmo_fsm_inst *msc_role,
+ const uint8_t *remote_name, size_t remote_name_len)
+{
+ struct e_link *e;
+ struct msc_role_common *c = msc_role->priv;
+ size_t use_len;
+
+ /* use msub as talloc parent, so we can move an e_link from msc_t to msc_i when it is established. */
+ e = talloc_zero(c->msub, struct e_link);
+ if (!e)
+ return NULL;
+
+ *e = (struct e_link) {
+ .gcm = gcm,
+ };
+
+ /* FIXME: this is a braindamaged duality of char* and blob, which we can't seem to get rid of easily.
+ * See also osmo-hlr change I01a45900e14d41bcd338f50ad85d9fabf2c61405 which resolved this on the
+ * osmo-hlr side, but was abandoned. Not sure which way is the right solution. */
+ /* To be able to include a terminating NUL character when sending the IPA name, append one if there is none yet.
+ * Current osmo-hlr needs the terminating NUL to be included. */
+ use_len = remote_name_len;
+ if (remote_name[use_len-1] != '\0')
+ use_len++;
+ e->remote_name = talloc_size(e, use_len);
+ memcpy(e->remote_name, remote_name, remote_name_len);
+ e->remote_name[use_len-1] = '\0';
+ e->remote_name_len = use_len;
+
+ e_link_assign(e, msc_role);
+ return e;
+}
+
+void e_link_free(struct e_link *e)
+{
+ if (!e)
+ return;
+ if (e->msc_role) {
+ struct msc_role_common *c = e->msc_role->priv;
+ if (c->remote_to == e)
+ c->remote_to = NULL;
+ }
+ talloc_free(e);
+}
+
+/* Set up IMSI, source and destination names in given gsup_msg struct. */
+int e_prep_gsup_msg(struct e_link *e, enum msc_role from_role, struct osmo_gsup_message *gsup_msg)
+{
+ struct msc_role_common *c;
+ struct vlr_subscr *vsub;
+ const char *local_msc_name = NULL;
+
+ if (e->gcm && e->gcm->gsup_client && e->gcm->gsup_client->ipa_dev) {
+ local_msc_name = e->gcm->gsup_client->ipa_dev->serno;
+ if (!local_msc_name)
+ local_msc_name = e->gcm->gsup_client->ipa_dev->unit_name;
+ }
+
+ if (!local_msc_name) {
+ LOG_E_LINK(e, LOGL_ERROR, "Cannot prep E-interface GSUP message: no local MSC name defined\n");
+ return -ENODEV;
+ }
+
+ c = e->msc_role->priv;
+ vsub = c->msub->vsub;
+ *gsup_msg = (struct osmo_gsup_message){
+ .message_class = OSMO_GSUP_MESSAGE_CLASS_INTER_MSC,
+ .source_name = (const uint8_t*)local_msc_name,
+ .source_name_len = strlen(local_msc_name)+1, /* include terminating nul */
+ .destination_name = (const uint8_t*)e->remote_name,
+ .destination_name_len = e->remote_name_len, /* the nul here is also included, from e_link_alloc() */
+ };
+
+ if (vsub)
+ OSMO_STRLCPY_ARRAY(gsup_msg->imsi, vsub->imsi);
+ return 0;
+}
+
+int e_tx(struct e_link *e, const struct osmo_gsup_message *gsup_msg)
+{
+ LOG_E_LINK_CAT(e, DLGSUP, LOGL_DEBUG, "Tx GSUP %s to %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type),
+ e_link_name(e));
+ return gsup_client_mux_tx(e->gcm, gsup_msg);
+}
+
+const char *e_link_name(struct e_link *e)
+{
+ return osmo_escape_str((const char*)e->remote_name, e->remote_name_len);
+}
+
+static struct msub *msc_new_msc_t_for_handover_request(struct gsm_network *net,
+ const struct osmo_gsup_message *gsup_msg)
+{
+ struct ran_infra *ran;
+ struct msub *msub;
+ struct msc_a *msc_a;
+ struct vlr_subscr *vsub;
+
+ switch (gsup_msg->an_apdu.access_network_proto) {
+ case OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_48006:
+ ran = &msc_ran_infra[OSMO_RAT_GERAN_A];
+ break;
+ case OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_25413:
+ ran = &msc_ran_infra[OSMO_RAT_UTRAN_IU];
+ break;
+ default:
+ ran = NULL;
+ break;
+ }
+
+ if (!ran || !ran->ran_dec_l2) {
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_ERROR, "Cannot handle AN-proto %s\n",
+ an_proto_name(gsup_msg->an_apdu.access_network_proto));
+ return NULL;
+ }
+
+ msub = msub_alloc(net);
+
+ /* To properly compose GSUP messages going back to the remote peer, make sure the incoming IMSI is set in a
+ * vlr_subscr associated with the msub. */
+ vsub = vlr_subscr_find_or_create_by_imsi(net->vlr, gsup_msg->imsi, __func__, NULL);
+ msub_set_vsub(msub, vsub);
+ vlr_subscr_put(vsub, __func__);
+
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG, "New subscriber for incoming inter-MSC Handover Request\n");
+
+ msc_a = msc_a_remote_alloc(msub, ran, gsup_msg->source_name, gsup_msg->source_name_len);
+ if (!msc_a) {
+ osmo_fsm_inst_term(msub->fi, OSMO_FSM_TERM_REQUEST, NULL);
+ return NULL;
+ }
+
+ LOG_MSC_A_REMOTE_CAT(msc_a, DLGSUP, LOGL_DEBUG, "New subscriber for incoming inter-MSC Handover Request\n");
+ return msub;
+}
+
+static bool name_matches(const uint8_t *name, size_t len, const uint8_t *match_name, size_t match_len)
+{
+ if (!match_name)
+ return !name || !len;
+ if (len != match_len)
+ return false;
+ return memcmp(name, match_name, len) == 0;
+}
+
+static bool e_link_matches_gsup_msg_source_name(const struct e_link *e, const struct osmo_gsup_message *gsup_msg)
+{
+ return name_matches(gsup_msg->source_name, gsup_msg->source_name_len, e->remote_name, e->remote_name_len);
+}
+
+static int msc_a_i_t_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg)
+{
+ struct gsm_network *net = data;
+ struct vlr_instance *vlr = net->vlr;
+ struct vlr_subscr *vsub;
+ struct msub *msub;
+ struct osmo_fsm_inst *msc_role = NULL;
+ struct e_link *e;
+ struct msc_role_common *c;
+ int i;
+
+ OSMO_ASSERT(net);
+
+ vsub = vlr_subscr_find_by_imsi(vlr, gsup_msg->imsi, __func__);
+ if (vsub)
+ LOGP(DLGSUP, LOGL_DEBUG, "Found VLR entry for IMSI %s\n", gsup_msg->imsi);
+
+ msub = msub_for_vsub(vsub);
+ if (msub)
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG, "Found already attached subscriber for IMSI %s\n",
+ gsup_msg->imsi);
+
+ if (vsub) {
+ vlr_subscr_put(vsub, __func__);
+ vsub = NULL;
+ }
+
+ /* Only for an incoming Handover Request: create a new remote-MSC-A as proxy for the MSC-A that is sending the
+ * Handover Request */
+ if (!msub && gsup_msg->message_type == OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST) {
+ msub = msc_new_msc_t_for_handover_request(net, gsup_msg);
+ }
+
+ if (!msub) {
+ LOGP(DLGSUP, LOGL_ERROR, "%s: Cannot find subscriber for IMSI %s\n",
+ __func__, osmo_quote_str(gsup_msg->imsi, -1));
+ return -EINVAL;
+ }
+
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG, "Rx GSUP %s\n", osmo_gsup_message_type_name(gsup_msg->message_type));
+
+ e = NULL;
+ for (i = 0; i < ARRAY_SIZE(msub->role); i++) {
+ msc_role = msub->role[i];
+ if (!msc_role) {
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG, "No %s\n", msc_role_name(i));
+ continue;
+ }
+ c = msc_role->priv;
+ if (!c->remote_to) {
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG, "%s has no remote\n", msc_role_name(i));
+ continue;
+ }
+ if (!e_link_matches_gsup_msg_source_name(c->remote_to, gsup_msg)) {
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG, "%s has remote to mismatching %s\n", msc_role_name(i),
+ c->remote_to->remote_name);
+ continue;
+ }
+ /* Found a match. */
+ e = c->remote_to;
+ break;
+ }
+
+ if (!e) {
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_ERROR,
+ "There is no E link that matches: Rx GSUP %s from %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type),
+ osmo_quote_str((const char*)gsup_msg->source_name, gsup_msg->source_name_len));
+ return -EINVAL;
+ }
+
+ LOG_MSUB_CAT(msub, DLGSUP, LOGL_DEBUG,
+ "Rx GSUP %s from %s %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type),
+ msc_role_name(c->role),
+ e_link_name(e));
+
+ return osmo_fsm_inst_dispatch(msc_role, MSC_REMOTE_EV_RX_GSUP, (void*)gsup_msg);
+}
+
+void msc_a_i_t_gsup_init(struct gsm_network *net)
+{
+ OSMO_ASSERT(net->gcm);
+ OSMO_ASSERT(net->vlr);
+
+ net->gcm->rx_cb[OSMO_GSUP_MESSAGE_CLASS_INTER_MSC] = (struct gsup_client_mux_rx_cb){
+ .func = msc_a_i_t_gsup_rx,
+ .data = net,
+ };
+}
+
+int gsup_msg_assign_an_apdu(struct osmo_gsup_message *gsup_msg, struct an_apdu *an_apdu)
+{
+ if (!an_apdu) {
+ LOGP(DLGSUP, LOGL_ERROR, "Cannot assign NULL AN-APDU\n");
+ return -EINVAL;
+ }
+
+ gsup_msg->an_apdu = (struct osmo_gsup_an_apdu){
+ .access_network_proto = an_apdu->an_proto,
+ };
+
+ if (an_apdu->msg) {
+ gsup_msg->an_apdu.data = msgb_l2(an_apdu->msg);
+ gsup_msg->an_apdu.data_len = msgb_l2len(an_apdu->msg);
+ if (!gsup_msg->an_apdu.data || !gsup_msg->an_apdu.data_len) {
+ LOGP(DLGSUP, LOGL_ERROR, "Cannot assign AN-APDU without msg->l2 to GSUP message: %s\n",
+ msgb_hexdump(an_apdu->msg));
+ return -EINVAL;
+ }
+ }
+
+ /* We are composing a struct osmo_gsup_msg from the osmo-msc internal struct an_apdu. The an_apdu may contain
+ * additional info in form of a partly filled an_apdu->e_info. Make sure that data ends up in the resulting full
+ * osmo_gsup_message. */
+ if (an_apdu->e_info) {
+ const struct osmo_gsup_message *s = an_apdu->e_info;
+
+ gsup_msg->msisdn_enc = s->msisdn_enc;
+ gsup_msg->msisdn_enc_len = s->msisdn_enc_len;
+
+ if (s->cause_rr_set) {
+ gsup_msg->cause_rr = s->cause_rr;
+ gsup_msg->cause_rr_set = true;
+ }
+ if (s->cause_bssap_set) {
+ gsup_msg->cause_bssap = s->cause_bssap;
+ gsup_msg->cause_bssap_set = true;
+ }
+ if (s->cause_sm)
+ gsup_msg->cause_sm = s->cause_sm;
+ }
+ return 0;
+}
+
+/* Allocate a new msgb to contain the gsup_msg->an_apdu's data as l2h.
+ * The msgb will have sufficient headroom to be passed down a RAN peer's SCCP user SAP. */
+struct msgb *gsup_msg_to_msgb(const struct osmo_gsup_message *gsup_msg)
+{
+ struct msgb *pdu;
+ const uint8_t *pdu_data = gsup_msg->an_apdu.data;
+ uint8_t pdu_len = gsup_msg->an_apdu.data_len;
+
+ if (!pdu_data || !pdu_len)
+ return NULL;
+
+ /* Strictly speaking this is not limited to BSSMAP, but why not just use those sizes. */
+ pdu = msgb_alloc_headroom(BSSMAP_MSG_SIZE, BSSMAP_MSG_HEADROOM, "AN-APDU from gsup_msg");
+
+ pdu->l2h = msgb_put(pdu, pdu_len);
+ memcpy(pdu->l2h, pdu_data, pdu_len);
+ return pdu;
+}
+
+/* Compose a struct an_apdu from the data found in gsup_msg. gsup_msg_to_msgb() is used to wrap the data in a static
+ * msgb, so the returned an_apdu->msg must be freed if not NULL. */
+void gsup_msg_to_an_apdu(struct an_apdu *an_apdu, const struct osmo_gsup_message *gsup_msg)
+{
+ *an_apdu = (struct an_apdu){
+ .an_proto = gsup_msg->an_apdu.access_network_proto,
+ .msg = gsup_msg_to_msgb(gsup_msg),
+ .e_info = gsup_msg,
+ };
+}
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index 4be42e979..6236bb331 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -50,7 +50,8 @@
#include <osmocom/abis/e1_input.h>
#include <osmocom/core/bitvec.h>
#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/msc_ifaces.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/paging.h>
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gsm/gsm0480.h>
@@ -62,13 +63,9 @@
#include <osmocom/core/byteswap.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/crypt/auth.h>
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#endif
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/msc_mgcp.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_roles.h>
#include <assert.h>
@@ -76,8 +73,7 @@
void *tall_locop_ctx;
void *tall_authciphop_ctx;
-static int gsm0408_loc_upd_acc(struct ran_conn *conn,
- uint32_t send_tmsi);
+static int gsm0408_loc_upd_acc(struct msc_a *msc_a, uint32_t send_tmsi);
/*! Send a simple GSM 04.08 message without any payload
* \param conn Active RAN connection
@@ -85,8 +81,7 @@ static int gsm0408_loc_upd_acc(struct ran_conn *conn,
* \param[in] msg_type Message type
* \return result of \ref gsm48_conn_sendmsg
*/
-int gsm48_tx_simple(struct ran_conn *conn,
- uint8_t pdisc, uint8_t msg_type)
+int gsm48_tx_simple(struct msc_a *msc_a, uint8_t pdisc, uint8_t msg_type)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 TX SIMPLE");
struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
@@ -94,145 +89,18 @@ int gsm48_tx_simple(struct ran_conn *conn,
gh->proto_discr = pdisc;
gh->msg_type = msg_type;
- return gsm48_conn_sendmsg(msg, conn, NULL);
-}
-
-static bool classmark1_is_r99(const struct gsm48_classmark1 *cm1)
-{
- return cm1->rev_lev >= 2;
-}
-
-static bool classmark2_is_r99(const uint8_t *cm2, uint8_t cm2_len)
-{
- uint8_t rev_lev;
- if (!cm2_len)
- return false;
- rev_lev = (cm2[0] >> 5) & 0x3;
- return rev_lev >= 2;
-}
-
-static bool classmark_is_r99(struct gsm_classmark *cm)
-{
- if (cm->classmark1_set)
- return classmark1_is_r99(&cm->classmark1);
- return classmark2_is_r99(cm->classmark2, cm->classmark2_len);
-}
-
-static const char *classmark_a5_name(const struct gsm_classmark *cm)
-{
- static char buf[128];
- char cm1[42];
- char cm2[42];
- char cm3[42];
-
- if (cm->classmark1_set)
- snprintf(cm1, sizeof(cm1), "cm1{a5/1=%s}",
- cm->classmark1.a5_1 ? "not-supported":"supported" /* inverted logic */);
- else
- snprintf(cm1, sizeof(cm1), "no-cm1");
-
- if (cm->classmark2_len >= 3)
- snprintf(cm2, sizeof(cm2), " cm2{0x%x=%s%s}",
- cm->classmark2[2],
- cm->classmark2[2] & 0x1 ? " A5/2" : "",
- cm->classmark2[2] & 0x2 ? " A5/3" : "");
- else
- snprintf(cm2, sizeof(cm2), " no-cm2");
-
- if (cm->classmark3_len >= 1)
- snprintf(cm3, sizeof(cm3), " cm3{0x%x=%s%s%s%s}",
- cm->classmark3[0],
- cm->classmark3[0] & (1 << 0) ? " A5/4" : "",
- cm->classmark3[0] & (1 << 1) ? " A5/5" : "",
- cm->classmark3[0] & (1 << 2) ? " A5/6" : "",
- cm->classmark3[0] & (1 << 3) ? " A5/7" : "");
- else
- snprintf(cm3, sizeof(cm3), " no-cm3");
-
- snprintf(buf, sizeof(buf), "%s%s%s", cm1, cm2, cm3);
- return buf;
-}
-
-/* Determine if the given CLASSMARK (1/2/3) value permits a given A5/n cipher.
- * Return 1 when the given A5/n is permitted, 0 when not, and negative if the respective MS CLASSMARK is
- * not known, where the negative number indicates the classmark type: -2 means Classmark 2 is not
- * available. */
-static int classmark_supports_a5(const struct gsm_classmark *cm, uint8_t a5)
-{
- switch (a5) {
- case 0:
- /* all phones must implement A5/0, see 3GPP TS 43.020 4.9 */
- return 1;
- case 1:
- /* 3GPP TS 43.020 4.9 requires A5/1 to be suppored by all phones and actually states:
- * "The network shall not provide service to an MS which indicates that it does not
- * support the ciphering algorithm A5/1.". However, let's be more tolerant based
- * on policy here */
- /* See 3GPP TS 24.008 10.5.1.7 */
- if (!cm->classmark1_set) {
- DEBUGP(DMSC, "CLASSMARK 1 unknown, assuming MS supports A5/1\n");
- return -1;
- } else {
- if (cm->classmark1.a5_1)
- return 0; /* Inverted logic for this bit! */
- else
- return 1;
- }
- break;
- case 2:
- case 3:
- /* See 3GPP TS 24.008 10.5.1.6 */
- if (cm->classmark2_len < 3) {
- return -2;
- } else {
- if (cm->classmark2[2] & (1 << (a5-2)))
- return 1;
- else
- return 0;
- }
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- /* See 3GPP TS 24.008 10.5.1.7 */
- if (cm->classmark3_len < 1) {
- return -3;
- } else {
- if (cm->classmark3[0] & (1 << (a5-4)))
- return 1;
- else
- return 0;
- }
- break;
- default:
- return false;
- }
-}
-
-int gsm48_conn_sendmsg(struct msgb *msg, struct ran_conn *conn, struct gsm_trans *trans)
-{
- struct gsm48_hdr *gh = (struct gsm48_hdr *) msg->data;
-
- /* if we get passed a transaction reference, do some common
- * work that the caller no longer has to do */
- if (trans) {
- gh->proto_discr = trans->protocol | (trans->transaction_id << 4);
- OMSC_LINKID_CB(msg) = trans->dlci;
- }
-
- return msc_tx_dtap(conn, msg);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
/* clear all transactions globally; used in case of MNCC socket disconnect */
-void gsm0408_clear_all_trans(struct gsm_network *net, int protocol)
+void gsm0408_clear_all_trans(struct gsm_network *net, enum trans_type type)
{
struct gsm_trans *trans, *temp;
LOGP(DCC, LOGL_NOTICE, "Clearing all currently active transactions!!!\n");
llist_for_each_entry_safe(trans, temp, &net->trans_list, entry) {
- if (trans->protocol == protocol) {
+ if (trans->type == type) {
trans->callref = 0;
trans_free(trans);
}
@@ -240,33 +108,33 @@ void gsm0408_clear_all_trans(struct gsm_network *net, int protocol)
}
/* Chapter 9.2.14 : Send LOCATION UPDATING REJECT */
-static int gsm0408_loc_upd_rej(struct ran_conn *conn, uint8_t cause)
+static int gsm0408_loc_upd_rej(struct msc_a *msc_a, uint8_t cause)
{
struct msgb *msg;
msg = gsm48_create_loc_upd_rej(cause);
if (!msg) {
- LOGP(DMM, LOGL_ERROR, "Failed to create msg for LOCATION UPDATING REJECT.\n");
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "Failed to create msg for LOCATION UPDATING REJECT.\n");
return -1;
}
- LOGP(DMM, LOGL_INFO, "Subscriber %s: LOCATION UPDATING REJECT\n",
- vlr_subscr_name(conn->vsub));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_INFO, "LOCATION UPDATING REJECT\n");
- return gsm48_conn_sendmsg(msg, conn, NULL);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
/* Chapter 9.2.13 : Send LOCATION UPDATE ACCEPT */
-static int gsm0408_loc_upd_acc(struct ran_conn *conn,
- uint32_t send_tmsi)
+static int gsm0408_loc_upd_acc(struct msc_a *msc_a, uint32_t send_tmsi)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 LOC UPD ACC");
struct gsm48_hdr *gh;
struct gsm48_loc_area_id *lai;
uint8_t *mid;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
struct osmo_location_area_id laid = {
- .plmn = conn->network->plmn,
- .lac = conn->lac,
+ .plmn = net->plmn,
+ .lac = vsub->cgi.lai.lac,
};
gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
@@ -282,11 +150,11 @@ static int gsm0408_loc_upd_acc(struct ran_conn *conn,
* old TMSI that might still be allocated */
uint8_t mi[10];
int len;
- len = gsm48_generate_mid_from_imsi(mi, conn->vsub->imsi);
+ len = gsm48_generate_mid_from_imsi(mi, vsub->imsi);
mid = msgb_put(msg, len);
memcpy(mid, mi, len);
DEBUGP(DMM, "-> %s LOCATION UPDATE ACCEPT\n",
- vlr_subscr_name(conn->vsub));
+ vlr_subscr_name(vsub));
} else {
/* Include the TMSI, which means that the MS will send a
* TMSI REALLOCATION COMPLETE, and we should wait for
@@ -294,7 +162,7 @@ static int gsm0408_loc_upd_acc(struct ran_conn *conn,
mid = msgb_put(msg, GSM48_MID_TMSI_LEN);
gsm48_generate_mid_from_tmsi(mid, send_tmsi);
DEBUGP(DMM, "-> %s LOCATION UPDATE ACCEPT (TMSI = 0x%08x)\n",
- vlr_subscr_name(conn->vsub),
+ vlr_subscr_name(vsub),
send_tmsi);
}
/* TODO: Follow-on proceed */
@@ -304,11 +172,11 @@ static int gsm0408_loc_upd_acc(struct ran_conn *conn,
/* TODO: Per-MS T3312 */
- return gsm48_conn_sendmsg(msg, conn, NULL);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
/* Transmit Chapter 9.2.10 Identity Request */
-static int mm_tx_identity_req(struct ran_conn *conn, uint8_t id_type)
+static int mm_tx_identity_req(struct msc_a *msc_a, uint8_t id_type)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 ID REQ");
struct gsm48_hdr *gh;
@@ -318,17 +186,18 @@ static int mm_tx_identity_req(struct ran_conn *conn, uint8_t id_type)
gh->msg_type = GSM48_MT_MM_ID_REQ;
gh->data[0] = id_type;
- return gsm48_conn_sendmsg(msg, conn, NULL);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
/* Parse Chapter 9.2.11 Identity Response */
-static int mm_rx_id_resp(struct ran_conn *conn, struct msgb *msg)
+static int mm_rx_id_resp(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t *mi = gh->data+1;
uint8_t mi_len = gh->data[0];
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
- if (!conn->vsub) {
+ if (!vsub) {
LOGP(DMM, LOGL_ERROR,
"Rx MM Identity Response: invalid: no subscriber\n");
return -EINVAL;
@@ -338,14 +207,98 @@ static int mm_rx_id_resp(struct ran_conn *conn, struct msgb *msg)
osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, gh->data);
- return vlr_subscr_rx_id_resp(conn->vsub, mi, mi_len);
+ return vlr_subscr_rx_id_resp(vsub, mi, mi_len);
+}
+
+/* 9.2.5 CM service accept */
+static int msc_gsm48_tx_mm_serv_ack(struct msc_a *msc_a)
+{
+ struct msgb *msg;
+ struct gsm48_hdr *gh;
+
+ msg = gsm48_msgb_alloc_name("GSM 04.08 SERV ACC");
+
+ gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
+ gh->proto_discr = GSM48_PDISC_MM;
+ gh->msg_type = GSM48_MT_MM_CM_SERV_ACC;
+
+ return msc_a_tx_dtap_to_i(msc_a, msg);
+}
+
+/* 9.2.6 CM service reject */
+static int msc_gsm48_tx_mm_serv_rej(struct msc_a *msc_a,
+ enum gsm48_reject_value value)
+{
+ struct msgb *msg;
+
+ msg = gsm48_create_mm_serv_rej(value);
+ if (!msg) {
+ LOGP(DMM, LOGL_ERROR, "Failed to allocate CM Service Reject.\n");
+ return -1;
+ }
+
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "-> CM SERVICE Reject cause: %d\n", value);
+
+ return msc_a_tx_dtap_to_i(msc_a, msg);
+}
+
+
+/* Extract the R99 flag from various Complete Level 3 messages. Depending on the Message Type, extract R99 from the
+ * Classmark Type 1 or the Classmark Type 2. Return 1 for R99, 0 for pre-R99, negative if not a valid Complete Level 3
+ * message. */
+int compl_l3_msg_is_r99(const struct msgb *msg)
+{
+ const struct gsm48_hdr *gh = msgb_l3(msg);
+ uint8_t pdisc = gsm48_hdr_pdisc(gh);
+ const struct gsm48_loc_upd_req *lu;
+ const struct gsm48_imsi_detach_ind *idi;
+ uint8_t cm2_len;
+ const struct gsm48_classmark2 *cm2;
+
+ switch (pdisc) {
+ case GSM48_PDISC_MM:
+ switch (gsm48_hdr_msg_type(gh)) {
+ case GSM48_MT_MM_LOC_UPD_REQUEST:
+ lu = (const struct gsm48_loc_upd_req *) gh->data;
+ return osmo_gsm48_classmark1_is_r99(&lu->classmark1) ? 1 : 0;
+
+ case GSM48_MT_MM_CM_SERV_REQ:
+ case GSM48_MT_MM_CM_REEST_REQ:
+ break;
+
+ case GSM48_MT_MM_IMSI_DETACH_IND:
+ idi = (const struct gsm48_imsi_detach_ind *) gh->data;
+ return osmo_gsm48_classmark1_is_r99(&idi->classmark1) ? 1 : 0;
+
+ default:
+ return -1;
+ }
+ break;
+
+ case GSM48_PDISC_RR:
+ switch (gsm48_hdr_msg_type(gh)) {
+ case GSM48_MT_RR_PAG_RESP:
+ break;
+
+ default:
+ return -1;
+ }
+ break;
+
+ default:
+ return -1;
+ }
+
+ /* Both CM Service Request and Paging Response have Classmark Type 2 at the same location: */
+ cm2_len = gh->data[1];
+ cm2 = (void*)gh->data+2;
+ return osmo_gsm48_classmark2_is_r99(cm2, cm2_len) ? 1 : 0;
}
/* Chapter 9.2.15: Receive Location Updating Request.
* Keep this function non-static for direct invocation by unit tests. */
-int mm_rx_loc_upd_req(struct ran_conn *conn, struct msgb *msg)
+static int mm_rx_loc_upd_req(struct msc_a *msc_a, struct msgb *msg)
{
- struct gsm_network *net = conn->network;
struct gsm48_hdr *gh = msgb_l3(msg);
struct gsm48_loc_upd_req *lu;
uint8_t mi_type;
@@ -353,47 +306,49 @@ int mm_rx_loc_upd_req(struct ran_conn *conn, struct msgb *msg)
enum vlr_lu_type vlr_lu_type = VLR_LU_TYPE_REGULAR;
uint32_t tmsi;
char *imsi;
- struct osmo_location_area_id old_lai, new_lai;
+ struct osmo_location_area_id old_lai;
struct osmo_fsm_inst *lu_fsm;
bool is_utran;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub;
lu = (struct gsm48_loc_upd_req *) gh->data;
- if (ran_conn_is_establishing_auth_ciph(conn)) {
- LOG_RAN_CONN_CAT(conn, DMM, LOGL_ERROR,
- "Cannot accept another LU, conn already busy establishing authenticity;"
- " extraneous LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",
- osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));
+ if (msc_a_is_establishing_auth_ciph(msc_a)) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,
+ "Cannot accept another LU, conn already busy establishing authenticity;"
+ " extraneous LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",
+ osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));
return -EINVAL;
}
- if (ran_conn_is_accepted(conn)) {
- LOG_RAN_CONN_CAT(conn, DMM, LOGL_ERROR,
- "Cannot accept another LU, conn already established;"
- " extraneous LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",
- osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));
+ if (msc_a_is_accepted(msc_a)) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,
+ "Cannot accept another LU, conn already established;"
+ " extraneous LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",
+ osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));
return -EINVAL;
}
- conn->complete_layer3_type = COMPLETE_LAYER3_LU;
- ran_conn_update_id_from_mi(conn, lu->mi, lu->mi_len);
+ msc_a->complete_layer3_type = COMPLETE_LAYER3_LU;
+ msub_update_id_from_mi(msc_a->c.msub, lu->mi, lu->mi_len);
- LOG_RAN_CONN_CAT(conn, DMM, LOGL_DEBUG, "LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",
- osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "LOCATION UPDATING REQUEST: MI=%s LU-type=%s\n",
+ osmo_mi_name(lu->mi, lu->mi_len), osmo_lu_type_name(lu->type));
osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, &lu->mi_len);
switch (lu->type) {
case GSM48_LUPD_NORMAL:
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
vlr_lu_type = VLR_LU_TYPE_REGULAR;
break;
case GSM48_LUPD_IMSI_ATT:
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
vlr_lu_type = VLR_LU_TYPE_IMSI_ATTACH;
break;
case GSM48_LUPD_PERIODIC:
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
vlr_lu_type = VLR_LU_TYPE_PERIODIC;
break;
}
@@ -415,30 +370,33 @@ int mm_rx_loc_upd_req(struct ran_conn *conn, struct msgb *msg)
imsi = NULL;
break;
default:
- LOG_RAN_CONN_CAT(conn, DMM, LOGL_ERROR, "unknown mobile identity type\n");
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "unknown mobile identity type\n");
tmsi = GSM_RESERVED_TMSI;
imsi = NULL;
break;
}
gsm48_decode_lai2(&lu->lai, &old_lai);
- new_lai.plmn = conn->network->plmn;
- new_lai.lac = conn->lac;
- LOG_RAN_CONN_CAT(conn, DMM, LOGL_DEBUG, "LU/new-LAC: %u/%u\n", old_lai.lac, new_lai.lac);
-
- is_utran = (conn->via_ran == OSMO_RAT_UTRAN_IU);
- lu_fsm = vlr_loc_update(conn->fi,
- RAN_CONN_E_ACCEPTED, RAN_CONN_E_CN_CLOSE, NULL,
- net->vlr, conn, vlr_lu_type, tmsi, imsi,
- &old_lai, &new_lai,
- is_utran || conn->network->authentication_required,
- is_utran || conn->network->a5_encryption_mask > 0x01,
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "USIM: old LAI: %s\n", osmo_lai_name(&old_lai));
+
+ msc_a_get(msc_a, __func__);
+ msc_a_get(msc_a, MSC_A_USE_LOCATION_UPDATING);
+
+ is_utran = (msc_a->c.ran->type == OSMO_RAT_UTRAN_IU);
+ lu_fsm = vlr_loc_update(msc_a->c.fi,
+ MSC_A_EV_AUTHENTICATED, MSC_A_EV_CN_CLOSE, NULL,
+ net->vlr, msc_a, vlr_lu_type, tmsi, imsi,
+ &old_lai, &msc_a->via_cell.lai,
+ is_utran || net->authentication_required,
+ is_utran || net->a5_encryption_mask > 0x01,
lu->key_seq,
- classmark1_is_r99(&lu->classmark1),
+ osmo_gsm48_classmark1_is_r99(&lu->classmark1),
is_utran,
net->vlr->cfg.assign_tmsi);
if (!lu_fsm) {
- LOG_RAN_CONN(conn, LOGL_ERROR, "Can't start LU FSM\n");
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Can't start LU FSM\n");
+ msc_a_put(msc_a, MSC_A_USE_LOCATION_UPDATING);
+ msc_a_put(msc_a, __func__);
return 0;
}
@@ -446,15 +404,22 @@ int mm_rx_loc_upd_req(struct ran_conn *conn, struct msgb *msg)
* VLR_ULA_E_UPDATE_LA, and thus we expect msc_vlr_subscr_assoc() to
* already have been called and completed. Has an error occured? */
- if (!conn->vsub || conn->vsub->lu_fsm != lu_fsm) {
- LOG_RAN_CONN(conn, LOGL_ERROR, "internal error during Location Updating attempt\n");
- return -EIO;
+ vsub = msc_a_vsub(msc_a);
+ if (!vsub) {
+ msc_a_put(msc_a, __func__);
+ return 0;
}
- conn->vsub->classmark.classmark1 = lu->classmark1;
- conn->vsub->classmark.classmark1_set = true;
+ if (vsub->lu_fsm != lu_fsm) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Internal Error during Location Updating attempt\n");
+ msc_a_release_cn(msc_a);
+ msc_a_put(msc_a, __func__);
+ return -EIO;
+ }
- ran_conn_complete_layer_3(conn);
+ vsub->classmark.classmark1 = lu->classmark1;
+ vsub->classmark.classmark1_set = true;
+ msc_a_put(msc_a, __func__);
return 0;
}
@@ -621,15 +586,15 @@ struct msgb *gsm48_create_mm_info(struct gsm_network *net)
}
/* Section 9.2.15a */
-int gsm48_tx_mm_info(struct ran_conn *conn)
+int gsm48_tx_mm_info(struct msc_a *msc_a)
{
- struct gsm_network *net = conn->network;
+ struct gsm_network *net = msc_a_net(msc_a);
struct msgb *msg;
msg = gsm48_create_mm_info(net);
- LOG_RAN_CONN(conn, LOGL_DEBUG, "Tx MM INFO\n");
- return gsm48_conn_sendmsg(msg, conn, NULL);
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Tx MM INFO\n");
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
/*! Send an Authentication Request to MS on the given RAN connection
@@ -640,7 +605,7 @@ int gsm48_tx_mm_info(struct ran_conn *conn)
* send; must be 16 bytes long, or pass NULL for plain GSM auth.
* \param[in] key_seq auth tuple's sequence number.
*/
-int gsm48_tx_mm_auth_req(struct ran_conn *conn, uint8_t *rand,
+int gsm48_tx_mm_auth_req(struct msc_a *msc_a, uint8_t *rand,
uint8_t *autn, int key_seq)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 AUTH REQ");
@@ -666,61 +631,59 @@ int gsm48_tx_mm_auth_req(struct ran_conn *conn, uint8_t *rand,
if (autn)
msgb_tlv_put(msg, GSM48_IE_AUTN, 16, autn);
- return gsm48_conn_sendmsg(msg, conn, NULL);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
/* Section 9.2.1 */
-int gsm48_tx_mm_auth_rej(struct ran_conn *conn)
+int gsm48_tx_mm_auth_rej(struct msc_a *msc_a)
{
- DEBUGP(DMM, "-> AUTH REJECT\n");
- return gsm48_tx_simple(conn, GSM48_PDISC_MM, GSM48_MT_MM_AUTH_REJ);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "-> AUTH REJECT\n");
+ return gsm48_tx_simple(msc_a, GSM48_PDISC_MM, GSM48_MT_MM_AUTH_REJ);
}
-static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref);
-static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value result);
+static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type,
+ enum gsm48_reject_value cause);
-static int cm_serv_reuse_conn(struct ran_conn *conn, const uint8_t *mi_lv)
+static int cm_serv_reuse_conn(struct msc_a *msc_a, const uint8_t *mi_lv, enum osmo_cm_service_type cm_serv_type)
{
uint8_t mi_type;
char mi_string[GSM48_MI_SIZE];
uint32_t tmsi;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
gsm48_mi_to_string(mi_string, sizeof(mi_string), mi_lv+1, mi_lv[0]);
mi_type = mi_lv[1] & GSM_MI_TYPE_MASK;
switch (mi_type) {
case GSM_MI_TYPE_IMSI:
- if (vlr_subscr_matches_imsi(conn->vsub, mi_string))
+ if (vlr_subscr_matches_imsi(vsub, mi_string))
goto accept_reuse;
break;
case GSM_MI_TYPE_TMSI:
tmsi = osmo_load32be(mi_lv+2);
- if (vlr_subscr_matches_tmsi(conn->vsub, tmsi))
+ if (vlr_subscr_matches_tmsi(vsub, tmsi))
goto accept_reuse;
break;
case GSM_MI_TYPE_IMEI:
- if (vlr_subscr_matches_imei(conn->vsub, mi_string))
+ if (vlr_subscr_matches_imei(vsub, mi_string))
goto accept_reuse;
break;
default:
break;
}
- LOGP(DMM, LOGL_ERROR, "%s: CM Service Request with mismatching mobile identity: %s %s\n",
- vlr_subscr_name(conn->vsub), gsm48_mi_type_name(mi_type), mi_string);
- msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_ILLEGAL_MS);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "CM Service Request with mismatching mobile identity: %s %s\n",
+ gsm48_mi_type_name(mi_type), mi_string);
+ msc_vlr_tx_cm_serv_rej(msc_a, cm_serv_type, GSM48_REJECT_ILLEGAL_MS);
return -EINVAL;
accept_reuse:
- DEBUGP(DMM, "%s: re-using already accepted connection\n",
- vlr_subscr_name(conn->vsub));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "re-using already accepted connection\n");
- if (!conn->received_cm_service_request) {
- conn->received_cm_service_request = true;
- ran_conn_get(conn, RAN_CONN_USE_CM_SERVICE);
- }
- ran_conn_update_id(conn);
- return conn->network->vlr->ops.tx_cm_serv_acc(conn);
+ msc_a_get(msc_a, msc_a_cm_service_type_to_use(cm_serv_type));
+ msub_update_id(msc_a->c.msub);
+ return net->vlr->ops.tx_cm_serv_acc(msc_a, cm_serv_type);
}
/*
@@ -734,50 +697,45 @@ accept_reuse:
*
* Keep this function non-static for direct invocation by unit tests.
*/
-int gsm48_rx_mm_serv_req(struct ran_conn *conn, struct msgb *msg)
+int gsm48_rx_mm_serv_req(struct msc_a *msc_a, struct msgb *msg)
{
- struct gsm_network *net = conn->network;
+ struct gsm_network *net = msc_a_net(msc_a);
uint8_t mi_type;
struct gsm48_hdr *gh = msgb_l3(msg);
struct gsm48_service_request *req =
(struct gsm48_service_request *)gh->data;
/* unfortunately in Phase1 the classmark2 length is variable */
uint8_t classmark2_len = gh->data[1];
- uint8_t *classmark2 = gh->data+2;
- uint8_t *mi_p = classmark2 + classmark2_len;
+ uint8_t *classmark2_buf = gh->data+2;
+ struct gsm48_classmark2 *cm2 = (void*)classmark2_buf;
+ uint8_t *mi_p = classmark2_buf + classmark2_len;
uint8_t mi_len = *mi_p;
uint8_t *mi = mi_p + 1;
- struct osmo_location_area_id lai;
bool is_utran;
-
- lai.plmn = conn->network->plmn;
- lai.lac = conn->lac;
+ struct vlr_subscr *vsub;
if (msg->data_len < sizeof(struct gsm48_service_request*)) {
- LOG_RAN_CONN(conn, LOGL_ERROR, "Rx CM SERVICE REQUEST: wrong message size (%u < %zu)\n",
- msg->data_len, sizeof(struct gsm48_service_request*));
- return msc_gsm48_tx_mm_serv_rej(conn,
- GSM48_REJECT_INCORRECT_MESSAGE);
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Rx CM SERVICE REQUEST: wrong message size (%u < %zu)\n",
+ msg->data_len, sizeof(struct gsm48_service_request*));
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);
}
if (msg->data_len < req->mi_len + 6) {
- LOG_RAN_CONN(conn, LOGL_ERROR, "Rx CM SERVICE REQUEST: message does not fit in packet\n");
- return msc_gsm48_tx_mm_serv_rej(conn,
- GSM48_REJECT_INCORRECT_MESSAGE);
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Rx CM SERVICE REQUEST: message does not fit in packet\n");
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);
}
- if (ran_conn_is_establishing_auth_ciph(conn)) {
- LOG_RAN_CONN(conn, LOGL_ERROR,
- "Cannot accept CM Service Request, conn already busy establishing authenticity\n");
- msc_vlr_tx_cm_serv_rej(conn, GSM48_REJECT_CONGESTION);
- return -EINVAL;
+ if (msc_a_is_establishing_auth_ciph(msc_a)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "Cannot accept CM Service Request, conn already busy establishing authenticity\n");
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_CONGESTION);
/* or should we accept and note down the service request anyway? */
}
- conn->complete_layer3_type = COMPLETE_LAYER3_CM_SERVICE_REQ;
- ran_conn_update_id_from_mi(conn, mi, mi_len);
- LOG_RAN_CONN_CAT(conn, DMM, LOGL_DEBUG, "Rx CM SERVICE REQUEST cm_service_type=0x%02x\n",
- req->cm_service_type);
+ msc_a->complete_layer3_type = COMPLETE_LAYER3_CM_SERVICE_REQ;
+ msub_update_id_from_mi(msc_a->c.msub, mi, mi_len);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "Rx CM SERVICE REQUEST cm_service_type=%s\n",
+ osmo_cm_service_type_name(req->cm_service_type));
mi_type = (mi && mi_len) ? (mi[0] & GSM_MI_TYPE_MASK) : GSM_MI_TYPE_NONE;
switch (mi_type) {
@@ -788,59 +746,53 @@ int gsm48_rx_mm_serv_req(struct ran_conn *conn, struct msgb *msg)
case GSM_MI_TYPE_IMEI:
if (req->cm_service_type == GSM48_CMSERV_EMERGENCY) {
/* We don't do emergency calls by IMEI */
- LOG_RAN_CONN(conn, LOGL_NOTICE, "Tx CM SERVICE REQUEST REJECT\n");
- return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_IMEI_NOT_ACCEPTED);
+ LOG_MSC_A(msc_a, LOGL_NOTICE, "Tx CM SERVICE REQUEST REJECT\n");
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_IMEI_NOT_ACCEPTED);
}
/* fall-through for non-emergency setup */
default:
- LOG_RAN_CONN(conn, LOGL_ERROR, "MI type is not expected: %s\n", gsm48_mi_type_name(mi_type));
- return msc_gsm48_tx_mm_serv_rej(conn,
- GSM48_REJECT_INCORRECT_MESSAGE);
+ LOG_MSC_A(msc_a, LOGL_ERROR, "MI type is not expected: %s\n", gsm48_mi_type_name(mi_type));
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_INCORRECT_MESSAGE);
}
- switch (req->cm_service_type) {
- case GSM48_CMSERV_MO_CALL_PACKET:
- case GSM48_CMSERV_EMERGENCY:
- case GSM48_CMSERV_SMS:
- case GSM48_CMSERV_SUP_SERV:
- /* continue below */
- break;
- default:
- return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
- }
+ if (!msc_a_cm_service_type_to_use(req->cm_service_type))
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
- if (ran_conn_is_accepted(conn))
- return cm_serv_reuse_conn(conn, mi_p);
+ if (msc_a_is_accepted(msc_a))
+ return cm_serv_reuse_conn(msc_a, mi_p, req->cm_service_type);
osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_IDENTITY, mi_p);
- is_utran = (conn->via_ran == OSMO_RAT_UTRAN_IU);
- vlr_proc_acc_req(conn->fi,
- RAN_CONN_E_ACCEPTED, RAN_CONN_E_CN_CLOSE, NULL,
- net->vlr, conn,
- VLR_PR_ARQ_T_CM_SERV_REQ, mi-1, &lai,
- is_utran || conn->network->authentication_required,
- is_utran || conn->network->a5_encryption_mask > 0x01,
+ msc_a_get(msc_a, msc_a_cm_service_type_to_use(req->cm_service_type));
+
+ is_utran = (msc_a->c.ran->type == OSMO_RAT_UTRAN_IU);
+ vlr_proc_acc_req(msc_a->c.fi,
+ MSC_A_EV_AUTHENTICATED, MSC_A_EV_CN_CLOSE, NULL,
+ net->vlr, msc_a,
+ VLR_PR_ARQ_T_CM_SERV_REQ,
+ req->cm_service_type,
+ mi-1, &msc_a->via_cell.lai,
+ is_utran || net->authentication_required,
+ is_utran || net->a5_encryption_mask > 0x01,
req->cipher_key_seq,
- classmark2_is_r99(classmark2, classmark2_len),
+ osmo_gsm48_classmark2_is_r99(cm2, classmark2_len),
is_utran);
/* From vlr_proc_acc_req() we expect an implicit dispatch of PR_ARQ_E_START we expect
* msc_vlr_subscr_assoc() to already have been called and completed. Has an error occured? */
- if (!conn->vsub) {
- LOG_RAN_CONN(conn, LOGL_ERROR, "subscriber not allowed to do a CM Service Request\n");
+ vsub = msc_a_vsub(msc_a);
+ if (!vsub) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "subscriber not allowed to do a CM Service Request\n");
return -EIO;
}
- memcpy(conn->vsub->classmark.classmark2, classmark2, classmark2_len);
- conn->vsub->classmark.classmark2_len = classmark2_len;
-
- ran_conn_complete_layer_3(conn);
+ vsub->classmark.classmark2 = *cm2;
+ vsub->classmark.classmark2_len = classmark2_len;
return 0;
}
/* Receive a CM Re-establish Request */
-static int gsm48_rx_cm_reest_req(struct ran_conn *conn, struct msgb *msg)
+static int gsm48_rx_cm_reest_req(struct msc_a *msc_a, struct msgb *msg)
{
uint8_t mi_type;
char mi_string[GSM48_MI_SIZE];
@@ -856,12 +808,12 @@ static int gsm48_rx_cm_reest_req(struct ran_conn *conn, struct msgb *msg)
DEBUGP(DMM, "<- CM RE-ESTABLISH REQUEST MI(%s)=%s\n", gsm48_mi_type_name(mi_type), mi_string);
/* we don't support CM call re-establishment */
- return msc_gsm48_tx_mm_serv_rej(conn, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
+ return msc_gsm48_tx_mm_serv_rej(msc_a, GSM48_REJECT_SRV_OPT_NOT_SUPPORTED);
}
-static int gsm48_rx_mm_imsi_detach_ind(struct ran_conn *conn, struct msgb *msg)
+static int gsm48_rx_mm_imsi_detach_ind(struct msc_a *msc_a, struct msgb *msg)
{
- struct gsm_network *network = conn->network;
+ struct gsm_network *net = msc_a_net(msc_a);
struct gsm48_hdr *gh = msgb_l3(msg);
struct gsm48_imsi_detach_ind *idi =
(struct gsm48_imsi_detach_ind *) gh->data;
@@ -873,15 +825,15 @@ static int gsm48_rx_mm_imsi_detach_ind(struct ran_conn *conn, struct msgb *msg)
DEBUGP(DMM, "IMSI DETACH INDICATION: MI(%s)=%s\n",
gsm48_mi_type_name(mi_type), mi_string);
- rate_ctr_inc(&network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
switch (mi_type) {
case GSM_MI_TYPE_TMSI:
- vsub = vlr_subscr_find_by_tmsi(network->vlr,
+ vsub = vlr_subscr_find_by_tmsi(net->vlr,
tmsi_from_string(mi_string), __func__);
break;
case GSM_MI_TYPE_IMSI:
- vsub = vlr_subscr_find_by_imsi(network->vlr, mi_string, __func__);
+ vsub = vlr_subscr_find_by_imsi(net->vlr, mi_string, __func__);
break;
case GSM_MI_TYPE_IMEI:
case GSM_MI_TYPE_IMEISV:
@@ -895,16 +847,17 @@ static int gsm48_rx_mm_imsi_detach_ind(struct ran_conn *conn, struct msgb *msg)
break;
}
+
if (!vsub) {
LOGP(DMM, LOGL_ERROR, "IMSI DETACH for unknown subscriber MI(%s)=%s\n",
gsm48_mi_type_name(mi_type), mi_string);
} else {
LOGP(DMM, LOGL_INFO, "IMSI DETACH for %s\n", vlr_subscr_name(vsub));
+ msub_set_vsub(msc_a->c.msub, vsub);
if (vsub->cs.is_paging)
- subscr_paging_cancel(vsub, GSM_PAGING_EXPIRED);
+ paging_expired(vsub);
- /* We already got Classmark 1 during Location Updating ... but well, ok */
vsub->classmark.classmark1 = idi->classmark1;
vlr_subscr_rx_imsi_detach(vsub);
@@ -912,7 +865,7 @@ static int gsm48_rx_mm_imsi_detach_ind(struct ran_conn *conn, struct msgb *msg)
vlr_subscr_put(vsub, __func__);
}
- ran_conn_close(conn, 0);
+ msc_a_release_cn(msc_a);
return 0;
}
@@ -926,17 +879,15 @@ static int gsm48_rx_mm_status(struct msgb *msg)
}
static int parse_gsm_auth_resp(uint8_t *res, uint8_t *res_len,
- struct ran_conn *conn,
+ struct msc_a *msc_a,
struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
struct gsm48_auth_resp *ar = (struct gsm48_auth_resp*) gh->data;
if (msgb_l3len(msg) < sizeof(*gh) + sizeof(*ar)) {
- LOGP(DMM, LOGL_ERROR,
- "%s: MM AUTHENTICATION RESPONSE:"
- " l3 length invalid: %u\n",
- vlr_subscr_name(conn->vsub), msgb_l3len(msg));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "MM AUTHENTICATION RESPONSE: l3 length invalid: %u\n",
+ msgb_l3len(msg));
return -EINVAL;
}
@@ -946,7 +897,7 @@ static int parse_gsm_auth_resp(uint8_t *res, uint8_t *res_len,
}
static int parse_umts_auth_resp(uint8_t *res, uint8_t *res_len,
- struct ran_conn *conn,
+ struct msc_a *msc_a,
struct msgb *msg)
{
struct gsm48_hdr *gh;
@@ -956,7 +907,7 @@ static int parse_umts_auth_resp(uint8_t *res, uint8_t *res_len,
unsigned int data_len;
/* First parse the GSM part */
- if (parse_gsm_auth_resp(res, res_len, conn, msg))
+ if (parse_gsm_auth_resp(res, res_len, msc_a, msg))
return -EINVAL;
OSMO_ASSERT(*res_len == 4);
@@ -966,29 +917,23 @@ static int parse_umts_auth_resp(uint8_t *res, uint8_t *res_len,
data_len = msgb_l3len(msg) - (data - (uint8_t*)msgb_l3(msg));
if (data_len < 3) {
- LOGP(DMM, LOGL_ERROR,
- "%s: MM AUTHENTICATION RESPONSE:"
- " l3 length invalid: %u\n",
- vlr_subscr_name(conn->vsub), msgb_l3len(msg));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "MM AUTHENTICATION RESPONSE: l3 length invalid: %u\n",
+ msgb_l3len(msg));
return -EINVAL;
}
iei = data[0];
ie_len = data[1];
if (iei != GSM48_IE_AUTH_RES_EXT) {
- LOGP(DMM, LOGL_ERROR,
- "%s: MM R99 AUTHENTICATION RESPONSE:"
- " expected IEI 0x%02x, got 0x%02x\n",
- vlr_subscr_name(conn->vsub),
- GSM48_IE_AUTH_RES_EXT, iei);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "MM R99 AUTHENTICATION RESPONSE: expected IEI 0x%02x, got 0x%02x\n",
+ GSM48_IE_AUTH_RES_EXT, iei);
return -EINVAL;
}
if (ie_len > 12) {
- LOGP(DMM, LOGL_ERROR,
- "%s: MM R99 AUTHENTICATION RESPONSE:"
- " extended Auth Resp IE 0x%02x is too large: %u bytes\n",
- vlr_subscr_name(conn->vsub), GSM48_IE_AUTH_RES_EXT, ie_len);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,
+ "MM R99 AUTHENTICATION RESPONSE: extended Auth Resp IE 0x%02x is too large: %u bytes\n",
+ GSM48_IE_AUTH_RES_EXT, ie_len);
return -EINVAL;
}
@@ -998,77 +943,72 @@ static int parse_umts_auth_resp(uint8_t *res, uint8_t *res_len,
}
/* Chapter 9.2.3: Authentication Response */
-static int gsm48_rx_mm_auth_resp(struct ran_conn *conn, struct msgb *msg)
+static int gsm48_rx_mm_auth_resp(struct msc_a *msc_a, struct msgb *msg)
{
uint8_t res[16];
uint8_t res_len;
int rc;
bool is_umts;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
- if (!conn->vsub) {
- LOGP(DMM, LOGL_ERROR,
- "MM AUTHENTICATION RESPONSE: invalid: no subscriber\n");
- ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ if (!vsub) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "MM AUTHENTICATION RESPONSE: invalid: no subscriber\n");
+ msc_a_release_mo(msc_a, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
is_umts = (msgb_l3len(msg) > sizeof(struct gsm48_hdr) + sizeof(struct gsm48_auth_resp));
if (is_umts)
- rc = parse_umts_auth_resp(res, &res_len, conn, msg);
+ rc = parse_umts_auth_resp(res, &res_len, msc_a, msg);
else
- rc = parse_gsm_auth_resp(res, &res_len, conn, msg);
+ rc = parse_gsm_auth_resp(res, &res_len, msc_a, msg);
if (rc) {
- LOGP(DMM, LOGL_ERROR,
- "%s: MM AUTHENTICATION RESPONSE: invalid: parsing %s AKA Auth Response"
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,
+ "MM AUTHENTICATION RESPONSE: invalid: parsing %s AKA Auth Response"
" failed with rc=%d; dispatching zero length SRES/RES to trigger failure\n",
- vlr_subscr_name(conn->vsub), is_umts ? "UMTS" : "GSM", rc);
+ is_umts ? "UMTS" : "GSM", rc);
memset(res, 0, sizeof(res));
res_len = 0;
}
- DEBUGP(DMM, "%s: MM %s AUTHENTICATION RESPONSE (%s = %s)\n",
- vlr_subscr_name(conn->vsub),
- is_umts ? "UMTS" : "GSM", is_umts ? "res" : "sres",
- osmo_hexdump_nospc(res, res_len));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "MM %s AUTHENTICATION RESPONSE (%s = %s)\n",
+ is_umts ? "UMTS" : "GSM", is_umts ? "res" : "sres",
+ osmo_hexdump_nospc(res, res_len));
- return vlr_subscr_rx_auth_resp(conn->vsub, classmark_is_r99(&conn->vsub->classmark),
- conn->via_ran == OSMO_RAT_UTRAN_IU,
+ return vlr_subscr_rx_auth_resp(vsub, osmo_gsm48_classmark_is_r99(&vsub->classmark),
+ msc_a->c.ran->type == OSMO_RAT_UTRAN_IU,
res, res_len);
}
-static int gsm48_rx_mm_auth_fail(struct ran_conn *conn, struct msgb *msg)
+static int gsm48_rx_mm_auth_fail(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t cause;
uint8_t auts_tag;
uint8_t auts_len;
uint8_t *auts;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
- if (!conn->vsub) {
- LOGP(DMM, LOGL_ERROR,
- "MM R99 AUTHENTICATION FAILURE: invalid: no subscriber\n");
- ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ if (!vsub) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "MM R99 AUTHENTICATION FAILURE: invalid: no subscriber\n");
+ msc_a_release_mo(msc_a, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
if (msgb_l3len(msg) < sizeof(*gh) + 1) {
- LOGP(DMM, LOGL_ERROR,
- "%s: MM R99 AUTHENTICATION FAILURE:"
- " l3 length invalid: %u\n",
- vlr_subscr_name(conn->vsub), msgb_l3len(msg));
- ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "MM R99 AUTHENTICATION FAILURE: l3 length invalid: %u\n",
+ msgb_l3len(msg));
+ msc_a_release_mo(msc_a, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
cause = gh->data[0];
if (cause != GSM48_REJECT_SYNCH_FAILURE) {
- LOGP(DMM, LOGL_INFO,
- "%s: MM R99 AUTHENTICATION FAILURE: cause 0x%0x\n",
- vlr_subscr_name(conn->vsub), cause);
- vlr_subscr_rx_auth_fail(conn->vsub, NULL);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_INFO, "MM R99 AUTHENTICATION FAILURE: cause 0x%0x\n", cause);
+ vlr_subscr_rx_auth_fail(vsub, NULL);
return 0;
}
@@ -1077,11 +1017,9 @@ static int gsm48_rx_mm_auth_fail(struct ran_conn *conn, struct msgb *msg)
* TLV with 14 bytes of AUTS. */
if (msgb_l3len(msg) < sizeof(*gh) + 1 + 2) {
- LOGP(DMM, LOGL_INFO,
- "%s: MM R99 AUTHENTICATION FAILURE:"
- " invalid Synch Failure: missing AUTS IE\n",
- vlr_subscr_name(conn->vsub));
- ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_INFO,
+ "MM R99 AUTHENTICATION FAILURE: invalid Synch Failure: missing AUTS IE\n");
+ msc_a_release_mo(msc_a, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
@@ -1091,80 +1029,76 @@ static int gsm48_rx_mm_auth_fail(struct ran_conn *conn, struct msgb *msg)
if (auts_tag != GSM48_IE_AUTS
|| auts_len != 14) {
- LOGP(DMM, LOGL_INFO,
- "%s: MM R99 AUTHENTICATION FAILURE:"
- " invalid Synch Failure:"
- " expected AUTS IE 0x%02x of 14 bytes,"
- " got IE 0x%02x of %u bytes\n",
- vlr_subscr_name(conn->vsub),
- GSM48_IE_AUTS, auts_tag, auts_len);
- ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_INFO,
+ "MM R99 AUTHENTICATION FAILURE: invalid Synch Failure:"
+ " expected AUTS IE 0x%02x of 14 bytes,"
+ " got IE 0x%02x of %u bytes\n",
+ GSM48_IE_AUTS, auts_tag, auts_len);
+ msc_a_release_mo(msc_a, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
if (msgb_l3len(msg) < sizeof(*gh) + 1 + 2 + auts_len) {
- LOGP(DMM, LOGL_INFO,
- "%s: MM R99 AUTHENTICATION FAILURE:"
- " invalid Synch Failure msg: message truncated (%u)\n",
- vlr_subscr_name(conn->vsub), msgb_l3len(msg));
- ran_conn_close(conn, GSM_CAUSE_AUTH_FAILED);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_INFO,
+ "MM R99 AUTHENTICATION FAILURE: invalid Synch Failure msg: message truncated (%u)\n",
+ msgb_l3len(msg));
+ msc_a_release_mo(msc_a, GSM_CAUSE_AUTH_FAILED);
return -EINVAL;
}
/* We have an AUTS IE with exactly 14 bytes of AUTS and the msgb is
* large enough. */
- DEBUGP(DMM, "%s: MM R99 AUTHENTICATION SYNCH (AUTS = %s)\n",
- vlr_subscr_name(conn->vsub), osmo_hexdump_nospc(auts, 14));
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "MM R99 AUTHENTICATION SYNCH (AUTS = %s)\n",
+ osmo_hexdump_nospc(auts, 14));
- return vlr_subscr_rx_auth_fail(conn->vsub, auts);
+ return vlr_subscr_rx_auth_fail(vsub, auts);
}
-static int gsm48_rx_mm_tmsi_reall_compl(struct ran_conn *conn)
+static int gsm48_rx_mm_tmsi_reall_compl(struct msc_a *msc_a)
{
- DEBUGP(DMM, "TMSI Reallocation Completed. Subscriber: %s\n",
- vlr_subscr_name(conn->vsub));
- if (!conn->vsub) {
- LOGP(DMM, LOGL_ERROR,
- "Rx MM TMSI Reallocation Complete: invalid: no subscriber\n");
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ if (!vsub) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "Rx MM TMSI Reallocation Complete: invalid: no subscriber\n");
return -EINVAL;
}
- return vlr_subscr_rx_tmsi_reall_compl(conn->vsub);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "TMSI Reallocation Completed\n");
+ return vlr_subscr_rx_tmsi_reall_compl(vsub);
}
/* Receive a GSM 04.08 Mobility Management (MM) message */
-static int gsm0408_rcv_mm(struct ran_conn *conn, struct msgb *msg)
+int gsm0408_rcv_mm(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
int rc = 0;
switch (gsm48_hdr_msg_type(gh)) {
case GSM48_MT_MM_LOC_UPD_REQUEST:
- rc = mm_rx_loc_upd_req(conn, msg);
+ rc = mm_rx_loc_upd_req(msc_a, msg);
break;
case GSM48_MT_MM_ID_RESP:
- rc = mm_rx_id_resp(conn, msg);
+ rc = mm_rx_id_resp(msc_a, msg);
break;
case GSM48_MT_MM_CM_SERV_REQ:
- rc = gsm48_rx_mm_serv_req(conn, msg);
+ rc = gsm48_rx_mm_serv_req(msc_a, msg);
break;
case GSM48_MT_MM_STATUS:
rc = gsm48_rx_mm_status(msg);
break;
case GSM48_MT_MM_TMSI_REALL_COMPL:
- rc = gsm48_rx_mm_tmsi_reall_compl(conn);
+ rc = gsm48_rx_mm_tmsi_reall_compl(msc_a);
break;
case GSM48_MT_MM_IMSI_DETACH_IND:
- rc = gsm48_rx_mm_imsi_detach_ind(conn, msg);
+ rc = gsm48_rx_mm_imsi_detach_ind(msc_a, msg);
break;
case GSM48_MT_MM_CM_REEST_REQ:
- rc = gsm48_rx_cm_reest_req(conn, msg);
+ rc = gsm48_rx_cm_reest_req(msc_a, msg);
break;
case GSM48_MT_MM_AUTH_RESP:
- rc = gsm48_rx_mm_auth_resp(conn, msg);
+ rc = gsm48_rx_mm_auth_resp(msc_a, msg);
break;
case GSM48_MT_MM_AUTH_FAIL:
- rc = gsm48_rx_mm_auth_fail(conn, msg);
+ rc = gsm48_rx_mm_auth_fail(msc_a, msg);
break;
default:
LOGP(DMM, LOGL_NOTICE, "Unknown GSM 04.08 MM msg type 0x%02x\n",
@@ -1176,62 +1110,85 @@ static int gsm0408_rcv_mm(struct ran_conn *conn, struct msgb *msg)
}
/* Receive a PAGING RESPONSE message from the MS */
-static int gsm48_rx_rr_pag_resp(struct ran_conn *conn, struct msgb *msg)
+static int gsm48_rx_rr_pag_resp(struct msc_a *msc_a, struct msgb *msg)
{
- struct gsm_network *net = conn->network;
+ struct gsm_network *net = msc_a_net(msc_a);
struct gsm48_hdr *gh = msgb_l3(msg);
struct gsm48_pag_resp *pr =
(struct gsm48_pag_resp *)gh->data;
uint8_t classmark2_len = gh->data[1];
- uint8_t *classmark2 = gh->data+2;
- uint8_t *mi_lv = classmark2 + classmark2_len;
- struct osmo_location_area_id lai;
+ uint8_t *classmark2_buf = gh->data+2;
+ struct gsm48_classmark2 *cm2 = (void*)classmark2_buf;
+ uint8_t *mi_lv = classmark2_buf + classmark2_len;
bool is_utran;
+ struct vlr_subscr *vsub;
- lai.plmn = conn->network->plmn;
- lai.lac = conn->lac;
-
- if (ran_conn_is_establishing_auth_ciph(conn)) {
- LOGP(DMM, LOGL_ERROR,
- "Ignoring Paging Response, conn already busy establishing authenticity\n");
+ if (msc_a_is_establishing_auth_ciph(msc_a)) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR,
+ "Ignoring Paging Response, conn already busy establishing authenticity\n");
return 0;
}
- if (ran_conn_is_accepted(conn)) {
- LOGP(DMM, LOGL_ERROR, "Ignoring Paging Response, conn already established\n");
+ if (msc_a_is_accepted(msc_a)) {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_ERROR, "Ignoring Paging Response, conn already established\n");
return 0;
}
- conn->complete_layer3_type = COMPLETE_LAYER3_PAGING_RESP;
- ran_conn_update_id_from_mi(conn, mi_lv + 1, *mi_lv);
- LOG_RAN_CONN_CAT(conn, DRR, LOGL_DEBUG, "PAGING RESPONSE\n");
-
- is_utran = (conn->via_ran == OSMO_RAT_UTRAN_IU);
- vlr_proc_acc_req(conn->fi,
- RAN_CONN_E_ACCEPTED, RAN_CONN_E_CN_CLOSE, NULL,
- net->vlr, conn,
- VLR_PR_ARQ_T_PAGING_RESP, mi_lv, &lai,
- is_utran || conn->network->authentication_required,
- is_utran || conn->network->a5_encryption_mask > 0x01,
+ msc_a->complete_layer3_type = COMPLETE_LAYER3_PAGING_RESP;
+ msub_update_id_from_mi(msc_a->c.msub, mi_lv + 1, *mi_lv);
+ LOG_MSC_A_CAT(msc_a, DRR, LOGL_DEBUG, "Rx PAGING RESPONSE\n");
+
+ msc_a_get(msc_a, MSC_A_USE_PAGING_RESPONSE);
+
+ is_utran = (msc_a->c.ran->type == OSMO_RAT_UTRAN_IU);
+ vlr_proc_acc_req(msc_a->c.fi,
+ MSC_A_EV_AUTHENTICATED, MSC_A_EV_CN_CLOSE, NULL,
+ net->vlr, msc_a,
+ VLR_PR_ARQ_T_PAGING_RESP, 0, mi_lv, &msc_a->via_cell.lai,
+ is_utran || net->authentication_required,
+ is_utran || net->a5_encryption_mask > 0x01,
pr->key_seq,
- classmark2_is_r99(classmark2, classmark2_len),
+ osmo_gsm48_classmark2_is_r99(cm2, classmark2_len),
is_utran);
/* From vlr_proc_acc_req() we expect an implicit dispatch of PR_ARQ_E_START we expect
* msc_vlr_subscr_assoc() to already have been called and completed. Has an error occured? */
- if (!conn->vsub) {
- LOG_RAN_CONN(conn, LOGL_ERROR, "subscriber not allowed to do a Paging Response\n");
+ vsub = msc_a_vsub(msc_a);
+ if (!vsub) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "subscriber not allowed to do a Paging Response\n");
+ msc_a_put(msc_a, MSC_A_USE_PAGING_RESPONSE);
return -EIO;
}
- memcpy(conn->vsub->classmark.classmark2, classmark2, classmark2_len);
- conn->vsub->classmark.classmark2_len = classmark2_len;
-
- ran_conn_complete_layer_3(conn);
+ vsub->classmark.classmark2 = *cm2;
+ vsub->classmark.classmark2_len = classmark2_len;
return 0;
}
-static int gsm48_rx_rr_app_info(struct ran_conn *conn, struct msgb *msg)
+static int gsm48_rx_rr_ciphering_mode_complete(struct msc_a *msc_a, struct msgb *msg)
+{
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct gsm48_hdr *gh = msgb_l3(msg);
+ unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
+ struct tlv_parsed tp;
+ struct tlv_p_entry *mi;
+
+ tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
+ mi = TLVP_GET(&tp, GSM48_IE_MOBILE_ID);
+
+ if (!mi)
+ return 0;
+
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Ciphering Mode Complete contains Mobile Identity: %s\n",
+ osmo_mi_name(mi->val, mi->len));
+
+ if (!vsub)
+ return 0;
+
+ return vlr_subscr_rx_id_resp(vsub, mi->val, mi->len);
+}
+
+static int gsm48_rx_rr_app_info(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t apdu_id_flags;
@@ -1254,28 +1211,31 @@ static int gsm48_rx_rr_app_info(struct ran_conn *conn, struct msgb *msg)
}
/* Receive a GSM 04.08 Radio Resource (RR) message */
-static int gsm0408_rcv_rr(struct ran_conn *conn, struct msgb *msg)
+int gsm0408_rcv_rr(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
int rc = 0;
switch (gh->msg_type) {
case GSM48_MT_RR_PAG_RESP:
- rc = gsm48_rx_rr_pag_resp(conn, msg);
+ rc = gsm48_rx_rr_pag_resp(msc_a, msg);
+ break;
+ case GSM48_MT_RR_CIPH_M_COMPL:
+ rc = gsm48_rx_rr_ciphering_mode_complete(msc_a, msg);
break;
case GSM48_MT_RR_APP_INFO:
- rc = gsm48_rx_rr_app_info(conn, msg);
+ rc = gsm48_rx_rr_app_info(msc_a, msg);
break;
default:
- LOGP(DRR, LOGL_NOTICE, "MSC: Unimplemented %s GSM 04.08 RR "
- "message\n", gsm48_rr_msg_name(gh->msg_type));
+ LOG_MSC_A_CAT(msc_a, DRR, LOGL_NOTICE, "MSC: Unimplemented %s GSM 04.08 RR "
+ "message\n", gsm48_rr_msg_name(gh->msg_type));
break;
}
return rc;
}
-int gsm48_send_rr_app_info(struct ran_conn *conn, uint8_t apdu_id,
+int gsm48_send_rr_app_info(struct msc_a *msc_a, uint8_t apdu_id,
uint8_t apdu_len, const uint8_t *apdu)
{
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 APP INF");
@@ -1291,245 +1251,10 @@ int gsm48_send_rr_app_info(struct ran_conn *conn, uint8_t apdu_id,
gh->data[1] = apdu_len;
memcpy(gh->data+2, apdu, apdu_len);
- return gsm48_conn_sendmsg(msg, conn, NULL);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
-static bool msg_is_initially_permitted(const struct gsm48_hdr *hdr)
-{
- uint8_t pdisc = gsm48_hdr_pdisc(hdr);
- uint8_t msg_type = gsm48_hdr_msg_type(hdr);
-
- switch (pdisc) {
- case GSM48_PDISC_MM:
- switch (msg_type) {
- case GSM48_MT_MM_LOC_UPD_REQUEST:
- case GSM48_MT_MM_CM_SERV_REQ:
- case GSM48_MT_MM_CM_REEST_REQ:
- case GSM48_MT_MM_AUTH_RESP:
- case GSM48_MT_MM_AUTH_FAIL:
- case GSM48_MT_MM_ID_RESP:
- case GSM48_MT_MM_TMSI_REALL_COMPL:
- case GSM48_MT_MM_IMSI_DETACH_IND:
- return true;
- default:
- break;
- }
- break;
- case GSM48_PDISC_RR:
- switch (msg_type) {
- /* GSM48_MT_RR_CIPH_M_COMPL is actually handled in bssmap_rx_ciph_compl() and gets redirected in the
- * BSSAP layer to ran_conn_cipher_mode_compl() (before this here is reached) */
- case GSM48_MT_RR_PAG_RESP:
- return true;
- default:
- break;
- }
- break;
- default:
- break;
- }
-
- return false;
-}
-
-void cm_service_request_concludes(struct ran_conn *conn,
- struct msgb *msg)
-{
-
- /* If a CM Service Request was received before, this is the request the
- * conn was opened for. No need to wait for further messages. */
-
- if (!conn->received_cm_service_request)
- return;
-
- if (log_check_level(DMM, LOGL_DEBUG)) {
- struct gsm48_hdr *gh = msgb_l3(msg);
- uint8_t pdisc = gsm48_hdr_pdisc(gh);
- uint8_t msg_type = gsm48_hdr_msg_type(gh);
-
- DEBUGP(DMM, "%s: rx msg %s:"
- " received_cm_service_request changes to false\n",
- vlr_subscr_name(conn->vsub),
- gsm48_pdisc_msgtype_name(pdisc, msg_type));
- }
- conn->received_cm_service_request = false;
- ran_conn_put(conn, RAN_CONN_USE_CM_SERVICE);
-}
-
-/* TS 24.007 11.2.3.2.3 Message Type Octet / Duplicate Detection */
-int gsm0407_pdisc_ctr_bin(uint8_t pdisc)
-{
- switch (pdisc) {
- case GSM48_PDISC_MM:
- case GSM48_PDISC_CC:
- case GSM48_PDISC_NC_SS:
- return 0;
- case GSM48_PDISC_GROUP_CC:
- return 1;
- case GSM48_PDISC_BCAST_CC:
- return 2;
- case GSM48_PDISC_LOC:
- return 3;
- default:
- return -1;
- }
-}
-
-/* extract the N(SD) and return the modulo value for a R98 message */
-static uint8_t gsm0407_determine_nsd_ret_modulo_r99(uint8_t pdisc, uint8_t msg_type, uint8_t *n_sd)
-{
- switch (pdisc) {
- case GSM48_PDISC_MM:
- case GSM48_PDISC_CC:
- case GSM48_PDISC_NC_SS:
- *n_sd = (msg_type >> 6) & 0x3;
- return 4;
- case GSM48_PDISC_GROUP_CC:
- case GSM48_PDISC_BCAST_CC:
- case GSM48_PDISC_LOC:
- *n_sd = (msg_type >> 6) & 0x1;
- return 2;
- default:
- /* no sequence number, we cannot detect dups */
- return 0;
- }
-}
-
-/* extract the N(SD) and return the modulo value for a R99 message */
-static uint8_t gsm0407_determine_nsd_ret_modulo_r98(uint8_t pdisc, uint8_t msg_type, uint8_t *n_sd)
-{
- switch (pdisc) {
- case GSM48_PDISC_MM:
- case GSM48_PDISC_CC:
- case GSM48_PDISC_NC_SS:
- case GSM48_PDISC_GROUP_CC:
- case GSM48_PDISC_BCAST_CC:
- case GSM48_PDISC_LOC:
- *n_sd = (msg_type >> 6) & 0x1;
- return 2;
- default:
- /* no sequence number, we cannot detect dups */
- return 0;
- }
-}
-
-/* TS 24.007 11.2.3.2 Message Type Octet / Duplicate Detection */
-static bool gsm0407_is_duplicate(struct ran_conn *conn, struct msgb *msg)
-{
- struct gsm48_hdr *gh;
- uint8_t pdisc;
- uint8_t n_sd, modulo;
- int bin;
-
- gh = msgb_l3(msg);
- pdisc = gsm48_hdr_pdisc(gh);
-
- if (conn->vsub && classmark_is_r99(&conn->vsub->classmark)) {
- modulo = gsm0407_determine_nsd_ret_modulo_r99(pdisc, gh->msg_type, &n_sd);
- } else { /* pre R99 */
- modulo = gsm0407_determine_nsd_ret_modulo_r98(pdisc, gh->msg_type, &n_sd);
- }
- if (modulo == 0)
- return false;
- bin = gsm0407_pdisc_ctr_bin(pdisc);
- if (bin < 0)
- return false;
-
- OSMO_ASSERT(bin < ARRAY_SIZE(conn->n_sd_next));
- if (n_sd != conn->n_sd_next[bin]) {
- /* not what we expected: duplicate */
- return true;
- } else {
- /* as expected: no dup; update expected counter for next message */
- conn->n_sd_next[bin] = (n_sd + 1) % modulo;
- return false;
- }
-}
-
-extern int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg);
-
-/* Main entry point for GSM 04.08/44.008 Layer 3 data (e.g. from the BSC). */
-int gsm0408_dispatch(struct ran_conn *conn, struct msgb *msg)
-{
- struct gsm48_hdr *gh;
- uint8_t pdisc;
- int rc = 0;
-
- OSMO_ASSERT(msg->l3h);
- OSMO_ASSERT(conn);
- OSMO_ASSERT(msg);
-
- gh = msgb_l3(msg);
- pdisc = gsm48_hdr_pdisc(gh);
-
- if (gsm0407_is_duplicate(conn, msg)) {
- LOGP(DRLL, LOGL_NOTICE, "%s: Discarding duplicate L3 message\n",
- (conn && conn->vsub) ? vlr_subscr_name(conn->vsub) : "UNKNOWN");
- return 0;
- }
-
- LOGP(DRLL, LOGL_DEBUG, "Dispatching 04.08 message %s (0x%x:0x%x)\n",
- gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)),
- pdisc, gsm48_hdr_msg_type(gh));
-
- if (!ran_conn_is_accepted(conn)
- && !msg_is_initially_permitted(gh)) {
- LOGP(DRLL, LOGL_ERROR,
- "subscr %s: Message not permitted for initial conn: %s\n",
- vlr_subscr_name(conn->vsub),
- gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)));
- return -EACCES;
- }
-
- if (conn->vsub && conn->vsub->cs.attached_via_ran != conn->via_ran) {
- LOGP(DMM, LOGL_ERROR,
- "%s: Illegal situation: RAN type mismatch:"
- " attached via %s, received message via %s\n",
- vlr_subscr_name(conn->vsub),
- osmo_rat_type_name(conn->vsub->cs.attached_via_ran),
- osmo_rat_type_name(conn->via_ran));
- return -EACCES;
- }
-
-#if 0
- if (silent_call_reroute(conn, msg))
- return silent_call_rx(conn, msg);
-#endif
-
- switch (pdisc) {
- case GSM48_PDISC_CC:
- rc = gsm0408_rcv_cc(conn, msg);
- break;
- case GSM48_PDISC_MM:
- rc = gsm0408_rcv_mm(conn, msg);
- break;
- case GSM48_PDISC_RR:
- rc = gsm0408_rcv_rr(conn, msg);
- break;
- case GSM48_PDISC_SMS:
- rc = gsm0411_rcv_sms(conn, msg);
- break;
- case GSM48_PDISC_MM_GPRS:
- case GSM48_PDISC_SM_GPRS:
- LOGP(DRLL, LOGL_NOTICE, "Unimplemented "
- "GSM 04.08 discriminator 0x%02x\n", pdisc);
- rc = -ENOTSUP;
- break;
- case GSM48_PDISC_NC_SS:
- rc = gsm0911_rcv_nc_ss(conn, msg);
- break;
- case GSM48_PDISC_TEST:
- rc = gsm0414_rcv_test(conn, msg);
- break;
- default:
- LOGP(DRLL, LOGL_NOTICE, "Unknown "
- "GSM 04.08 discriminator 0x%02x\n", pdisc);
- rc = -EINVAL;
- break;
- }
-
- return rc;
-}
+extern int gsm0408_rcv_cc(struct msc_a *msc_a, struct msgb *msg);
/***********************************************************************
* VLR integration
@@ -1539,8 +1264,8 @@ int gsm0408_dispatch(struct ran_conn *conn, struct msgb *msg)
static int msc_vlr_tx_auth_req(void *msc_conn_ref, struct vlr_auth_tuple *at,
bool send_autn)
{
- struct ran_conn *conn = msc_conn_ref;
- return gsm48_tx_mm_auth_req(conn, at->vec.rand,
+ struct msc_a *msc_a = msc_conn_ref;
+ return gsm48_tx_mm_auth_req(msc_a, at->vec.rand,
send_autn? at->vec.autn : NULL,
at->key_seq);
}
@@ -1548,310 +1273,104 @@ static int msc_vlr_tx_auth_req(void *msc_conn_ref, struct vlr_auth_tuple *at,
/* VLR asks us to send an authentication reject */
static int msc_vlr_tx_auth_rej(void *msc_conn_ref)
{
- struct ran_conn *conn = msc_conn_ref;
- return gsm48_tx_mm_auth_rej(conn);
+ struct msc_a *msc_a = msc_conn_ref;
+ return gsm48_tx_mm_auth_rej(msc_a);
}
/* 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 ran_conn *conn = msc_conn_ref;
- return mm_tx_identity_req(conn, mi_type);
+ struct msc_a *msc_a = msc_conn_ref;
+ return mm_tx_identity_req(msc_a, mi_type);
}
/* VLR asks us to transmit a Location Update Accept */
static int msc_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi)
{
- struct ran_conn *conn = msc_conn_ref;
- return gsm0408_loc_upd_acc(conn, send_tmsi);
+ struct msc_a *msc_a = msc_conn_ref;
+ return gsm0408_loc_upd_acc(msc_a, send_tmsi);
}
/* VLR asks us to transmit a Location Update Reject */
static int msc_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause)
{
- struct ran_conn *conn = msc_conn_ref;
- return gsm0408_loc_upd_rej(conn, cause);
+ struct msc_a *msc_a = msc_conn_ref;
+ return gsm0408_loc_upd_rej(msc_a, cause);
}
/* VLR asks us to transmit a CM Service Accept */
-static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref)
+int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type)
{
- struct ran_conn *conn = msc_conn_ref;
- return msc_gsm48_tx_mm_serv_ack(conn);
+ struct msc_a *msc_a = msc_conn_ref;
+ return msc_gsm48_tx_mm_serv_ack(msc_a);
}
static int msc_vlr_tx_common_id(void *msc_conn_ref)
{
- struct ran_conn *conn = msc_conn_ref;
- return msc_tx_common_id(conn);
+ struct msc_a *msc_a = msc_conn_ref;
+ struct ran_msg msg = {
+ .msg_type = RAN_MSG_COMMON_ID,
+ .common_id = {
+ .imsi = msc_a_vsub(msc_a)->imsi,
+ },
+ };
+ return msc_a_ran_down(msc_a, MSC_ROLE_I, &msg);
}
/* VLR asks us to transmit MM info. */
static int msc_vlr_tx_mm_info(void *msc_conn_ref)
{
- struct ran_conn *conn = msc_conn_ref;
- if (!conn->network->send_mm_info)
+ struct msc_a *msc_a = msc_conn_ref;
+ struct gsm_network *net = msc_a_net(msc_a);
+ if (!net->send_mm_info)
return 0;
- return gsm48_tx_mm_info(conn);
+ return gsm48_tx_mm_info(msc_a);
}
/* VLR asks us to transmit a CM Service Reject */
-static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value cause)
-{
- struct ran_conn *conn = msc_conn_ref;
- int rc;
-
- rc = msc_gsm48_tx_mm_serv_rej(conn, cause);
-
- if (conn->received_cm_service_request) {
- conn->received_cm_service_request = false;
- ran_conn_put(conn, RAN_CONN_USE_CM_SERVICE);
- }
-
- return rc;
-}
-
-/* For msc_vlr_set_ciph_mode() */
-osmo_static_assert(sizeof(((struct gsm0808_encrypt_info*)0)->key) >= sizeof(((struct osmo_auth_vector*)0)->kc),
- gsm0808_encrypt_info_key_fits_osmo_auth_vec_kc);
-
-int ran_conn_geran_set_cipher_mode(struct ran_conn *conn, bool umts_aka, bool retrieve_imeisv)
-{
- struct gsm_network *net;
- struct gsm0808_encrypt_info ei;
- int i, j = 0;
- int request_classmark = 0;
- int request_classmark_for_a5_n = 0;
- struct vlr_auth_tuple *tuple;
-
- if (!conn || !conn->vsub || !conn->vsub->last_tuple) {
- /* This should really never happen, because we checked this in msc_vlr_set_ciph_mode()
- * already. */
- LOGP(DMM, LOGL_ERROR, "Internal error: missing state during Ciphering Mode Command\n");
- return -EINVAL;
- }
-
- net = conn->network;
- tuple = conn->vsub->last_tuple;
-
- for (i = 0; i < 8; i++) {
- int supported;
-
- /* A5/n permitted by osmo-msc.cfg? */
- if (!(net->a5_encryption_mask & (1 << i)))
- continue;
-
- /* A5/n supported by MS? */
- supported = classmark_supports_a5(&conn->vsub->classmark, i);
- if (supported == 1) {
- ei.perm_algo[j++] = vlr_ciph_to_gsm0808_alg_id(i);
- /* A higher A5/n is supported, so no need to request a Classmark
- * for support of a lesser A5/n. */
- request_classmark = 0;
- } else if (supported < 0) {
- request_classmark = -supported;
- request_classmark_for_a5_n = i;
- }
- }
- ei.perm_algo_len = j;
-
- if (request_classmark) {
- /* The highest A5/n as from osmo-msc.cfg might be available, but we are
- * still missing the Classmark information for that from the MS. First
- * ask for that. */
- LOGP(DMM, LOGL_DEBUG, "%s: to determine whether A5/%d is supported,"
- " first ask for a Classmark Update to obtain Classmark %d\n",
- vlr_subscr_name(conn->vsub), request_classmark_for_a5_n,
- request_classmark);
-
- return ran_conn_classmark_request_then_cipher_mode_cmd(conn, umts_aka, retrieve_imeisv);
- }
-
- if (ei.perm_algo_len == 0) {
- LOGP(DMM, LOGL_ERROR, "%s: cannot start ciphering, no intersection "
- "between MSC-configured and MS-supported A5 algorithms. MSC: %x MS: %s\n",
- vlr_subscr_name(conn->vsub), net->a5_encryption_mask,
- classmark_a5_name(&conn->vsub->classmark));
- return -ENOTSUP;
- }
-
- DEBUGP(DMM, "-> CIPHER MODE COMMAND %s\n", vlr_subscr_name(conn->vsub));
-
- tuple = conn->vsub->last_tuple;
-
- /* In case of UMTS AKA, the Kc for ciphering must be derived from the 3G auth
- * tokens. tuple->vec.kc was calculated from the GSM algorithm and is not
- * necessarily a match for the UMTS AKA tokens. */
- if (umts_aka)
- osmo_auth_c3(ei.key, tuple->vec.ck, tuple->vec.ik);
- else
- memcpy(ei.key, tuple->vec.kc, sizeof(tuple->vec.kc));
- ei.key_len = sizeof(tuple->vec.kc);
-
- conn->geran_encr = (struct geran_encr){};
- if (ei.key_len <= sizeof(conn->geran_encr.key)) {
- memcpy(conn->geran_encr.key, ei.key, ei.key_len);
- conn->geran_encr.key_len = ei.key_len;
- }
- /* conn->geran_encr.alg_id remains unknown until we receive a Cipher Mode Complete from the BSC */
-
- return a_iface_tx_cipher_mode(conn, &ei, retrieve_imeisv);
-}
-
-/* VLR asks us to start using ciphering.
- * (Keep non-static to allow regression testing on this function.) */
-int msc_vlr_set_ciph_mode(void *msc_conn_ref,
- bool umts_aka,
- bool retrieve_imeisv)
-{
- struct ran_conn *conn = msc_conn_ref;
- struct vlr_subscr *vsub;
- struct vlr_auth_tuple *tuple;
-
- if (!conn || !conn->vsub) {
- LOGP(DMM, LOGL_ERROR, "Cannot send Ciphering Mode Command to"
- " NULL conn/subscriber");
- return -EINVAL;
- }
-
- vsub = conn->vsub;
- tuple = vsub->last_tuple;
-
- if (!tuple) {
- LOGP(DMM, LOGL_ERROR, "subscr %s: Cannot send Ciphering Mode"
- " Command: no auth tuple available\n",
- vlr_subscr_name(vsub));
- return -EINVAL;
- }
-
- switch (conn->via_ran) {
- case OSMO_RAT_GERAN_A:
- return ran_conn_geran_set_cipher_mode(conn, umts_aka, retrieve_imeisv);
-
- case OSMO_RAT_UTRAN_IU:
-#ifdef BUILD_IU
- DEBUGP(DMM, "-> SECURITY MODE CONTROL %s\n",
- vlr_subscr_name(conn->vsub));
- return ranap_iu_tx_sec_mode_cmd(conn->iu.ue_ctx, &tuple->vec, 0, 1);
-#else
- LOGP(DMM, LOGL_ERROR, "Cannot send Security Mode Control over OSMO_RAT_UTRAN_IU,"
- " built without Iu support\n");
- return -ENOTSUP;
-#endif
-
- default:
- break;
- }
- LOGP(DMM, LOGL_ERROR,
- "%s: cannot start ciphering, unknown RAN type %d\n",
- vlr_subscr_name(conn->vsub), conn->via_ran);
- return -ENOTSUP;
-}
-
-void ran_conn_rx_sec_mode_compl(struct ran_conn *conn)
+static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type,
+ enum gsm48_reject_value cause)
{
- struct vlr_ciph_result vlr_res = {};
-
- if (!conn || !conn->vsub) {
- LOGP(DMM, LOGL_ERROR,
- "Rx Security Mode Complete for invalid conn\n");
- return;
- }
-
- DEBUGP(DMM, "<- SECURITY MODE COMPLETE %s\n",
- vlr_subscr_name(conn->vsub));
-
- vlr_res.cause = VLR_CIPH_COMPL;
- vlr_subscr_rx_ciph_res(conn->vsub, &vlr_res);
+ struct msc_a *msc_a = msc_conn_ref;
+ msc_gsm48_tx_mm_serv_rej(msc_a, cause);
+ msc_a_put(msc_a, msc_a_cm_service_type_to_use(cm_service_type));
+ return 0;
}
/* VLR informs us that the subscriber data has somehow been modified */
static void msc_vlr_subscr_update(struct vlr_subscr *subscr)
{
- LOGVSUBP(LOGL_NOTICE, subscr, "VLR: update for IMSI=%s (MSISDN=%s)\n",
- subscr->imsi, subscr->msisdn);
- ran_conn_update_id_for_vsub(subscr);
-}
-
-static void update_classmark(const struct gsm_classmark *src, struct gsm_classmark *dst)
-{
- if (src->classmark1_set) {
- dst->classmark1 = src->classmark1;
- dst->classmark1_set = true;
- }
- if (src->classmark2_len) {
- dst->classmark2_len = src->classmark2_len;
- memcpy(dst->classmark2, src->classmark2, sizeof(dst->classmark2));
- }
- if (src->classmark3_len) {
- dst->classmark3_len = src->classmark3_len;
- memcpy(dst->classmark3, src->classmark3, sizeof(dst->classmark3));
- }
+ struct msub *msub = msub_for_vsub(subscr);
+ LOGVSUBP(LOGL_NOTICE, subscr, "VLR: update for IMSI=%s (MSISDN=%s)%s\n",
+ subscr->imsi, subscr->msisdn, msub ? "" : " (NO CONN!)");
+ msub_update_id(msub);
}
/* VLR informs us that the subscriber has been associated with a conn */
static int msc_vlr_subscr_assoc(void *msc_conn_ref,
struct vlr_subscr *vsub)
{
- struct ran_conn *conn = msc_conn_ref;
+ struct msc_a *msc_a = msc_conn_ref;
+ struct msub *msub = msc_a->c.msub;
OSMO_ASSERT(vsub);
- if (conn->vsub) {
- if (conn->vsub == vsub)
- LOG_RAN_CONN(conn, LOGL_NOTICE, "msc_vlr_subscr_assoc(): conn already associated with %s\n",
- vlr_subscr_name(vsub));
- else {
- LOG_RAN_CONN(conn, LOGL_ERROR, "msc_vlr_subscr_assoc(): conn already associated with a subscriber,"
- " cannot associate with %s\n", vlr_subscr_name(vsub));
- return -EINVAL;
- }
- }
- vlr_subscr_get(vsub, VSUB_USE_CONN);
- conn->vsub = vsub;
- OSMO_ASSERT(conn->vsub);
- conn->vsub->cs.attached_via_ran = conn->via_ran;
+ if (msub_set_vsub(msub, vsub))
+ return -EINVAL;
+ vsub->cs.attached_via_ran = msc_a->c.ran->type;
/* In case we have already received Classmark Information before the VLR Subscriber was
* associated with the conn: merge the new Classmark into vsub->classmark. Don't overwrite valid
* vsub->classmark with unset classmark, though. */
- update_classmark(&conn->temporary_classmark, &conn->vsub->classmark);
- ran_conn_update_id(conn);
- return 0;
-}
+ osmo_gsm48_classmark_update(&vsub->classmark, &msc_a->temporary_classmark);
-static int msc_vlr_route_gsup_msg(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg)
-{
- switch (gsup_msg->message_type) {
- /* GSM 09.11 code implementing SS/USSD */
- case OSMO_GSUP_MSGT_PROC_SS_REQUEST:
- case OSMO_GSUP_MSGT_PROC_SS_RESULT:
- case OSMO_GSUP_MSGT_PROC_SS_ERROR:
- DEBUGP(DMSC, "Routed to GSM 09.11 SS/USSD handler\n");
- return gsm0911_gsup_handler(vsub, gsup_msg);
-
- /* GSM 04.11 code implementing MO SMS */
- case OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR:
- case OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT:
- case OSMO_GSUP_MSGT_READY_FOR_SM_ERROR:
- case OSMO_GSUP_MSGT_READY_FOR_SM_RESULT:
- DEBUGP(DMSC, "Routed to GSM 04.11 MO handler\n");
- return gsm411_gsup_mo_handler(vsub, gsup_msg);
-
- /* GSM 04.11 code implementing MT SMS */
- case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST:
- DEBUGP(DMSC, "Routed to GSM 04.11 MT handler\n");
- return gsm411_gsup_mt_handler(vsub, gsup_msg);
+ msub_update_id(msub);
- default:
- LOGP(DMM, LOGL_ERROR, "No handler found for %s, dropping message...\n",
- osmo_gsup_message_type_name(gsup_msg->message_type));
- return -GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL;
- }
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_COMPLETE_LAYER_3_OK, NULL);
+ return 0;
}
/* operations that we need to implement for libvlr */
-static const struct vlr_ops msc_vlr_ops = {
+const struct vlr_ops msc_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,
@@ -1859,39 +1378,13 @@ static const struct vlr_ops msc_vlr_ops = {
.tx_lu_rej = msc_vlr_tx_lu_rej,
.tx_cm_serv_acc = msc_vlr_tx_cm_serv_acc,
.tx_cm_serv_rej = msc_vlr_tx_cm_serv_rej,
- .set_ciph_mode = msc_vlr_set_ciph_mode,
+ .set_ciph_mode = msc_a_vlr_set_cipher_mode,
.tx_common_id = msc_vlr_tx_common_id,
.tx_mm_info = msc_vlr_tx_mm_info,
.subscr_update = msc_vlr_subscr_update,
.subscr_assoc = msc_vlr_subscr_assoc,
- .forward_gsup_msg = msc_vlr_route_gsup_msg,
};
-/* Allocate net->vlr so that the VTY may configure the VLR's data structures */
-int msc_vlr_alloc(struct gsm_network *net)
-{
- net->vlr = vlr_alloc(net, &msc_vlr_ops);
- if (!net->vlr)
- return -ENOMEM;
- net->vlr->user_ctx = net;
- return 0;
-}
-
-/* Launch the VLR, i.e. its GSUP connection */
-int msc_vlr_start(struct gsm_network *net)
-{
- struct ipaccess_unit *ipa_dev;
-
- OSMO_ASSERT(net->vlr);
-
- ipa_dev = talloc_zero(net->vlr, struct ipaccess_unit);
- ipa_dev->unit_name = "MSC";
- ipa_dev->serno = net->msc_ipa_name; /* NULL unless configured via VTY */
- ipa_dev->swversion = PACKAGE_NAME "-" PACKAGE_VERSION;
-
- return vlr_start(ipa_dev, net->vlr, net->gsup_server_addr_str, net->gsup_server_port);
-}
-
struct msgb *gsm48_create_mm_serv_rej(enum gsm48_reject_value value)
{
struct msgb *msg;
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 62b5d12eb..aa9764968 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -48,7 +48,13 @@
#include <osmocom/abis/e1_input.h>
#include <osmocom/core/bitvec.h>
#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/msc_ifaces.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/paging.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
+#include <osmocom/msc/mncc_call.h>
+#include <osmocom/msc/msc_t.h>
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gsm/gsm0480.h>
@@ -60,17 +66,29 @@
#include <osmocom/core/byteswap.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/crypt/auth.h>
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#endif
-
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/msc_mgcp.h>
#include <assert.h>
-static uint32_t new_callref = 0x80000001;
+static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg);
+static int gsm48_cc_tx_release(struct gsm_trans *trans, void *arg);
+static int gsm48_cc_tx_disconnect(struct gsm_trans *trans, void *arg);
+
+static int trans_tx_gsm48(struct gsm_trans *trans, struct msgb *msg)
+{
+ struct gsm48_hdr *gh = (struct gsm48_hdr *) msg->data;
+ gh->proto_discr = GSM48_PDISC_CC | (trans->transaction_id << 4);
+ OMSC_LINKID_CB(msg) = trans->dlci;
+
+ return msc_a_tx_dtap_to_i(trans->msc_a, msg);
+}
+
+uint32_t msc_cc_next_outgoing_callref() {
+ static uint32_t last_callref = 0x80000000;
+ last_callref++;
+ if (last_callref < 0x80000001)
+ last_callref = 0x80000001;
+ return last_callref;
+}
static void gsm48_cc_guard_timeout(void *arg)
{
@@ -127,7 +145,7 @@ int gsm48_cc_tx_notify_ss(struct gsm_trans *trans, const char *message)
data[0] = ss_notify->len - 1;
gh = (struct gsm48_hdr *) msgb_push(ss_notify, sizeof(*gh));
gh->msg_type = GSM48_MT_CC_FACILITY;
- return gsm48_conn_sendmsg(ss_notify, trans->conn, trans);
+ return trans_tx_gsm48(trans, ss_notify);
}
/* FIXME: this count_statistics is a state machine behaviour. we should convert
@@ -163,11 +181,6 @@ static void count_statistics(struct gsm_trans *trans, int new_state)
}
}
-/* The entire call control code is written in accordance with Figure 7.10c
- * for 'very early assignment', i.e. we allocate a TCH/F during IMMEDIATE
- * ASSIGN, then first use that TCH/F for signalling and later MODE MODIFY
- * it for voice */
-
static void new_cc_state(struct gsm_trans *trans, int state)
{
if (state > 31 || state < 0)
@@ -201,7 +214,7 @@ static int gsm48_cc_tx_status(struct gsm_trans *trans, void *arg)
call_state = msgb_put(msg, 1);
call_state[0] = 0xc0 | 0x00;
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static void gsm48_stop_cc_timer(struct gsm_trans *trans)
@@ -254,11 +267,16 @@ void _gsm48_cc_trans_free(struct gsm_trans *trans)
{
gsm48_stop_cc_timer(trans);
- /* Initiate the teardown of the related connections on the MGW */
- msc_mgcp_call_release(trans);
-
/* send release to L4, if callref still exists */
if (trans->callref) {
+ /* FIXME: currently, a CC trans that would not yet be in state GSM_CSTATE_RELEASE_REQ fails to send a
+ * CC Release to the MS if it gets freed here. Hack it to do so. */
+ if (trans->cc.state != GSM_CSTATE_RELEASE_REQ) {
+ struct gsm_mncc rel = {};
+ rel.callref = trans->callref;
+ mncc_set_cause(&rel, GSM48_CAUSE_LOC_PRN_S_LU, GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
+ gsm48_cc_tx_release(trans, &rel);
+ }
/* Ressource unavailable */
mncc_release_ind(trans->net, trans, trans->callref,
GSM48_CAUSE_LOC_PRN_S_LU,
@@ -271,60 +289,57 @@ void _gsm48_cc_trans_free(struct gsm_trans *trans)
new_cc_state(trans, GSM_CSTATE_NULL);
gsm48_stop_guard_timer(trans);
-}
-static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg);
+ if (trans->msc_a && trans->msc_a->cc.active_trans == trans)
+ trans->msc_a->cc.active_trans = NULL;
+}
/* call-back from paging the B-end of the connection */
-static int setup_trig_pag_evt(unsigned int hooknum, unsigned int event,
- struct msgb *msg, void *_conn, void *_transt)
+static void cc_paging_cb(struct msc_a *msc_a, struct gsm_trans *trans)
{
- struct ran_conn *conn = _conn;
- struct gsm_trans *transt = _transt;
- enum gsm_paging_event paging_event = event;
-
- OSMO_ASSERT(!transt->conn);
+ if (trans->msc_a) {
+ LOG_MSC_A_CAT(msc_a, DPAG, LOGL_ERROR,
+ "Handle paging error: transaction already associated with subscriber,"
+ " apparently it was already handled. Skip.\n");
+ return;
+ }
- switch (paging_event) {
- case GSM_PAGING_SUCCEEDED:
- LOG_TRANS(transt, LOGL_DEBUG, "Paging succeeded\n");
- OSMO_ASSERT(conn);
+ if (msc_a) {
+ LOG_TRANS(trans, LOGL_DEBUG, "Paging succeeded\n");
/* Assign conn */
- transt->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_CC);
- transt->paging_request = NULL;
+ msc_a_get(msc_a, MSC_A_USE_CC);
+ trans->msc_a = msc_a;
+ trans->paging_request = NULL;
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_TRANSACTION_ACCEPTED, trans);
/* send SETUP request to called party */
- gsm48_cc_tx_setup(transt, &transt->cc.msg);
- break;
- case GSM_PAGING_EXPIRED:
- case GSM_PAGING_BUSY:
- LOG_TRANS(transt, LOGL_DEBUG, "Paging expired\n");
+ gsm48_cc_tx_setup(trans, &trans->cc.msg);
+ } else {
+ LOG_TRANS(trans, LOGL_DEBUG, "Paging expired\n");
/* Temporarily out of order */
- mncc_release_ind(transt->net, transt,
- transt->callref,
+ mncc_release_ind(trans->net, trans,
+ trans->callref,
GSM48_CAUSE_LOC_PRN_S_LU,
GSM48_CC_CAUSE_DEST_OOO);
- transt->callref = 0;
- transt->paging_request = NULL;
- trans_free(transt);
- break;
+ trans->callref = 0;
+ trans->paging_request = NULL;
+ trans_free(trans);
}
-
- return 0;
}
/* bridge channels of two transactions */
-static int tch_bridge(struct gsm_network *net, struct gsm_mncc_bridge *bridge)
+static int tch_bridge(struct gsm_network *net, const struct gsm_mncc_bridge *bridge)
{
struct gsm_trans *trans1 = trans_find_by_callref(net, bridge->callref[0]);
struct gsm_trans *trans2 = trans_find_by_callref(net, bridge->callref[1]);
- int rc;
+ struct call_leg *cl1;
+ struct call_leg *cl2;
if (!trans1 || !trans2) {
LOG_TRANS(trans1 ? : trans2, LOGL_ERROR, "Cannot MNCC_BRIDGE, one or both call legs are unset\n");
return -EIO;
}
- if (!trans1->conn || !trans2->conn) {
+ if (!trans1->msc_a || !trans2->msc_a) {
LOG_TRANS(trans1, LOGL_ERROR, "Cannot MNCC_BRIDGE, one or both call legs lack an active connection\n");
LOG_TRANS(trans2, LOGL_ERROR, "Cannot MNCC_BRIDGE, one or both call legs lack an active connection\n");
return -EIO;
@@ -333,30 +348,14 @@ static int tch_bridge(struct gsm_network *net, struct gsm_mncc_bridge *bridge)
LOG_TRANS(trans1, LOGL_DEBUG, "MNCC_BRIDGE: Local bridge to callref 0x%x\n", trans2->callref);
LOG_TRANS(trans2, LOGL_DEBUG, "MNCC_BRIDGE: Local bridge to callref 0x%x\n", trans1->callref);
- /* Which subscriber do we want to track trans1 or trans2? */
- log_set_context(LOG_CTX_VLR_SUBSCR, trans1->vsub);
-
- /* This call briding mechanism is only used with the internal MNCC.
- * functionality (with external MNCC briding would be done by the PBX)
- * This means we may just copy the codec info we have for the RAN side
- * of the first leg to the CN side of both legs. This also means that
- * if both legs use different codecs the MGW must perform transcoding
- * on the second leg. */
- trans1->conn->rtp.codec_cn = trans1->conn->rtp.codec_ran;
- trans2->conn->rtp.codec_cn = trans1->conn->rtp.codec_ran;
-
- /* Bridge RTP streams */
- rc = msc_mgcp_call_complete(trans1, trans2->conn->rtp.local_port_cn,
- trans2->conn->rtp.local_addr_cn);
- if (rc)
- return -EINVAL;
-
- rc = msc_mgcp_call_complete(trans2, trans1->conn->rtp.local_port_cn,
- trans1->conn->rtp.local_addr_cn);
- if (rc)
- return -EINVAL;
+ /* This call bridging mechanism is only used with the internal MNCC (with external MNCC briding would be done by
+ * the PBX). For inter-MSC Handover scenarios, an external MNCC is mandatory. The conclusion is that in this
+ * code path, there is only one MSC, and the MSC-I role is local, and hence we can directly access the ran_conn.
+ * If we can't, then we must give up. */
+ cl1 = trans1->msc_a->cc.call_leg;
+ cl2 = trans2->msc_a->cc.call_leg;
- return 0;
+ return call_leg_local_bridge(cl1, trans1->callref, trans1, cl2, trans2->callref, trans2);
}
static int gsm48_cc_rx_status_enq(struct gsm_trans *trans, struct msgb *msg)
@@ -365,9 +364,6 @@ static int gsm48_cc_rx_status_enq(struct gsm_trans *trans, struct msgb *msg)
return gsm48_cc_tx_status(trans, msg);
}
-static int gsm48_cc_tx_release(struct gsm_trans *trans, void *arg);
-static int gsm48_cc_tx_disconnect(struct gsm_trans *trans, void *arg);
-
static void gsm48_cc_timeout(void *arg)
{
struct gsm_trans *trans = arg;
@@ -452,7 +448,7 @@ static void gsm48_cc_timeout(void *arg)
/* disconnect both calls from the bridge */
static inline void disconnect_bridge(struct gsm_network *net,
- struct gsm_mncc_bridge *bridge, int err)
+ const struct gsm_mncc_bridge *bridge, int err)
{
struct gsm_trans *trans0 = trans_find_by_callref(net, bridge->callref[0]);
struct gsm_trans *trans1 = trans_find_by_callref(net, bridge->callref[1]);
@@ -527,7 +523,7 @@ static int gsm48_cc_rx_setup(struct gsm_trans *trans, struct msgb *msg)
/* Create a copy of the bearer capability
* in the transaction struct, so we can use
* this information later */
- memcpy(&trans->bearer_cap,&setup.bearer_cap,
+ memcpy(&trans->bearer_cap, &setup.bearer_cap,
sizeof(trans->bearer_cap));
}
/* facility */
@@ -606,7 +602,7 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
}
/* Get free transaction_id */
- trans_id = trans_assign_trans_id(trans->net, trans->vsub, GSM48_PDISC_CC);
+ trans_id = trans_assign_trans_id(trans->net, trans->vsub, TRANS_CC);
if (trans_id < 0) {
/* no free transaction ID */
rc = mncc_release_ind(trans->net, trans, trans->callref,
@@ -655,7 +651,7 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
rate_ctr_inc(&trans->net->msc_ctrs->ctr[MSC_CTR_CALL_MT_SETUP]);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_call_conf(struct gsm_trans *trans, struct msgb *msg)
@@ -711,7 +707,7 @@ static int gsm48_cc_rx_call_conf(struct gsm_trans *trans, struct msgb *msg)
new_cc_state(trans, GSM_CSTATE_MO_TERM_CALL_CONF);
/* Assign call (if not done yet) */
- rc = msc_mgcp_try_call_assignment(trans);
+ rc = msc_a_try_call_assignment(trans);
/* don't continue, if there were problems with
* the call assignment. */
@@ -745,12 +741,12 @@ static int gsm48_cc_tx_call_proc_and_assign(struct gsm_trans *trans, void *arg)
if (proceeding->fields & MNCC_F_PROGRESS)
gsm48_encode_progress(msg, 0, &proceeding->progress);
- rc = gsm48_conn_sendmsg(msg, trans->conn, trans);
+ rc = trans_tx_gsm48(trans, msg);
if (rc)
return rc;
/* Assign call (if not done yet) */
- return msc_mgcp_try_call_assignment(trans);
+ return msc_a_try_call_assignment(trans);
}
static int gsm48_cc_rx_alerting(struct gsm_trans *trans, struct msgb *msg)
@@ -812,7 +808,7 @@ static int gsm48_cc_tx_alerting(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_CALL_DELIVERED);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_progress(struct gsm_trans *trans, void *arg)
@@ -829,7 +825,7 @@ static int gsm48_cc_tx_progress(struct gsm_trans *trans, void *arg)
if (progress->fields & MNCC_F_USERUSER)
gsm48_encode_useruser(msg, 0, &progress->useruser);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_connect(struct gsm_trans *trans, void *arg)
@@ -858,7 +854,7 @@ static int gsm48_cc_tx_connect(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_CONNECT_IND);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_connect(struct gsm_trans *trans, struct msgb *msg)
@@ -929,7 +925,7 @@ static int gsm48_cc_tx_connect_ack(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_ACTIVE);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_disconnect(struct gsm_trans *trans, struct msgb *msg)
@@ -972,7 +968,6 @@ static int gsm48_cc_rx_disconnect(struct gsm_trans *trans, struct msgb *msg)
}
return mncc_recvmsg(trans->net, trans, MNCC_DISC_IND, &disc);
-
}
static struct gsm_mncc_cause default_cause = {
@@ -1017,7 +1012,7 @@ static int gsm48_cc_tx_disconnect(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_DISCONNECT_IND);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_release(struct gsm_trans *trans, struct msgb *msg)
@@ -1062,7 +1057,7 @@ static int gsm48_cc_rx_release(struct gsm_trans *trans, struct msgb *msg)
/* release collision 5.4.5 */
rc = mncc_recvmsg(trans->net, trans, MNCC_REL_CNF, &rel);
} else {
- rc = gsm48_tx_simple(trans->conn,
+ rc = gsm48_tx_simple(trans->msc_a,
GSM48_PDISC_CC | (trans->transaction_id << 4),
GSM48_MT_CC_RELEASE_COMPL);
rc = mncc_recvmsg(trans->net, trans, MNCC_REL_IND, &rel);
@@ -1103,7 +1098,7 @@ static int gsm48_cc_tx_release(struct gsm_trans *trans, void *arg)
if (trans->cc.state != GSM_CSTATE_RELEASE_REQ)
new_cc_state(trans, GSM_CSTATE_RELEASE_REQ);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_release_compl(struct gsm_trans *trans, struct msgb *msg)
@@ -1189,7 +1184,7 @@ static int gsm48_cc_tx_release_compl(struct gsm_trans *trans, void *arg)
if (rel->fields & MNCC_F_USERUSER)
gsm48_encode_useruser(msg, 0, &rel->useruser);
- ret = gsm48_conn_sendmsg(msg, trans->conn, trans);
+ ret = trans_tx_gsm48(trans, msg);
trans_free(trans);
@@ -1233,7 +1228,7 @@ static int gsm48_cc_tx_facility(struct gsm_trans *trans, void *arg)
/* facility */
gsm48_encode_facility(msg, 1, &fac->facility);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_hold(struct gsm_trans *trans, struct msgb *msg)
@@ -1252,7 +1247,7 @@ static int gsm48_cc_tx_hold_ack(struct gsm_trans *trans, void *arg)
gh->msg_type = GSM48_MT_CC_HOLD_ACK;
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_hold_rej(struct gsm_trans *trans, void *arg)
@@ -1269,7 +1264,7 @@ static int gsm48_cc_tx_hold_rej(struct gsm_trans *trans, void *arg)
else
gsm48_encode_cause(msg, 1, &default_cause);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_retrieve(struct gsm_trans *trans, struct msgb *msg)
@@ -1289,7 +1284,7 @@ static int gsm48_cc_tx_retrieve_ack(struct gsm_trans *trans, void *arg)
gh->msg_type = GSM48_MT_CC_RETR_ACK;
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_retrieve_rej(struct gsm_trans *trans, void *arg)
@@ -1306,7 +1301,7 @@ static int gsm48_cc_tx_retrieve_rej(struct gsm_trans *trans, void *arg)
else
gsm48_encode_cause(msg, 1, &default_cause);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_start_dtmf(struct gsm_trans *trans, struct msgb *msg)
@@ -1341,7 +1336,7 @@ static int gsm48_cc_tx_start_dtmf_ack(struct gsm_trans *trans, void *arg)
if (dtmf->fields & MNCC_F_KEYPAD)
gsm48_encode_keypad(msg, dtmf->keypad);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_start_dtmf_rej(struct gsm_trans *trans, void *arg)
@@ -1358,7 +1353,7 @@ static int gsm48_cc_tx_start_dtmf_rej(struct gsm_trans *trans, void *arg)
else
gsm48_encode_cause(msg, 1, &default_cause);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_stop_dtmf_ack(struct gsm_trans *trans, void *arg)
@@ -1368,7 +1363,7 @@ static int gsm48_cc_tx_stop_dtmf_ack(struct gsm_trans *trans, void *arg)
gh->msg_type = GSM48_MT_CC_STOP_DTMF_ACK;
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_stop_dtmf(struct gsm_trans *trans, struct msgb *msg)
@@ -1425,7 +1420,7 @@ static int gsm48_cc_tx_modify(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_MO_TERM_MODIFY);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_modify_complete(struct gsm_trans *trans, struct msgb *msg)
@@ -1472,7 +1467,7 @@ static int gsm48_cc_tx_modify_complete(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_ACTIVE);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_modify_reject(struct gsm_trans *trans, struct msgb *msg)
@@ -1527,7 +1522,7 @@ static int gsm48_cc_tx_modify_reject(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_ACTIVE);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_tx_notify(struct gsm_trans *trans, void *arg)
@@ -1541,7 +1536,7 @@ static int gsm48_cc_tx_notify(struct gsm_trans *trans, void *arg)
/* notify */
gsm48_encode_notify(msg, notify->notify);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_notify(struct gsm_trans *trans, struct msgb *msg)
@@ -1575,7 +1570,7 @@ static int gsm48_cc_tx_userinfo(struct gsm_trans *trans, void *arg)
if (user->more)
gsm48_encode_more(msg);
- return gsm48_conn_sendmsg(msg, trans->conn, trans);
+ return trans_tx_gsm48(trans, msg);
}
static int gsm48_cc_rx_userinfo(struct gsm_trans *trans, struct msgb *msg)
@@ -1601,9 +1596,9 @@ static int gsm48_cc_rx_userinfo(struct gsm_trans *trans, struct msgb *msg)
return mncc_recvmsg(trans->net, trans, MNCC_USERINFO_IND, &user);
}
-static void mncc_recv_rtp(struct gsm_network *net, struct gsm_trans *trans, uint32_t callref,
- int cmd, uint32_t addr, uint16_t port, uint32_t payload_type,
- uint32_t payload_msg_type)
+static int mncc_recv_rtp(struct gsm_network *net, struct gsm_trans *trans, uint32_t callref,
+ int cmd, struct osmo_sockaddr_str *rtp_addr, uint32_t payload_type,
+ uint32_t payload_msg_type)
{
uint8_t data[sizeof(struct gsm_mncc)];
struct gsm_mncc_rtp *rtp;
@@ -1613,55 +1608,18 @@ static void mncc_recv_rtp(struct gsm_network *net, struct gsm_trans *trans, uint
rtp->callref = callref;
rtp->msg_type = cmd;
- rtp->ip = osmo_htonl(addr);
- rtp->port = port;
+ if (rtp_addr) {
+ rtp->ip = osmo_htonl(inet_addr(rtp_addr->ip));
+ rtp->port = rtp_addr->port;
+ }
rtp->payload_type = payload_type;
rtp->payload_msg_type = payload_msg_type;
- mncc_recvmsg(net, trans, cmd, (struct gsm_mncc *)data);
-}
-
-static void mncc_recv_rtp_sock(struct gsm_network *net, struct gsm_trans *trans, int cmd)
-{
- int msg_type;
-
- /* FIXME This has to be set to some meaningful value.
- * Possible options are:
- * GSM_TCHF_FRAME, GSM_TCHF_FRAME_EFR,
- * GSM_TCHH_FRAME, GSM_TCH_FRAME_AMR
- * (0 if unknown) */
- msg_type = GSM_TCHF_FRAME;
-
- uint32_t addr = inet_addr(trans->conn->rtp.local_addr_cn);
- uint16_t port = trans->conn->rtp.local_port_cn;
-
- if (addr == INADDR_NONE) {
- LOGP(DMNCC, LOGL_ERROR,
- "(subscriber:%s) external MNCC is signalling invalid IP-Address\n",
- vlr_subscr_name(trans->vsub));
- return;
- }
- if (port == 0) {
- LOGP(DMNCC, LOGL_ERROR,
- "(subscriber:%s) external MNCC is signalling invalid Port\n",
- vlr_subscr_name(trans->vsub));
- return;
- }
-
- /* FIXME: This has to be set to some meaningful value,
- * before the MSC-Split, this value was pulled from
- * lchan->abis_ip.rtp_payload */
- uint32_t payload_type = 0;
-
- return mncc_recv_rtp(net, trans, trans->callref, cmd,
- addr,
- port,
- payload_type,
- msg_type);
+ return mncc_recvmsg(net, trans, cmd, (struct gsm_mncc *)data);
}
static void mncc_recv_rtp_err(struct gsm_network *net, struct gsm_trans *trans, uint32_t callref, int cmd)
{
- return mncc_recv_rtp(net, trans, callref, cmd, 0, 0, 0, 0);
+ mncc_recv_rtp(net, trans, callref, cmd, NULL, 0, 0);
}
static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
@@ -1676,7 +1634,7 @@ static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
return -EIO;
}
log_set_context(LOG_CTX_VLR_SUBSCR, trans->vsub);
- if (!trans->conn) {
+ if (!trans->msc_a) {
LOG_TRANS_CAT(trans, DMNCC, LOGL_NOTICE, "RTP create for trans without conn\n");
mncc_recv_rtp_err(net, trans, callref, MNCC_RTP_CREATE);
return 0;
@@ -1698,7 +1656,7 @@ static int tch_rtp_create(struct gsm_network *net, uint32_t callref)
trans->tch_rtp_create = true;
/* Assign call (if not done yet) */
- return msc_mgcp_try_call_assignment(trans);
+ return msc_a_try_call_assignment(trans);
}
/* Trigger TCH_RTP_CREATE acknowledgement */
@@ -1707,18 +1665,38 @@ int gsm48_tch_rtp_create(struct gsm_trans *trans)
/* This function is called as soon as the port, on which the
* mgcp-gw expects the incoming RTP stream from the remote
* end (e.g. Asterisk) is known. */
+ struct msc_a *msc_a = trans->msc_a;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct call_leg *cl = msc_a->cc.call_leg;
+ struct osmo_sockaddr_str *rtp_cn_local;
+ /* FIXME: This has to be set to some meaningful value,
+ * before the MSC-Split, this value was pulled from
+ * lchan->abis_ip.rtp_payload */
+ uint32_t payload_type = 0;
+ int msg_type;
+
+ /* FIXME This has to be set to some meaningful value.
+ * Possible options are:
+ * GSM_TCHF_FRAME, GSM_TCHF_FRAME_EFR,
+ * GSM_TCHH_FRAME, GSM_TCH_FRAME_AMR
+ * (0 if unknown) */
+ msg_type = GSM_TCHF_FRAME;
- struct ran_conn *conn = trans->conn;
- struct gsm_network *network = conn->network;
+ rtp_cn_local = call_leg_local_ip(cl, RTP_TO_CN);
+ if (!rtp_cn_local) {
+ LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, "Cannot RTP CREATE to MNCC, no local RTP IP:port set up\n");
+ return -EINVAL;
+ }
- mncc_recv_rtp_sock(network, trans, MNCC_RTP_CREATE);
- return 0;
+ return mncc_recv_rtp(net, trans, trans->callref, MNCC_RTP_CREATE, rtp_cn_local, payload_type, msg_type);
}
-static int tch_rtp_connect(struct gsm_network *net, struct gsm_mncc_rtp *rtp)
+static int tch_rtp_connect(struct gsm_network *net, const struct gsm_mncc_rtp *rtp)
{
struct gsm_trans *trans;
- struct in_addr addr;
+ struct call_leg *cl;
+ struct rtp_stream *rtps;
+ struct osmo_sockaddr_str rtp_addr;
/* FIXME: in *rtp we should get the codec information of the remote
* leg. We will have to populate trans->conn->rtp.codec_cn with a
@@ -1738,16 +1716,29 @@ static int tch_rtp_connect(struct gsm_network *net, struct gsm_mncc_rtp *rtp)
return -EIO;
}
log_set_context(LOG_CTX_VLR_SUBSCR, trans->vsub);
- if (!trans->conn) {
+ if (!trans->msc_a) {
LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, "RTP connect for trans without conn\n");
mncc_recv_rtp_err(net, trans, rtp->callref, MNCC_RTP_CONNECT);
- return 0;
+ return -EIO;
+ }
+
+ LOG_TRANS_CAT(trans, DMNCC, LOGL_DEBUG, "rx %s\n", get_mncc_name(MNCC_RTP_CONNECT));
+
+ cl = trans->msc_a->cc.call_leg;
+ rtps = cl ? cl->rtp[RTP_TO_CN] : NULL;
+
+ if (!rtps) {
+ LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, "RTP connect for trans without ongoing call\n");
+ mncc_recv_rtp_err(net, trans, rtp->callref, MNCC_RTP_CONNECT);
+ return -EINVAL;
}
LOG_TRANS_CAT(trans, DMNCC, LOGL_DEBUG, "rx %s\n", get_mncc_name(MNCC_RTP_CONNECT));
- addr.s_addr = osmo_htonl(rtp->ip);
- return msc_mgcp_call_complete(trans, rtp->port, inet_ntoa(addr));
+ osmo_sockaddr_str_from_32n(&rtp_addr, rtp->ip, rtp->port);
+ rtp_stream_set_remote_addr(rtps, &rtp_addr);
+ rtp_stream_commit(rtps);
+ return 0;
}
static struct downstate {
@@ -1809,24 +1800,24 @@ static struct downstate {
(sizeof(downstatelist) / sizeof(struct downstate))
-int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
+int mncc_tx_to_gsm_cc(struct gsm_network *net, const union mncc_msg *msg)
{
int i, rc = 0;
- struct gsm_trans *trans = NULL, *transt;
- struct ran_conn *conn = NULL;
- struct gsm_mncc *data = arg, rel;
+ struct msc_a *msc_a = NULL;
+ struct gsm_trans *trans = NULL;
+ const struct gsm_mncc *data;
/* handle special messages */
- switch(msg_type) {
+ switch(msg->msg_type) {
case MNCC_BRIDGE:
- rc = tch_bridge(net, arg);
+ rc = tch_bridge(net, &msg->bridge);
if (rc < 0)
- disconnect_bridge(net, arg, -rc);
+ disconnect_bridge(net, &msg->bridge, -rc);
return rc;
case MNCC_RTP_CREATE:
- return tch_rtp_create(net, data->callref);
+ return tch_rtp_create(net, msg->rtp.callref);
case MNCC_RTP_CONNECT:
- return tch_rtp_connect(net, arg);
+ return tch_rtp_connect(net, &msg->rtp);
case MNCC_RTP_FREE:
/* unused right now */
return -EIO;
@@ -1838,12 +1829,11 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
case GSM_TCHH_FRAME:
case GSM_TCH_FRAME_AMR:
LOG_TRANS_CAT(trans, DMNCC, LOGL_ERROR, "RTP streams must be handled externally; %s not supported.\n",
- get_mncc_name(msg_type));
+ get_mncc_name(msg->msg_type));
return -ENOTSUP;
}
- memset(&rel, 0, sizeof(struct gsm_mncc));
- rel.callref = data->callref;
+ data = &msg->signal;
/* Find callref */
trans = trans_find_by_callref(net, data->callref);
@@ -1852,9 +1842,9 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
if (!trans) {
struct vlr_subscr *vsub;
- if (msg_type != MNCC_SETUP_REQ) {
+ if (msg->msg_type != MNCC_SETUP_REQ) {
LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "Unknown call reference for %s\n",
- get_mncc_name(msg_type));
+ get_mncc_name(msg->msg_type));
/* Invalid call reference */
return mncc_release_ind(net, NULL, data->callref,
GSM48_CAUSE_LOC_PRN_S_LU,
@@ -1862,7 +1852,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
}
if (!data->called.number[0] && !data->imsi[0]) {
LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "Neither number nor IMSI in %s\n",
- get_mncc_name(msg_type));
+ get_mncc_name(msg->msg_type));
/* Invalid number */
return mncc_release_ind(net, NULL, data->callref,
GSM48_CAUSE_LOC_PRN_S_LU,
@@ -1873,12 +1863,12 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
vsub = vlr_subscr_find_by_msisdn(net->vlr, data->called.number, __func__);
if (!vsub)
LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "rx %s for unknown subscriber number '%s'\n",
- get_mncc_name(msg_type), data->called.number);
+ get_mncc_name(msg->msg_type), data->called.number);
} else {
vsub = vlr_subscr_find_by_imsi(net->vlr, data->imsi, __func__);
if (!vsub)
LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "rx %s for unknown subscriber IMSI '%s'\n",
- get_mncc_name(msg_type), data->imsi);
+ get_mncc_name(msg->msg_type), data->imsi);
}
if (!vsub)
return mncc_release_ind(net, NULL, data->callref, GSM48_CAUSE_LOC_PRN_S_LU,
@@ -1889,7 +1879,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
/* If subscriber is not "attached" */
if (!vsub->lu_complete) {
LOG_TRANS_CAT(trans, DCC, LOGL_ERROR, "rx %s for subscriber that is not attached: %s\n",
- get_mncc_name(msg_type), vlr_subscr_name(vsub));
+ get_mncc_name(msg->msg_type), vlr_subscr_name(vsub));
vlr_subscr_put(vsub, __func__);
/* Temporarily out of order */
return mncc_release_ind(net, NULL, data->callref,
@@ -1897,7 +1887,7 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
GSM48_CC_CAUSE_DEST_OOO);
}
/* Create transaction */
- trans = trans_alloc(net, vsub, GSM48_PDISC_CC,
+ trans = trans_alloc(net, vsub, TRANS_CC,
TRANS_ID_UNASSIGNED, data->callref);
if (!trans) {
LOG_TRANS(trans, LOGL_ERROR, "No memory for trans.\n");
@@ -1909,20 +1899,16 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
return -ENOMEM;
}
- /* Find conn */
- conn = connection_for_subscr(vsub);
+ /* Find valid conn */
+ msc_a = msc_a_for_vsub(vsub, true);
/* If subscriber has no conn */
- if (!conn) {
- /* find transaction with this subscriber already paging */
- llist_for_each_entry(transt, &net->trans_list, entry) {
- /* Transaction of our conn? */
- if (transt == trans ||
- transt->vsub != vsub)
- continue;
+ if (!msc_a) {
+
+ if (vsub->cs.is_paging) {
LOG_TRANS(trans, LOGL_DEBUG,
"rx %s, subscriber not yet connected, paging already started\n",
- get_mncc_name(msg_type));
+ get_mncc_name(msg->msg_type));
vlr_subscr_put(vsub, __func__);
trans_free(trans);
return 0;
@@ -1932,24 +1918,19 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
memcpy(&trans->cc.msg, data, sizeof(struct gsm_mncc));
/* Request a channel */
- trans->paging_request = subscr_request_conn(
- vsub,
- setup_trig_pag_evt,
- trans,
- "MNCC: establish call",
- SGSAP_SERV_IND_CS_CALL);
+ trans->paging_request = paging_request_start(vsub, PAGING_CAUSE_CALL_CONVERSATIONAL,
+ cc_paging_cb, trans, "MNCC: establish call");
if (!trans->paging_request) {
LOG_TRANS(trans, LOGL_ERROR, "Failed to allocate paging token.\n");
- vlr_subscr_put(vsub, __func__);
trans_free(trans);
- return 0;
}
vlr_subscr_put(vsub, __func__);
return 0;
}
/* Assign conn */
- trans->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_CC);
+ trans->msc_a = msc_a;
+ msc_a_get(msc_a, MSC_A_USE_CC);
trans->dlci = 0x00; /* SAPI=0, not SACCH */
vlr_subscr_put(vsub, __func__);
} else {
@@ -1957,19 +1938,22 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
log_set_context(LOG_CTX_VLR_SUBSCR, trans->vsub);
}
- LOG_TRANS_CAT(trans, DMNCC, LOGL_DEBUG, "rx %s\n", get_mncc_name(msg_type));
+ LOG_TRANS_CAT(trans, DMNCC, LOGL_DEBUG, "rx %s\n", get_mncc_name(msg->msg_type));
gsm48_start_guard_timer(trans);
- if (trans->conn)
- conn = trans->conn;
+ if (trans->msc_a)
+ msc_a = trans->msc_a;
/* if paging did not respond yet */
- if (!conn) {
- LOG_TRANS(trans, LOGL_DEBUG, "rx %s in paging state\n", get_mncc_name(msg_type));
+ if (!msc_a) {
+ struct gsm_mncc rel = {
+ .callref = data->callref,
+ };
+ LOG_TRANS(trans, LOGL_DEBUG, "rx %s in paging state\n", get_mncc_name(msg->msg_type));
mncc_set_cause(&rel, GSM48_CAUSE_LOC_PRN_S_LU,
GSM48_CC_CAUSE_NORM_CALL_CLEAR);
- if (msg_type == MNCC_REL_REQ)
+ if (msg->msg_type == MNCC_REL_REQ)
rc = mncc_recvmsg(net, trans, MNCC_REL_CNF, &rel);
else
rc = mncc_recvmsg(net, trans, MNCC_REL_IND, &rel);
@@ -1978,25 +1962,83 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
return rc;
} else {
LOG_TRANS(trans, LOGL_DEBUG, "rx %s in state %s\n",
- get_mncc_name(msg_type), gsm48_cc_state_name(trans->cc.state));
+ get_mncc_name(msg->msg_type), gsm48_cc_state_name(trans->cc.state));
}
/* Find function for current state and message */
for (i = 0; i < DOWNSLLEN; i++)
- if ((msg_type == downstatelist[i].type)
+ if ((msg->msg_type == downstatelist[i].type)
&& ((1 << trans->cc.state) & downstatelist[i].states))
break;
if (i == DOWNSLLEN) {
LOG_TRANS(trans, LOGL_DEBUG, "Message '%s' unhandled at state '%s'\n",
- get_mncc_name(msg_type), gsm48_cc_state_name(trans->cc.state));
+ get_mncc_name(msg->msg_type), gsm48_cc_state_name(trans->cc.state));
return 0;
}
- rc = downstatelist[i].rout(trans, arg);
+ rc = downstatelist[i].rout(trans, (void*)msg);
return rc;
}
+struct mncc_call *mncc_find_by_callref_from_msg(const union mncc_msg *msg)
+{
+ uint32_t callref;
+
+ switch (msg->msg_type) {
+ case MNCC_BRIDGE:
+ callref = msg->bridge.callref[0];
+ break;
+ case MNCC_RTP_CREATE:
+ case MNCC_RTP_CONNECT:
+ callref = msg->rtp.callref;
+ break;
+
+ case MNCC_RTP_FREE:
+ case MNCC_FRAME_DROP:
+ case MNCC_FRAME_RECV:
+ case GSM_TCHF_FRAME:
+ case GSM_TCHF_FRAME_EFR:
+ case GSM_TCHH_FRAME:
+ case GSM_TCH_FRAME_AMR:
+ return NULL;
+
+ default:
+ callref = msg->signal.callref;
+ break;
+ }
+
+ return mncc_call_find_by_callref(callref);
+}
+
+/* Demux incoming genuine calls to GSM CC from MNCC forwarding for inter-MSC handover */
+int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
+{
+ const union mncc_msg *msg = arg;
+ struct mncc_call *mncc_call = NULL;
+ OSMO_ASSERT(msg_type == msg->msg_type);
+
+ if (msg->msg_type == MNCC_SETUP_REQ) {
+ /* Incoming call to forward for inter-MSC Handover? */
+ mncc_call = msc_t_check_call_to_handover_number(&msg->signal);
+ if (mncc_call)
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG,
+ "Incoming call matches pending inter-MSC Handover Number\n");
+ }
+ if (!mncc_call) {
+ /* Find already active MNCC FSM for this callref.
+ * Currently only for inter-MSC call forwarding, but mncc_fsm could at some point also be used for direct
+ * MNCC<->GSM-CC call handling. */
+ mncc_call = mncc_find_by_callref_from_msg(msg);
+ }
+ if (mncc_call) {
+ mncc_call_rx(mncc_call, msg);
+ return 0;
+ }
+
+ /* None of the above? Then it must be a normal GSM CC call related message. */
+ return mncc_tx_to_gsm_cc(net, msg);
+}
static struct datastate {
uint32_t states;
@@ -2052,12 +2094,14 @@ static struct datastate {
#define DATASLLEN \
(sizeof(datastatelist) / sizeof(struct datastate))
-int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg)
+int gsm0408_rcv_cc(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t msg_type = gsm48_hdr_msg_type(gh);
uint8_t transaction_id = gsm48_hdr_trans_id_flip_ti(gh);
struct gsm_trans *trans = NULL;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct gsm_network *net = msc_a_net(msc_a);
int i, rc = 0;
if (msg_type & 0x80) {
@@ -2065,33 +2109,44 @@ int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg)
return -EINVAL;
}
- if (!conn->vsub) {
+ if (!vsub) {
LOG_TRANS(trans, LOGL_ERROR, "Invalid conn: no subscriber\n");
return -EINVAL;
}
/* Find transaction */
- trans = trans_find_by_id(conn, GSM48_PDISC_CC, transaction_id);
+ trans = trans_find_by_id(msc_a, TRANS_CC, transaction_id);
/* Create transaction */
if (!trans) {
- DEBUGP(DCC, "Unknown transaction ID %x, "
- "creating new trans.\n", transaction_id);
/* Create transaction */
- trans = trans_alloc(conn->network, conn->vsub,
- GSM48_PDISC_CC,
- transaction_id, new_callref++);
+ trans = trans_alloc(net, vsub,
+ TRANS_CC,
+ transaction_id, msc_cc_next_outgoing_callref());
if (!trans) {
LOG_TRANS(trans, LOGL_ERROR, "No memory for trans.\n");
- rc = gsm48_tx_simple(conn,
+ rc = gsm48_tx_simple(msc_a,
GSM48_PDISC_CC | (transaction_id << 4),
GSM48_MT_CC_RELEASE_COMPL);
return -ENOMEM;
}
+ if (osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_TRANSACTION_ACCEPTED, trans)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Not allowed to accept CC transaction\n");
+ trans_free(trans);
+ return -EINVAL;
+ }
+
/* Assign transaction */
- trans->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_CC);
+ msc_a_get(msc_a, MSC_A_USE_CC);
+ trans->msc_a = msc_a;
trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */
- cm_service_request_concludes(conn, msg);
+
+ /* An earlier CM Service Request for this CC message now has concluded */
+ if (!osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_CC))
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "Creating new CC transaction without prior CM Service Request\n");
+ else
+ msc_a_put(msc_a, MSC_A_USE_CM_SERVICE_CC);
}
LOG_TRANS(trans, LOGL_DEBUG, "rx %s in state %s\n", gsm48_cc_msg_name(msg_type),
@@ -2104,6 +2159,14 @@ int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg)
break;
if (i == DATASLLEN) {
LOG_TRANS(trans, LOGL_ERROR, "Message unhandled at this state.\n");
+
+ /* If a transaction was just now created, it was a bogus transaction ID, and we need to clean up the
+ * transaction right away. */
+ if (trans->cc.state == GSM_CSTATE_NULL) {
+ LOG_TRANS(trans, LOGL_ERROR, "Unknown transaction ID for non-SETUP message is not allowed"
+ " -- disarding new CC transaction right away\n");
+ trans_free(trans);
+ }
return 0;
}
@@ -2111,6 +2174,5 @@ int gsm0408_rcv_cc(struct ran_conn *conn, struct msgb *msg)
rc = datastatelist[i].rout(trans, msg);
- ran_conn_communicating(conn);
return rc;
}
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 71069dc56..4a668b940 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -51,8 +51,10 @@
#include <osmocom/msc/signal.h>
#include <osmocom/msc/db.h>
#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/msc_ifaces.h>
#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/paging.h>
#ifdef BUILD_SMPP
#include "smpp_smsc.h"
@@ -61,7 +63,6 @@
void *tall_gsms_ctx;
static uint32_t new_callref = 0x40000001;
-
struct gsm_sms *sms_alloc(void)
{
return talloc_zero(tall_gsms_ctx, struct gsm_sms);
@@ -124,57 +125,39 @@ static int gsm411_sendmsg(struct gsm_trans *trans, struct msgb *msg)
{
LOG_TRANS(trans, LOGL_DEBUG, "GSM4.11 TX %s\n", msgb_hexdump(msg));
msg->l3h = msg->data;
- return msc_tx_dtap(trans->conn, msg);
+ return msc_a_tx_dtap_to_i(trans->msc_a, msg);
}
/* Paging callback for MT SMS (Paging is triggered by SMC) */
-static int paging_cb_mmsms_est_req(unsigned int hooknum, unsigned int event,
- struct msgb *msg, void *_conn, void *_trans)
+static void mmsms_paging_cb(struct msc_a *msc_a, struct gsm_trans *trans)
{
- struct ran_conn *conn = _conn;
- struct gsm_trans *trans = _trans;
struct gsm_sms *sms = trans->sms.sms;
- int rc = 0;
- LOG_TRANS(trans, LOGL_DEBUG, "%s(%s)\n", __func__, event == GSM_PAGING_SUCCEEDED ? "success" : "expired");
-
- if (hooknum != GSM_HOOK_RR_PAGING)
- return -EINVAL;
+ LOG_TRANS(trans, LOGL_DEBUG, "%s(%s)\n", __func__, msc_a ? "success" : "expired");
- /* Paging procedure has finished */
- trans->paging_request = NULL;
-
- switch (event) {
- case GSM_PAGING_SUCCEEDED:
+ if (msc_a) {
+ /* Paging succeeded */
/* Associate transaction with established connection */
- trans->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_SMS);
+ msc_a_get(msc_a, MSC_A_USE_SMS);
+ trans->msc_a = msc_a;
/* Confirm successful connection establishment */
- gsm411_smc_recv(&trans->sms.smc_inst,
- GSM411_MMSMS_EST_CNF, NULL, 0);
- break;
- case GSM_PAGING_EXPIRED:
- case GSM_PAGING_BUSY:
+ gsm411_smc_recv(&trans->sms.smc_inst, GSM411_MMSMS_EST_CNF, NULL, 0);
+ } else {
+ /* Paging expired or failed */
/* Inform SMC about channel establishment failure */
- gsm411_smc_recv(&trans->sms.smc_inst,
- GSM411_MMSMS_REL_IND, NULL, 0);
+ gsm411_smc_recv(&trans->sms.smc_inst, GSM411_MMSMS_REL_IND, NULL, 0);
/* gsm411_send_rp_data() doesn't set trans->sms.sms */
if (sms != NULL) {
/* Notify the SMSqueue and free stored SMS */
- send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, event);
+ send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, 0);
trans->sms.sms = NULL;
sms_free(sms);
}
/* Destroy this transaction */
trans_free(trans);
- rc = -ETIMEDOUT;
- break;
- default:
- LOGP(DLSMS, LOGL_ERROR, "Unhandled paging event: %d\n", event);
}
-
- return rc;
}
static int gsm411_mmsms_est_req(struct gsm_trans *trans)
@@ -183,7 +166,7 @@ static int gsm411_mmsms_est_req(struct gsm_trans *trans)
OSMO_ASSERT(trans->vsub != NULL);
/* Check if connection is already established */
- if (trans->conn != NULL) {
+ if (trans->msc_a != NULL) {
LOG_TRANS(trans, LOGL_DEBUG, "Using an existing connection\n");
return gsm411_smc_recv(&trans->sms.smc_inst,
GSM411_MMSMS_EST_CNF, NULL, 0);
@@ -191,15 +174,12 @@ static int gsm411_mmsms_est_req(struct gsm_trans *trans)
/* Initiate Paging procedure */
LOG_TRANS(trans, LOGL_DEBUG, "Initiating Paging due to MMSMS_EST_REQ\n");
- trans->paging_request = subscr_request_conn(trans->vsub,
- paging_cb_mmsms_est_req,
- trans, "MT SMS",
- SGSAP_SERV_IND_SMS);
+ trans->paging_request = paging_request_start(trans->vsub, PAGING_CAUSE_SIGNALLING_LOW_PRIO,
+ mmsms_paging_cb, trans, "MT-SMS");
if (!trans->paging_request) {
LOG_TRANS(trans, LOGL_ERROR, "Failed to initiate Paging\n");
/* Inform SMC about channel establishment failure */
- gsm411_smc_recv(&trans->sms.smc_inst,
- GSM411_MMSMS_REL_IND, NULL, 0);
+ gsm411_smc_recv(&trans->sms.smc_inst, GSM411_MMSMS_REL_IND, NULL, 0);
trans_free(trans);
return -EIO;
}
@@ -215,7 +195,7 @@ static int gsm411_cp_sendmsg(struct msgb *msg, struct gsm_trans *trans,
gh = (struct gsm48_hdr *) msgb_push(msg, sizeof(*gh));
/* Outgoing needs the highest bit set */
- gh->proto_discr = trans->protocol | (trans->transaction_id<<4);
+ gh->proto_discr = GSM48_PDISC_SMS | (trans->transaction_id<<4);
gh->msg_type = msg_type;
OMSC_LINKID_CB(msg) = trans->dlci;
@@ -408,19 +388,18 @@ static int gsm340_gen_sms_status_report_tpdu(struct gsm_trans *trans, struct msg
static int sms_route_mt_sms(struct gsm_trans *trans, struct gsm_sms *gsms)
{
int rc;
- struct ran_conn *conn = trans->conn;
+ struct msc_a *msc_a = trans->msc_a;
+ struct gsm_network *net = msc_a_net(msc_a);
#ifdef BUILD_SMPP
- int smpp_first = smpp_route_smpp_first(gsms, conn);
-
/*
* Route through SMPP first before going to the local database. In case
* of a unroutable message and no local subscriber, SMPP will be tried
* twice. In case of an unknown subscriber continue with the normal
* delivery of the SMS.
*/
- if (smpp_first) {
- rc = smpp_try_deliver(gsms, conn);
+ if (smpp_route_smpp_first()) {
+ rc = smpp_try_deliver(gsms, msc_a);
if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED)
/* unknown subscriber, try local */
goto try_local;
@@ -428,8 +407,7 @@ static int sms_route_mt_sms(struct gsm_trans *trans, struct gsm_sms *gsms)
LOG_TRANS(trans, LOGL_ERROR, "SMS delivery error: %d\n", rc);
rc = GSM411_RP_CAUSE_MO_TEMP_FAIL;
/* rc will be logged by gsm411_send_rp_error() */
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[
- MSC_CTR_SMS_DELIVER_UNKNOWN_ERROR]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_DELIVER_UNKNOWN_ERROR]);
}
return rc;
}
@@ -438,28 +416,27 @@ try_local:
#endif
/* determine gsms->receiver based on dialled number */
- gsms->receiver = vlr_subscr_find_by_msisdn(conn->network->vlr, gsms->dst.addr, VSUB_USE_SMS_RECEIVER);
+ gsms->receiver = vlr_subscr_find_by_msisdn(net->vlr, gsms->dst.addr, VSUB_USE_SMS_RECEIVER);
if (!gsms->receiver) {
#ifdef BUILD_SMPP
/* Avoid a second look-up */
- if (smpp_first) {
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
+ if (smpp_route_smpp_first()) {
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
}
- rc = smpp_try_deliver(gsms, conn);
+ rc = smpp_try_deliver(gsms, msc_a);
if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED) {
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
} else if (rc < 0) {
LOG_TRANS(trans, LOGL_ERROR, "SMS delivery error: %d\n", rc);
rc = GSM411_RP_CAUSE_MO_TEMP_FAIL;
/* rc will be logged by gsm411_send_rp_error() */
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[
- MSC_CTR_SMS_DELIVER_UNKNOWN_ERROR]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_DELIVER_UNKNOWN_ERROR]);
}
#else
rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
#endif
} else
rc = 0;
@@ -473,7 +450,6 @@ try_local:
static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
uint32_t gsm411_msg_ref)
{
- struct ran_conn *conn = trans->conn;
uint8_t *smsp = msgb_sms(msg);
struct gsm_sms *gsms;
unsigned int sms_alphabet;
@@ -482,8 +458,14 @@ static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
uint8_t da_len_bytes;
uint8_t address_lv[12]; /* according to 03.40 / 9.1.2.5 */
int rc = 0;
+ struct msc_a *msc_a = trans->msc_a;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_SUBMITTED]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_SMS_SUBMITTED]);
+
+ if (!msc_a || !vsub)
+ return GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER;
gsms = sms_alloc();
if (!gsms)
@@ -575,7 +557,7 @@ static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
}
}
- OSMO_STRLCPY_ARRAY(gsms->src.addr, conn->vsub->msisdn);
+ OSMO_STRLCPY_ARRAY(gsms->src.addr, vsub->msisdn);
LOG_TRANS(trans, LOGL_INFO,
"MO SMS -- MTI: 0x%02x, VPF: 0x%02x, "
@@ -589,9 +571,6 @@ static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
gsms->validity_minutes = gsm340_validity_period(sms_vpf, sms_vp);
- /* FIXME: This looks very wrong */
- send_signal(0, NULL, gsms, 0);
-
rc = sms_route_mt_sms(trans, gsms);
/*
@@ -820,7 +799,8 @@ static int gsm411_rx_rp_ack(struct gsm_trans *trans,
static int gsm411_rx_rp_error(struct gsm_trans *trans,
struct gsm411_rp_hdr *rph)
{
- struct gsm_network *net = trans->conn->network;
+ struct msc_a *msc_a = trans->msc_a;
+ struct gsm_network *net = msc_a_net(msc_a);
struct gsm_sms *sms = trans->sms.sms;
uint8_t cause_len = rph->data[0];
uint8_t cause = rph->data[1];
@@ -1001,11 +981,11 @@ static int gsm411_mn_recv(struct gsm411_smc_inst *inst, int msg_type,
return rc;
}
-static struct gsm_trans *gsm411_trans_init(struct gsm_network *net, struct vlr_subscr *vsub, struct ran_conn *conn,
- uint8_t tid)
+static struct gsm_trans *gsm411_trans_init(struct gsm_network *net, struct vlr_subscr *vsub, struct msc_a *msc_a,
+ uint8_t tid, bool mo)
{
/* Allocate a new transaction */
- struct gsm_trans *trans = trans_alloc(net, vsub, GSM48_PDISC_SMS, tid, new_callref++);
+ struct gsm_trans *trans = trans_alloc(net, vsub, TRANS_SMS, tid, new_callref++);
if (!trans) {
LOG_TRANS(trans, LOGL_ERROR, "No memory for transaction\n");
return NULL;
@@ -1015,9 +995,24 @@ static struct gsm_trans *gsm411_trans_init(struct gsm_network *net, struct vlr_s
gsm411_smc_init(&trans->sms.smc_inst, 0, 1, gsm411_mn_recv, gsm411_mm_send);
gsm411_smr_init(&trans->sms.smr_inst, 0, 1, gsm411_rl_recv, gsm411_mn_send);
- /* Associate transaction with connection */
- if (conn)
- trans->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_SMS);
+ if (msc_a) {
+ msc_a_get(msc_a, MSC_A_USE_SMS);
+ trans->msc_a = msc_a;
+
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_TRANSACTION_ACCEPTED, trans);
+ if (mo) {
+ if (!osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_SMS))
+ LOG_TRANS(trans, LOGL_ERROR, "MO SMS without prior CM Service Request\n");
+ else
+ msc_a_put(msc_a, MSC_A_USE_CM_SERVICE_SMS);
+ }
+ }
+
+ /* Init both SMC and SMR state machines */
+ gsm411_smc_init(&trans->sms.smc_inst, 0, 1,
+ gsm411_mn_recv, gsm411_mm_send);
+ gsm411_smr_init(&trans->sms.smr_inst, 0, 1,
+ gsm411_rl_recv, gsm411_mn_send);
return trans;
}
@@ -1049,22 +1044,22 @@ static int gsm411_assign_sm_rp_mr(struct gsm_trans *trans)
static struct gsm_trans *gsm411_alloc_mt_trans(struct gsm_network *net,
struct vlr_subscr *vsub)
{
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct gsm_trans *trans = NULL;
int tid;
/* Generate a new transaction ID */
- tid = trans_assign_trans_id(net, vsub, GSM48_PDISC_SMS);
+ tid = trans_assign_trans_id(net, vsub, TRANS_SMS);
if (tid == -1) {
LOG_TRANS(trans, LOGL_ERROR, "No available transaction IDs\n");
return NULL;
}
/* Attempt to find an existing connection */
- conn = connection_for_subscr(vsub);
+ msc_a = msc_a_for_vsub(vsub, true);
/* Allocate a new transaction */
- trans = gsm411_trans_init(net, vsub, conn, tid);
+ trans = gsm411_trans_init(net, vsub, msc_a, tid, false);
if (!trans)
return NULL;
@@ -1193,8 +1188,7 @@ int gsm411_send_rp_data(struct gsm_network *net, struct vlr_subscr *vsub,
}
/* Entry point for incoming GSM48_PDISC_SMS from abis_rsl.c */
-int gsm0411_rcv_sms(struct ran_conn *conn,
- struct msgb *msg)
+int gsm0411_rcv_sms(struct msc_a *msc_a, struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t msg_type = gh->msg_type;
@@ -1203,12 +1197,10 @@ int gsm0411_rcv_sms(struct ran_conn *conn,
struct gsm_trans *trans;
int new_trans = 0;
int rc = 0;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct gsm_network *net = msc_a_net(msc_a);
- if (!conn->vsub)
- return -EIO;
- /* FIXME: send some error message */
-
- trans = trans_find_by_id(conn, GSM48_PDISC_SMS, transaction_id);
+ trans = trans_find_by_id(msc_a, TRANS_SMS, transaction_id);
/*
* A transaction we created but don't know about?
@@ -1222,7 +1214,8 @@ int gsm0411_rcv_sms(struct ran_conn *conn,
}
if (!trans) {
- trans = gsm411_trans_init(conn->network, conn->vsub, conn, transaction_id);
+ new_trans = 1;
+ trans = gsm411_trans_init(net, vsub, msc_a, transaction_id, true);
if (!trans) {
/* FIXME: send some error message */
return -ENOMEM;
@@ -1230,9 +1223,6 @@ int gsm0411_rcv_sms(struct ran_conn *conn,
trans->sms.sm_rp_mr = rph->msg_ref; /* SM-RP Message Reference */
trans->dlci = OMSC_LINKID_CB(msg); /* DLCI as received from BSC */
-
- new_trans = 1;
- cm_service_request_concludes(conn, msg);
}
LOG_TRANS(trans, LOGL_DEBUG, "receiving SMS message %s\n",
@@ -1253,7 +1243,7 @@ int gsm0411_rcv_sms(struct ran_conn *conn,
if (i == transaction_id)
continue;
- ptrans = trans_find_by_id(conn, GSM48_PDISC_SMS, i);
+ ptrans = trans_find_by_id(msc_a, TRANS_SMS, i);
if (!ptrans)
continue;
@@ -1264,8 +1254,6 @@ int gsm0411_rcv_sms(struct ran_conn *conn,
}
}
- ran_conn_communicating(conn);
-
gsm411_smc_recv(&trans->sms.smc_inst,
(new_trans) ? GSM411_MMSMS_EST_IND : GSM411_MMSMS_DATA_IND,
msg, msg_type);
@@ -1293,19 +1281,19 @@ void _gsm411_sms_trans_free(struct gsm_trans *trans)
}
/* Process incoming SAPI N-REJECT from BSC */
-void gsm411_sapi_n_reject(struct ran_conn *conn)
+void gsm411_sapi_n_reject(struct msc_a *msc_a)
{
struct gsm_network *net;
struct gsm_trans *trans, *tmp;
- net = conn->network;
+ net = msc_a_net(msc_a);
llist_for_each_entry_safe(trans, tmp, &net->trans_list, entry) {
struct gsm_sms *sms;
- if (trans->conn != conn)
+ if (trans->msc_a != msc_a)
continue;
- if (trans->protocol != GSM48_PDISC_SMS)
+ if (trans->type != TRANS_SMS)
continue;
sms = trans->sms.sms;
diff --git a/src/libmsc/gsm_04_11_gsup.c b/src/libmsc/gsm_04_11_gsup.c
index cd83b4102..30f18714d 100644
--- a/src/libmsc/gsm_04_11_gsup.c
+++ b/src/libmsc/gsm_04_11_gsup.c
@@ -31,6 +31,8 @@
#include <osmocom/msc/msc_common.h>
#include <osmocom/msc/debug.h>
#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/gsup_client_mux.h>
/* Common helper for preparing to be encoded GSUP message */
static void gsup_sm_msg_init(struct osmo_gsup_message *gsup_msg,
@@ -38,11 +40,11 @@ static void gsup_sm_msg_init(struct osmo_gsup_message *gsup_msg,
uint8_t *sm_rp_mr)
{
/* Init a mew GSUP message */
- memset(gsup_msg, 0x00, sizeof(*gsup_msg));
- gsup_msg->message_type = msg_type;
-
- /* SM-RP-MR (Message Reference) */
- gsup_msg->sm_rp_mr = sm_rp_mr;
+ *gsup_msg = (struct osmo_gsup_message){
+ .message_type = msg_type,
+ .sm_rp_mr = sm_rp_mr,
+ .message_class = OSMO_GSUP_MESSAGE_CLASS_SMS,
+ };
/* Fill in subscriber's IMSI */
OSMO_STRLCPY_ARRAY(gsup_msg->imsi, imsi);
@@ -89,7 +91,7 @@ int gsm411_gsup_mo_fwd_sm_req(struct gsm_trans *trans, struct msgb *msg,
gsup_msg.sm_rp_ui_len = msgb_l4len(msg);
gsup_msg.sm_rp_ui = (uint8_t *) msgb_sms(msg);
- return osmo_gsup_client_enc_send(trans->net->vlr->gsup_client, &gsup_msg);
+ return gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
}
int gsm411_gsup_mo_ready_for_sm_req(struct gsm_trans *trans, uint8_t sm_rp_mr)
@@ -111,12 +113,12 @@ int gsm411_gsup_mo_ready_for_sm_req(struct gsm_trans *trans, uint8_t sm_rp_mr)
/* Indicate SMMA as the Alert Reason */
gsup_msg.sm_alert_rsn = OSMO_GSUP_SMS_SM_ALERT_RSN_MEM_AVAIL;
- return osmo_gsup_client_enc_send(trans->net->vlr->gsup_client, &gsup_msg);
+ return gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
}
/* Triggers either RP-ACK or RP-ERROR on response from SMSC */
-int gsm411_gsup_mo_handler(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg)
+static int gsm411_gsup_mo_handler(struct vlr_subscr *vsub,
+ const struct osmo_gsup_message *gsup_msg)
{
struct vlr_instance *vlr;
struct gsm_network *net;
@@ -203,7 +205,7 @@ int gsm411_gsup_mt_fwd_sm_res(struct gsm_trans *trans, uint8_t sm_rp_mr)
gsup_sm_msg_init(&gsup_msg, OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT,
trans->vsub->imsi, &sm_rp_mr);
- return osmo_gsup_client_enc_send(trans->net->vlr->gsup_client, &gsup_msg);
+ return gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
}
int gsm411_gsup_mt_fwd_sm_err(struct gsm_trans *trans,
@@ -224,12 +226,12 @@ int gsm411_gsup_mt_fwd_sm_err(struct gsm_trans *trans,
gsup_msg.sm_rp_cause = &cause;
/* TODO: include optional SM-RP-UI field if present */
- return osmo_gsup_client_enc_send(trans->net->vlr->gsup_client, &gsup_msg);
+ return gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
}
/* Handles MT SMS (and triggers Paging Request if required) */
-int gsm411_gsup_mt_handler(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg)
+static int gsm411_gsup_mt_handler(struct vlr_subscr *vsub,
+ const struct osmo_gsup_message *gsup_msg)
{
struct vlr_instance *vlr;
struct gsm_network *net;
@@ -285,3 +287,34 @@ msg_error:
LOGP(DLSMS, LOGL_NOTICE, "RX malformed MT-forwardSM-Req\n");
return -EINVAL;
}
+
+int gsm411_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg)
+{
+ struct vlr_instance *vlr = data;
+ struct vlr_subscr *vsub = vlr_subscr_find_by_imsi(vlr, gsup_msg->imsi, __func__);
+
+ if (!vsub) {
+ gsup_client_mux_tx_error_reply(gcm, gsup_msg, GMM_CAUSE_IMSI_UNKNOWN);
+ return -GMM_CAUSE_IMSI_UNKNOWN;
+ }
+
+ switch (gsup_msg->message_type) {
+ /* GSM 04.11 code implementing MO SMS */
+ case OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR:
+ case OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT:
+ case OSMO_GSUP_MSGT_READY_FOR_SM_ERROR:
+ case OSMO_GSUP_MSGT_READY_FOR_SM_RESULT:
+ DEBUGP(DMSC, "Routed to GSM 04.11 MO handler\n");
+ return gsm411_gsup_mo_handler(vsub, gsup_msg);
+
+ /* GSM 04.11 code implementing MT SMS */
+ case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST:
+ DEBUGP(DMSC, "Routed to GSM 04.11 MT handler\n");
+ return gsm411_gsup_mt_handler(vsub, gsup_msg);
+
+ default:
+ LOGP(DMM, LOGL_ERROR, "No handler found for %s, dropping message...\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ return -GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL;
+ }
+}
diff --git a/src/libmsc/gsm_04_14.c b/src/libmsc/gsm_04_14.c
index 8fe03a88b..044b61c0b 100644
--- a/src/libmsc/gsm_04_14.c
+++ b/src/libmsc/gsm_04_14.c
@@ -30,7 +30,7 @@
#include <osmocom/msc/gsm_data.h>
#include <osmocom/msc/gsm_subscriber.h>
#include <osmocom/msc/gsm_04_08.h>
-#include <osmocom/msc/msc_ifaces.h>
+#include <osmocom/msc/msc_a.h>
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gsm/gsm_utils.h>
@@ -51,21 +51,21 @@ static struct msgb *create_gsm0414_msg(uint8_t msg_type)
return msg;
}
-static int gsm0414_conn_sendmsg(struct ran_conn *conn, struct msgb *msg)
+static int gsm0414_conn_sendmsg(struct msc_a *msc_a, struct msgb *msg)
{
- return msc_tx_dtap(conn, msg);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
-static int gsm0414_tx_simple(struct ran_conn *conn, uint8_t msg_type)
+static int gsm0414_tx_simple(struct msc_a *msc_a, uint8_t msg_type)
{
struct msgb *msg = create_gsm0414_msg(msg_type);
- return gsm0414_conn_sendmsg(conn, msg);
+ return gsm0414_conn_sendmsg(msc_a, msg);
}
/* Send a CLOSE_TCH_LOOOP_CMD according to Section 8.1 */
-int gsm0414_tx_close_tch_loop_cmd(struct ran_conn *conn,
+int gsm0414_tx_close_tch_loop_cmd(struct msc_a *msc_a,
enum gsm414_tch_loop_mode loop_mode)
{
struct msgb *msg = create_gsm0414_msg(GSM414_MT_CLOSE_TCH_LOOP_CMD);
@@ -74,49 +74,49 @@ int gsm0414_tx_close_tch_loop_cmd(struct ran_conn *conn,
subch = (loop_mode << 1);
msgb_put_u8(msg, subch);
- return gsm0414_conn_sendmsg(conn, msg);
+ return gsm0414_conn_sendmsg(msc_a, msg);
}
/* Send a OPEN_LOOP_CMD according to Section 8.3 */
-int gsm0414_tx_open_loop_cmd(struct ran_conn *conn)
+int gsm0414_tx_open_loop_cmd(struct msc_a *msc_a)
{
- return gsm0414_tx_simple(conn, GSM414_MT_OPEN_LOOP_CMD);
+ return gsm0414_tx_simple(msc_a, GSM414_MT_OPEN_LOOP_CMD);
}
/* Send a ACT_EMMI_CMD according to Section 8.8 */
-int gsm0414_tx_act_emmi_cmd(struct ran_conn *conn)
+int gsm0414_tx_act_emmi_cmd(struct msc_a *msc_a)
{
- return gsm0414_tx_simple(conn, GSM414_MT_ACT_EMMI_CMD);
+ return gsm0414_tx_simple(msc_a, GSM414_MT_ACT_EMMI_CMD);
}
/* Send a DEACT_EMMI_CMD according to Section 8.10 */
-int gsm0414_tx_deact_emmi_cmd(struct ran_conn *conn)
+int gsm0414_tx_deact_emmi_cmd(struct msc_a *msc_a)
{
- return gsm0414_tx_simple(conn, GSM414_MT_DEACT_EMMI_CMD);
+ return gsm0414_tx_simple(msc_a, GSM414_MT_DEACT_EMMI_CMD);
}
/* Send a TEST_INTERFACE according to Section 8.11 */
-int gsm0414_tx_test_interface(struct ran_conn *conn,
+int gsm0414_tx_test_interface(struct msc_a *msc_a,
uint8_t tested_devs)
{
struct msgb *msg = create_gsm0414_msg(GSM414_MT_TEST_INTERFACE);
msgb_put_u8(msg, tested_devs);
- return gsm0414_conn_sendmsg(conn, msg);
+ return gsm0414_conn_sendmsg(msc_a, msg);
}
/* Send a RESET_MS_POSITION_STORED according to Section 8.11 */
-int gsm0414_tx_reset_ms_pos_store(struct ran_conn *conn,
+int gsm0414_tx_reset_ms_pos_store(struct msc_a *msc_a,
uint8_t technology)
{
struct msgb *msg = create_gsm0414_msg(GSM414_MT_RESET_MS_POS_STORED);
msgb_put_u8(msg, technology);
- return gsm0414_conn_sendmsg(conn, msg);
+ return gsm0414_conn_sendmsg(msc_a, msg);
}
/* Entry point for incoming GSM48_PDISC_TEST received from MS */
-int gsm0414_rcv_test(struct ran_conn *conn,
+int gsm0414_rcv_test(struct msc_a *msc_a,
struct msgb *msg)
{
struct gsm48_hdr *gh = msgb_l3(msg);
diff --git a/src/libmsc/gsm_04_80.c b/src/libmsc/gsm_04_80.c
index e3547f41d..6a79b5bb6 100644
--- a/src/libmsc/gsm_04_80.c
+++ b/src/libmsc/gsm_04_80.c
@@ -26,7 +26,7 @@
#include <errno.h>
#include <osmocom/msc/gsm_04_80.h>
-#include <osmocom/msc/msc_ifaces.h>
+#include <osmocom/msc/msc_a.h>
#include <osmocom/gsm/protocol/gsm_04_80.h>
#include <osmocom/gsm/gsm0480.h>
@@ -36,7 +36,7 @@
/*! Send a MT RELEASE COMPLETE message with Reject component
* (see section 3.6.1) and given error code (see section 3.6.7).
*
- * \param[in] conn Active RAN connection
+ * \param[in] msc_a Active subscriber
* \param[in] transaction_id Transaction ID with TI flag set
* \param[in] invoke_id InvokeID of the request
* \param[in] problem_tag Problem code tag (table 3.13)
@@ -47,9 +47,8 @@
* failed, any incorrect value can be passed (0x00 > x > 0xff), so
* the universal NULL-tag (see table 3.6) will be used instead.
*/
-int msc_send_ussd_reject(struct ran_conn *conn,
- uint8_t transaction_id, int invoke_id,
- uint8_t problem_tag, uint8_t problem_code)
+int msc_send_ussd_reject(struct msc_a *msc_a, uint8_t transaction_id, int invoke_id,
+ uint8_t problem_tag, uint8_t problem_code)
{
struct gsm48_hdr *gh;
struct msgb *msg;
@@ -67,27 +66,26 @@ int msc_send_ussd_reject(struct ran_conn *conn,
gh->proto_discr |= transaction_id << 4;
gh->msg_type = GSM0480_MTYPE_RELEASE_COMPLETE;
- return msc_tx_dtap(conn, msg);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
-int msc_send_ussd_notify(struct ran_conn *conn, int level, const char *text)
+int msc_send_ussd_notify(struct msc_a *msc_a, int level, const char *text)
{
struct msgb *msg = gsm0480_create_ussd_notify(level, text);
if (!msg)
return -1;
- return msc_tx_dtap(conn, msg);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
-int msc_send_ussd_release_complete(struct ran_conn *conn,
- uint8_t transaction_id)
+int msc_send_ussd_release_complete(struct msc_a *msc_a, uint8_t transaction_id)
{
struct msgb *msg = gsm0480_create_release_complete(transaction_id);
if (!msg)
return -1;
- return msc_tx_dtap(conn, msg);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
-int msc_send_ussd_release_complete_cause(struct ran_conn *conn,
+int msc_send_ussd_release_complete_cause(struct msc_a *msc_a,
uint8_t transaction_id,
uint8_t cause_loc, uint8_t cause_val)
{
@@ -112,5 +110,5 @@ int msc_send_ussd_release_complete_cause(struct ran_conn *conn,
cause_ie[2] = (1 << 7) | (0x03 << 5) | (cause_loc & 0x0f);
cause_ie[3] = (1 << 7) | cause_val;
- return msc_tx_dtap(conn, msg);
+ return msc_a_tx_dtap_to_i(msc_a, msg);
}
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index 25fe4aa83..984cc53ca 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -46,7 +46,10 @@
#include <osmocom/msc/gsm_04_08.h>
#include <osmocom/msc/transaction.h>
#include <osmocom/gsupclient/gsup_client.h>
-#include <osmocom/msc/msc_ifaces.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/paging.h>
+#include <osmocom/msc/gsup_client_mux.h>
/* FIXME: choose a proper range */
static uint32_t new_callref = 0x20000001;
@@ -63,50 +66,65 @@ static void ncss_session_timeout_handler(void *_trans)
LOG_TRANS(trans, LOGL_NOTICE, "SS/USSD session timeout, releasing\n");
/* Indicate connection release to subscriber (if active) */
- if (trans->conn != NULL) {
+ if (trans->msc_a != NULL) {
/* This pair of cause location and value is used by commercial networks */
- msc_send_ussd_release_complete_cause(trans->conn, trans->transaction_id,
+ msc_send_ussd_release_complete_cause(trans->msc_a, trans->transaction_id,
GSM48_CAUSE_LOC_PUN_S_LU, GSM48_CC_CAUSE_NORMAL_UNSPEC);
}
/* Terminate GSUP session with EUSE */
- gsup_msg.message_type = OSMO_GSUP_MSGT_PROC_SS_ERROR;
- OSMO_STRLCPY_ARRAY(gsup_msg.imsi, trans->vsub->imsi);
+ gsup_msg = (struct osmo_gsup_message){
+ .message_type = OSMO_GSUP_MSGT_PROC_SS_ERROR,
+
+ .session_state = OSMO_GSUP_SESSION_STATE_END,
+ .session_id = trans->callref,
+ .cause = GMM_CAUSE_NET_FAIL,
+
+ .message_class = OSMO_GSUP_MESSAGE_CLASS_USSD,
+ };
- gsup_msg.session_state = OSMO_GSUP_SESSION_STATE_END;
- gsup_msg.session_id = trans->callref;
- gsup_msg.cause = GMM_CAUSE_NET_FAIL;
+ OSMO_STRLCPY_ARRAY(gsup_msg.imsi, trans->vsub->imsi);
- osmo_gsup_client_enc_send(trans->net->vlr->gsup_client, &gsup_msg);
+ gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
/* Finally, release this transaction */
trans_free(trans);
}
/* Entry point for call independent MO SS messages */
-int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg)
+int gsm0911_rcv_nc_ss(struct msc_a *msc_a, struct msgb *msg)
{
+ struct gsm_network *net;
+ struct vlr_subscr *vsub;
struct gsm48_hdr *gh = msgb_l3(msg);
struct osmo_gsup_message gsup_msg;
struct gsm_trans *trans;
- struct msgb *gsup_msgb;
uint16_t facility_ie_len;
uint8_t *facility_ie;
uint8_t tid;
uint8_t msg_type;
int rc;
+ net = msc_a_net(msc_a);
+ OSMO_ASSERT(net);
+
+ vsub = msc_a_vsub(msc_a);
+ if (!vsub) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "No vlr_subscr set for this conn\n");
+ return -EINVAL;
+ }
+
msg_type = gsm48_hdr_msg_type(gh);
tid = gsm48_hdr_trans_id_flip_ti(gh);
/* Associate logging messages with this subscriber */
- log_set_context(LOG_CTX_VLR_SUBSCR, conn->vsub);
+ log_set_context(LOG_CTX_VLR_SUBSCR, vsub);
/* Reuse existing transaction, or create a new one */
- trans = trans_find_by_id(conn, GSM48_PDISC_NC_SS, tid);
+ trans = trans_find_by_id(msc_a, TRANS_USSD, tid);
if (!trans) {
/* Count MS-initiated attempts to establish a NC SS/USSD session */
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_REQUESTS]);
/**
* According to GSM TS 04.80, section 2.4.2 "Register
@@ -119,17 +137,16 @@ int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg)
if (msg_type != GSM0480_MTYPE_REGISTER) {
LOG_TRANS(trans, LOGL_ERROR, "Rx wrong SS/USSD message type for new transaction: %s\n",
gsm48_pdisc_msgtype_name(GSM48_PDISC_NC_SS, msg_type));
- gsm48_tx_simple(conn,
+ gsm48_tx_simple(msc_a,
GSM48_PDISC_NC_SS | (tid << 4),
GSM0480_MTYPE_RELEASE_COMPLETE);
return -EINVAL;
}
- trans = trans_alloc(conn->network, conn->vsub,
- GSM48_PDISC_NC_SS, tid, new_callref++);
+ trans = trans_alloc(net, vsub, TRANS_USSD, tid, new_callref++);
if (!trans) {
LOG_TRANS(trans, LOGL_ERROR, " -> No memory for trans\n");
- gsm48_tx_simple(conn,
+ gsm48_tx_simple(msc_a,
GSM48_PDISC_NC_SS | (tid << 4),
GSM0480_MTYPE_RELEASE_COMPLETE);
return -ENOMEM;
@@ -140,20 +157,28 @@ int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg)
ncss_session_timeout_handler, trans);
/* Count active NC SS/USSD sessions */
- osmo_counter_inc(conn->network->active_nc_ss);
+ osmo_counter_inc(net->active_nc_ss);
- trans->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_NC_SS);
trans->dlci = OMSC_LINKID_CB(msg);
- cm_service_request_concludes(conn, msg);
+ trans->msc_a = msc_a;
+ msc_a_get(msc_a, MSC_A_USE_NC_SS);
+
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_TRANSACTION_ACCEPTED, trans);
+
+ /* An earlier CM Service Request for this SS message now has concluded */
+ if (!osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_SS))
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "Creating new MO SS transaction without prior CM Service Request\n");
+ else
+ msc_a_put(msc_a, MSC_A_USE_CM_SERVICE_SS);
}
LOG_TRANS(trans, LOGL_DEBUG, "Received SS/USSD msg %s\n",
gsm48_pdisc_msgtype_name(GSM48_PDISC_NC_SS, msg_type));
/* (Re)schedule the inactivity timer */
- if (conn->network->ncss_guard_timeout > 0) {
- osmo_timer_schedule(&trans->ss.timer_guard,
- conn->network->ncss_guard_timeout, 0);
+ if (net->ncss_guard_timeout > 0) {
+ osmo_timer_schedule(&trans->ss.timer_guard, net->ncss_guard_timeout, 0);
}
/* Attempt to extract Facility IE */
@@ -175,9 +200,11 @@ int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg)
}
/* Compose a mew GSUP message */
- memset(&gsup_msg, 0x00, sizeof(gsup_msg));
- gsup_msg.message_type = OSMO_GSUP_MSGT_PROC_SS_REQUEST;
- gsup_msg.session_id = trans->callref;
+ gsup_msg = (struct osmo_gsup_message){
+ .message_type = OSMO_GSUP_MSGT_PROC_SS_REQUEST,
+ .session_id = trans->callref,
+ .message_class = OSMO_GSUP_MESSAGE_CLASS_USSD,
+ };
/**
* Perform A-interface to GSUP-interface mapping,
@@ -202,45 +229,23 @@ int gsm0911_rcv_nc_ss(struct ran_conn *conn, struct msgb *msg)
}
/* Fill in subscriber's IMSI */
- OSMO_STRLCPY_ARRAY(gsup_msg.imsi, conn->vsub->imsi);
+ OSMO_STRLCPY_ARRAY(gsup_msg.imsi, vsub->imsi);
- /* Allocate GSUP message buffer */
- gsup_msgb = osmo_gsup_client_msgb_alloc();
- if (!gsup_msgb) {
- LOG_TRANS(trans, LOGL_ERROR, "Couldn't allocate GSUP message\n");
- rc = -ENOMEM;
- goto error;
- }
-
- /* Encode GSUP message */
- rc = osmo_gsup_encode(gsup_msgb, &gsup_msg);
- if (rc) {
- LOG_TRANS(trans, LOGL_ERROR, "Couldn't encode GSUP message\n");
- goto error;
- }
-
- /* Finally send */
- rc = osmo_gsup_client_send(conn->network->vlr->gsup_client, gsup_msgb);
- if (rc) {
- LOG_TRANS(trans, LOGL_ERROR, "Couldn't send GSUP message\n");
- goto error;
- }
+ rc = gsup_client_mux_tx(trans->net->gcm, &gsup_msg);
/* Should we release connection? Or wait for response? */
if (msg_type == GSM0480_MTYPE_RELEASE_COMPLETE)
trans_free(trans);
- else
- ran_conn_communicating(conn);
/* Count established MS-initiated NC SS/USSD sessions */
if (msg_type == GSM0480_MTYPE_REGISTER)
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED]);
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MO_ESTABLISHED]);
return 0;
error:
/* Abort transaction on DTAP-interface */
- msc_send_ussd_reject(conn, tid, -1,
+ msc_send_ussd_reject(msc_a, tid, -1,
GSM_0480_PROBLEM_CODE_TAG_GENERAL,
GSM_0480_GEN_PROB_CODE_UNRECOGNISED);
if (trans)
@@ -251,76 +256,69 @@ error:
}
/* Call-back from paging the B-end of the connection */
-static int handle_paging_event(unsigned int hooknum, unsigned int event,
- struct msgb *msg, void *_conn, void *_transt)
+static void ss_paging_cb(struct msc_a *msc_a, struct gsm_trans *trans)
{
- struct ran_conn *conn = _conn;
- enum gsm_paging_event paging_event = event;
- struct gsm_trans *transt = _transt;
struct gsm48_hdr *gh;
struct msgb *ss_msg;
- OSMO_ASSERT(!transt->conn);
- OSMO_ASSERT(transt->ss.msg);
+ if (trans->msc_a) {
+ LOG_MSC_A_CAT(msc_a, DPAG, LOGL_ERROR,
+ "Handle paging error: transaction already associated with subsciber,"
+ " apparently it was already handled. Skip.\n");
+ return;
+ }
+ OSMO_ASSERT(trans->ss.msg);
- switch (paging_event) {
- case GSM_PAGING_SUCCEEDED:
- DEBUGP(DMM, "Paging subscr %s succeeded!\n",
- vlr_subscr_msisdn_or_name(transt->vsub));
+ if (msc_a) {
+ struct gsm_network *net = msc_a_net(msc_a);
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "Paging succeeded\n");
/* Assign connection */
- transt->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_NC_SS);
- transt->paging_request = NULL;
+ msc_a_get(msc_a, MSC_A_USE_NC_SS);
+ trans->msc_a = msc_a;
+ trans->paging_request = NULL;
/* (Re)schedule the inactivity timer */
- if (conn->network->ncss_guard_timeout > 0) {
- osmo_timer_schedule(&transt->ss.timer_guard,
- conn->network->ncss_guard_timeout, 0);
+ if (net->ncss_guard_timeout > 0) {
+ osmo_timer_schedule(&trans->ss.timer_guard, net->ncss_guard_timeout, 0);
}
/* Send stored message */
- ss_msg = transt->ss.msg;
+ ss_msg = trans->ss.msg;
gh = (struct gsm48_hdr *) msgb_push(ss_msg, sizeof(*gh));
gh->proto_discr = GSM48_PDISC_NC_SS;
- gh->proto_discr |= transt->transaction_id << 4;
+ gh->proto_discr |= trans->transaction_id << 4;
gh->msg_type = GSM0480_MTYPE_REGISTER;
/* Sent to the MS, give ownership of ss_msg */
- msc_tx_dtap(transt->conn, ss_msg);
- transt->ss.msg = NULL;
+ msc_a_tx_dtap_to_i(msc_a, ss_msg);
+ trans->ss.msg = NULL;
/* Count established network-initiated NC SS/USSD sessions */
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]);
- break;
- case GSM_PAGING_EXPIRED:
- case GSM_PAGING_BUSY:
- DEBUGP(DMM, "Paging subscr %s %s!\n",
- vlr_subscr_msisdn_or_name(transt->vsub),
- paging_event == GSM_PAGING_EXPIRED ? "expired" : "busy");
+ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]);
+ } else {
+ LOG_MSC_A_CAT(msc_a, DMM, LOGL_DEBUG, "Paging expired\n");
/* TODO: inform HLR about this failure */
- msgb_free(transt->ss.msg);
- transt->ss.msg = NULL;
+ msgb_free(trans->ss.msg);
+ trans->ss.msg = NULL;
- transt->callref = 0;
- transt->paging_request = NULL;
- trans_free(transt);
- break;
+ trans->callref = 0;
+ trans->paging_request = NULL;
+ trans_free(trans);
}
-
- return 0;
}
static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
- struct vlr_subscr *vsub, struct osmo_gsup_message *gsup_msg)
+ struct vlr_subscr *vsub, const struct osmo_gsup_message *gsup_msg)
{
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct gsm_trans *trans, *transt;
int tid;
/* Allocate transaction first, for log context */
- trans = trans_alloc(net, vsub, GSM48_PDISC_NC_SS,
+ trans = trans_alloc(net, vsub, TRANS_USSD,
TRANS_ID_UNASSIGNED, gsup_msg->session_id);
if (!trans) {
@@ -355,7 +353,7 @@ static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
osmo_counter_inc(net->active_nc_ss);
/* Assign transaction ID */
- tid = trans_assign_trans_id(trans->net, trans->vsub, GSM48_PDISC_NC_SS);
+ tid = trans_assign_trans_id(trans->net, trans->vsub, TRANS_USSD);
if (tid < 0) {
LOG_TRANS(trans, LOGL_ERROR, "No free transaction ID\n");
/* TODO: inform HLR about this */
@@ -371,10 +369,11 @@ static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
ncss_session_timeout_handler, trans);
/* Attempt to find connection */
- conn = connection_for_subscr(vsub);
- if (conn) {
+ msc_a = msc_a_for_vsub(vsub, true);
+ if (msc_a) {
/* Assign connection */
- trans->conn = ran_conn_get(conn, RAN_CONN_USE_TRANS_NC_SS);
+ msc_a_get(msc_a, MSC_A_USE_NC_SS);
+ trans->msc_a = msc_a;
trans->dlci = 0x00; /* SAPI=0, not SACCH */
return trans;
}
@@ -390,13 +389,14 @@ static struct gsm_trans *establish_nc_ss_trans(struct gsm_network *net,
LOG_TRANS(trans, LOGL_ERROR, "Paging already started, "
"rejecting message...\n");
trans_free(trans);
+ /* FIXME: WTF IS THIS!? This is completely insane. Presence of a trans doesn't indicate Paging, and even
+ * if, why drop the current request??? */
return NULL;
}
/* Trigger Paging Request */
- trans->paging_request = subscr_request_conn(vsub,
- &handle_paging_event, trans, "GSM 09.11 SS/USSD",
- SGSAP_SERV_IND_CS_CALL);
+ trans->paging_request = paging_request_start(vsub, PAGING_CAUSE_SIGNALLING_HIGH_PRIO,
+ ss_paging_cb, trans, "GSM 09.11 SS/USSD");
if (!trans->paging_request) {
LOG_TRANS(trans, LOGL_ERROR, "Failed to allocate paging token\n");
trans_free(trans);
@@ -431,15 +431,21 @@ void _gsm911_nc_ss_trans_free(struct gsm_trans *trans)
osmo_counter_dec(trans->net->active_nc_ss);
}
-int gsm0911_gsup_handler(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg)
+int gsm0911_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup_msg)
{
- struct vlr_instance *vlr;
+ struct vlr_instance *vlr = data;
struct gsm_network *net;
struct gsm_trans *trans;
struct gsm48_hdr *gh;
struct msgb *ss_msg;
bool trans_end;
+ struct msc_a *msc_a;
+ struct vlr_subscr *vsub = vlr_subscr_find_by_imsi(vlr, gsup_msg->imsi, __func__);
+
+ if (!vsub) {
+ gsup_client_mux_tx_error_reply(gcm, gsup_msg, GMM_CAUSE_IMSI_UNKNOWN);
+ return -GMM_CAUSE_IMSI_UNKNOWN;
+ }
/* Associate logging messages with this subscriber */
log_set_context(LOG_CTX_VLR_SUBSCR, vsub);
@@ -542,7 +548,13 @@ int gsm0911_gsup_handler(struct vlr_subscr *vsub,
trans_end = (gh->msg_type == GSM0480_MTYPE_RELEASE_COMPLETE);
/* Sent to the MS, give ownership of ss_msg */
- msc_tx_dtap(trans->conn, ss_msg);
+ msc_a = trans->msc_a;
+ if (!msc_a) {
+ LOG_TRANS(trans, LOGL_ERROR, "Cannot send SS message, no local MSC-A role defined for subscriber\n");
+ msgb_free(ss_msg);
+ return -EINVAL;
+ }
+ msc_a_tx_dtap_to_i(msc_a, ss_msg);
/* Release transaction if required */
if (trans_end)
diff --git a/src/libmsc/gsm_subscriber.c b/src/libmsc/gsm_subscriber.c
deleted file mode 100644
index 97b58b236..000000000
--- a/src/libmsc/gsm_subscriber.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/* The concept of a subscriber for the MSC, roughly HLR/VLR functionality */
-
-/* (C) 2008 by Harald Welte <laforge@gnumonks.org>
- * (C) 2009,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 "../../bscconfig.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <time.h>
-#include <stdbool.h>
-
-#include <osmocom/core/talloc.h>
-
-#include <osmocom/vty/vty.h>
-
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#else
-#include <osmocom/msc/iu_dummy.h>
-#endif
-
-#include <osmocom/msc/gsm_subscriber.h>
-#include <osmocom/msc/gsm_04_08.h>
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/signal.h>
-#include <osmocom/msc/db.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/sgs_iface.h>
-
-#define VSUB_USE_PAGING "Paging"
-
-void subscr_paging_cancel(struct vlr_subscr *vsub, enum gsm_paging_event event)
-{
- subscr_paging_dispatch(GSM_HOOK_RR_PAGING, event, NULL, NULL, vsub);
-}
-
-int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
- struct msgb *msg, void *data, void *param)
-{
- struct subscr_request *request, *tmp;
- struct ran_conn *conn = data;
- struct vlr_subscr *vsub = param;
- struct paging_signal_data sig_data;
-
- OSMO_ASSERT(vsub);
- OSMO_ASSERT(hooknum == GSM_HOOK_RR_PAGING);
- OSMO_ASSERT(!(conn && (conn->vsub != vsub)));
- OSMO_ASSERT(!((event == GSM_PAGING_SUCCEEDED) && !conn));
-
- LOGP(DPAG, LOGL_DEBUG, "Paging %s for %s (event=%d)\n",
- event == GSM_PAGING_SUCCEEDED ? "success" : "failure",
- vlr_subscr_name(vsub), event);
-
- if (!vsub->cs.is_paging) {
- LOGP(DPAG, LOGL_ERROR,
- "Paging Response received for subscriber"
- " that is not paging.\n");
- return -EINVAL;
- }
-
- osmo_timer_del(&vsub->cs.paging_response_timer);
-
- if (event == GSM_PAGING_SUCCEEDED
- || event == GSM_PAGING_EXPIRED)
- msc_stop_paging(vsub);
-
- /* Inform parts of the system we don't know */
- sig_data.vsub = vsub;
- sig_data.conn = conn;
- sig_data.paging_result = event;
- osmo_signal_dispatch(SS_PAGING,
- event == GSM_PAGING_SUCCEEDED ?
- S_PAGING_SUCCEEDED : S_PAGING_EXPIRED,
- &sig_data);
-
- llist_for_each_entry_safe(request, tmp, &vsub->cs.requests, entry) {
- llist_del(&request->entry);
- if (request->cbfn) {
- LOGP(DPAG, LOGL_DEBUG, "Calling paging cbfn.\n");
- request->cbfn(hooknum, event, msg, data, request->param);
- } else
- LOGP(DPAG, LOGL_DEBUG, "Paging without action.\n");
- talloc_free(request);
- }
-
- /* balanced with the moment we start paging */
- vsub->cs.is_paging = false;
- vlr_subscr_put(vsub, VSUB_USE_PAGING);
- return 0;
-}
-
-/* Execute a paging on the currently active RAN. Returns the number of
- * delivered paging requests or -EINVAL in case of failure. */
-static int msc_paging_request(struct vlr_subscr *vsub, enum sgsap_service_ind serv_ind)
-{
- /* The subscriber was last seen in subscr->lac. Find out which
- * BSCs/RNCs are responsible and send them a paging request via open
- * SCCP connections (if any). */
- switch (vsub->cs.attached_via_ran) {
- case OSMO_RAT_GERAN_A:
- return a_iface_tx_paging(vsub->imsi, vsub->tmsi, vsub->cgi.lai.lac);
- case OSMO_RAT_UTRAN_IU:
- return ranap_iu_page_cs(vsub->imsi,
- vsub->tmsi == GSM_RESERVED_TMSI?
- NULL : &vsub->tmsi,
- vsub->cgi.lai.lac);
- case OSMO_RAT_EUTRAN_SGS:
- return sgs_iface_tx_paging(vsub, serv_ind);
- default:
- break;
- }
-
- LOGP(DPAG, LOGL_ERROR, "%s: Cannot page, subscriber not attached\n",
- vlr_subscr_name(vsub));
- return -EINVAL;
-}
-
-static void paging_response_timer_cb(void *data)
-{
- struct vlr_subscr *vsub = data;
- subscr_paging_cancel(vsub, GSM_PAGING_EXPIRED);
-}
-
-/*! \brief Start a paging request for vsub, call cbfn(param) when done.
- * \param vsub subscriber to page.
- * \param cbfn function to call when the conn is established.
- * \param param caller defined param to pass to cbfn().
- * \param label human readable label of the request kind used for logging.
- * \param serv_ind sgsap service indicator (in case SGs interface is used to page).
- */
-struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub,
- gsm_cbfn *cbfn, void *param,
- const char *label, enum sgsap_service_ind serv_ind)
-{
- int rc;
- struct subscr_request *request;
- struct gsm_network *net = vsub->vlr->user_ctx;
-
- /* Start paging.. we know it is async so we can do it before */
- if (!vsub->cs.is_paging) {
- LOGP(DMM, LOGL_DEBUG, "Subscriber %s not paged yet, start paging.\n",
- vlr_subscr_name(vsub));
- rc = msc_paging_request(vsub, serv_ind);
- if (rc <= 0) {
- LOGP(DMM, LOGL_ERROR, "Subscriber %s paging failed: %d\n",
- vlr_subscr_name(vsub), rc);
- return NULL;
- }
- /* reduced on the first paging callback */
- vlr_subscr_get(vsub, VSUB_USE_PAGING);
- vsub->cs.is_paging = true;
- osmo_timer_setup(&vsub->cs.paging_response_timer, paging_response_timer_cb, vsub);
- osmo_timer_schedule(&vsub->cs.paging_response_timer, net->paging_response_timer, 0);
- } else {
- LOGP(DMM, LOGL_DEBUG, "Subscriber %s already paged.\n",
- vlr_subscr_name(vsub));
- }
-
- /* TODO: Stop paging in case of memory allocation failure */
- request = talloc_zero(vsub, struct subscr_request);
- if (!request)
- return NULL;
-
- request->cbfn = cbfn;
- request->param = param;
- llist_add_tail(&request->entry, &vsub->cs.requests);
- return request;
-}
-
-void subscr_remove_request(struct subscr_request *request)
-{
- llist_del(&request->entry);
- talloc_free(request);
-}
-
-struct ran_conn *connection_for_subscr(struct vlr_subscr *vsub)
-{
- struct gsm_network *net = vsub->vlr->user_ctx;
- struct ran_conn *conn;
-
- llist_for_each_entry(conn, &net->ran_conns, entry) {
- if (conn->vsub != vsub)
- continue;
- /* Found a conn, but is it in a usable state? Must not add transactions to a conn that is in release,
- * and must not start transactions for an unauthenticated subscriber. There will obviously be only one
- * conn for this vsub, so return NULL right away. */
- if (!ran_conn_is_accepted(conn))
- return NULL;
- return conn;
- }
-
- return NULL;
-}
diff --git a/src/libmsc/gsup_client_mux.c b/src/libmsc/gsup_client_mux.c
new file mode 100644
index 000000000..7ec1712e7
--- /dev/null
+++ b/src/libmsc/gsup_client_mux.c
@@ -0,0 +1,163 @@
+/* Directing individual GSUP messages to their respective handlers. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#include <errno.h>
+
+#include <osmocom/gsupclient/gsup_client.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsup_client_mux.h>
+
+static enum osmo_gsup_message_class gsup_client_mux_classify(struct gsup_client_mux *gcm,
+ const struct osmo_gsup_message *gsup_msg)
+{
+ if (gsup_msg->message_class)
+ return gsup_msg->message_class;
+
+ LOGP(DLGSUP, LOGL_DEBUG, "No explicit GSUP Message Class, trying to guess from message type %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+
+ switch (gsup_msg->message_type) {
+ case OSMO_GSUP_MSGT_PROC_SS_REQUEST:
+ case OSMO_GSUP_MSGT_PROC_SS_RESULT:
+ case OSMO_GSUP_MSGT_PROC_SS_ERROR:
+ return OSMO_GSUP_MESSAGE_CLASS_USSD;
+
+ /* GSM 04.11 code implementing MO SMS */
+ case OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR:
+ case OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT:
+ case OSMO_GSUP_MSGT_READY_FOR_SM_ERROR:
+ case OSMO_GSUP_MSGT_READY_FOR_SM_RESULT:
+ case OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST:
+ return OSMO_GSUP_MESSAGE_CLASS_SMS;
+
+ default:
+ return OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT;
+ }
+}
+
+/* Non-static for unit tests */
+int gsup_client_mux_rx(struct osmo_gsup_client *gsup_client, struct msgb *msg)
+{
+ struct gsup_client_mux *gcm = gsup_client->data;
+ struct osmo_gsup_message gsup;
+ enum osmo_gsup_message_class message_class;
+ int rc;
+
+ rc = osmo_gsup_decode(msgb_l2(msg), msgb_l2len(msg), &gsup);
+ if (rc < 0) {
+ LOGP(DLGSUP, LOGL_ERROR, "Failed to decode GSUP message: '%s' (%d) [ %s]\n",
+ get_value_string(gsm48_gmm_cause_names, -rc), -rc, osmo_hexdump(msg->data, msg->len));
+ goto msgb_free_and_return;
+ }
+
+ if (!gsup.imsi[0]) {
+ LOGP(DLGSUP, LOGL_ERROR, "Failed to decode GSUP message: missing IMSI\n");
+ if (OSMO_GSUP_IS_MSGT_REQUEST(gsup.message_type))
+ gsup_client_mux_tx_error_reply(gcm, &gsup, GMM_CAUSE_INV_MAND_INFO);
+ rc = -GMM_CAUSE_INV_MAND_INFO;
+ goto msgb_free_and_return;
+ }
+
+ message_class = gsup_client_mux_classify(gcm, &gsup);
+
+ if (message_class <= OSMO_GSUP_MESSAGE_CLASS_UNSET || message_class >= ARRAY_SIZE(gcm->rx_cb)) {
+ LOGP(DLGSUP, LOGL_ERROR, "Failed to classify GSUP message target\n");
+ rc = -EINVAL;
+ goto msgb_free_and_return;
+ }
+
+ if (!gcm->rx_cb[message_class].func) {
+ LOGP(DLGSUP, LOGL_ERROR, "No receiver set up for GSUP Message Class %s\n", osmo_gsup_message_class_name(message_class));
+ rc = -ENOTSUP;
+ goto msgb_free_and_return;
+ }
+
+ rc = gcm->rx_cb[message_class].func(gcm, gcm->rx_cb[message_class].data, &gsup);
+
+msgb_free_and_return:
+ msgb_free(msg);
+ return rc;
+}
+
+/* Make it clear that struct gsup_client_mux should be talloc allocated, so that it can be used as talloc parent. */
+struct gsup_client_mux *gsup_client_mux_alloc(void *talloc_ctx)
+{
+ return talloc_zero(talloc_ctx, struct gsup_client_mux);
+}
+
+/* Start a GSUP client to serve this gsup_client_mux. */
+int gsup_client_mux_start(struct gsup_client_mux *gcm, const char *gsup_server_addr_str, uint16_t gsup_server_port,
+ struct ipaccess_unit *ipa_dev)
+{
+ gcm->gsup_client = osmo_gsup_client_create2(gcm, ipa_dev,
+ gsup_server_addr_str,
+ gsup_server_port,
+ &gsup_client_mux_rx, NULL);
+ if (!gcm->gsup_client)
+ return -ENOMEM;
+ gcm->gsup_client->data = gcm;
+ return 0;
+}
+
+int gsup_client_mux_tx(struct gsup_client_mux *gcm, const struct osmo_gsup_message *gsup_msg)
+{
+ struct msgb *msg;
+ int rc;
+
+ if (!gcm || !gcm->gsup_client) {
+ LOGP(DLGSUP, LOGL_ERROR, "GSUP link is down, cannot send GSUP message\n");
+ return -ENOTSUP;
+ }
+
+ msg = osmo_gsup_client_msgb_alloc();
+ rc = osmo_gsup_encode(msg, gsup_msg);
+ if (rc < 0) {
+ LOGP(DLGSUP, LOGL_ERROR, "Failed to encode GSUP message: '%s'\n", strerror(-rc));
+ return rc;
+ }
+
+ return osmo_gsup_client_send(gcm->gsup_client, msg);
+}
+
+/* Transmit GSUP error in response to original message */
+void gsup_client_mux_tx_error_reply(struct gsup_client_mux *gcm, const struct osmo_gsup_message *gsup_orig,
+ enum gsm48_gmm_cause cause)
+{
+ struct osmo_gsup_message gsup_reply;
+
+ /* No need to answer if we couldn't parse an ERROR message type, only REQUESTs need an error reply. */
+ if (!OSMO_GSUP_IS_MSGT_REQUEST(gsup_orig->message_type))
+ return;
+
+ OSMO_STRLCPY_ARRAY(gsup_reply.imsi, gsup_orig->imsi);
+
+ gsup_reply = (struct osmo_gsup_message){
+ .cause = cause,
+ .message_type = OSMO_GSUP_TO_MSGT_ERROR(gsup_orig->message_type),
+ };
+
+ if (osmo_gsup_client_enc_send(gcm->gsup_client, &gsup_reply))
+ LOGP(DLGSUP, LOGL_ERROR, "Failed to send Error reply (imsi=%s)\n",
+ osmo_quote_str(gsup_orig->imsi, -1));
+}
diff --git a/src/libmsc/iu_dummy.c b/src/libmsc/iu_dummy.c
deleted file mode 100644
index 277ec07db..000000000
--- a/src/libmsc/iu_dummy.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Trivial switch-off of external Iu dependencies,
- * allowing to run full unit tests even when built without Iu support. */
-
-/*
- * (C) 2016,2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- *
- * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
- *
- * 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 "../../bscconfig.h"
-#ifndef BUILD_IU
-
-#include <osmocom/msc/iu_dummy.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/vty/logging.h>
-#include <osmocom/core/msgb.h>
-
-struct msgb;
-struct ranap_ue_conn_ctx;
-struct RANAP_Cause;
-struct osmo_auth_vector;
-
-int ranap_iu_tx(struct msgb *msg, uint8_t sapi)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_tx() dummy called, NOT transmitting %d bytes: %s\n",
- msg->len, osmo_hexdump(msg->data, msg->len));
- return 0;
-}
-
-int ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec,
- int send_ck)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_sec_mode_cmd() dummy called, NOT transmitting Security Mode Command\n");
- return 0;
-}
-
-int ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_page_cs() dummy called, NOT paging\n");
- return 23;
-}
-
-int ranap_iu_page_ps(const char *imsi, const uint32_t *ptmsi, uint16_t lac, uint8_t rac)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_page_ps() dummy called, NOT paging\n");
- return 0;
-}
-
-struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id, uint32_t rtp_ip,
- uint16_t rtp_port,
- bool use_x213_nsap)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "ranap_new_msg_rab_assign_voice() dummy called, NOT composing RAB Assignment\n");
- return NULL;
-}
-
-int ranap_iu_rab_act(struct ranap_ue_conn_ctx *ue_ctx, struct msgb *msg)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_rab_act() dummy called, NOT activating RAB\n");
- return 0;
-}
-
-int ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *uectx, const char *imsi)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_common_id() dummy called, NOT sending CommonID\n");
- return 0;
-}
-
-int ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
-{
- LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_release() dummy called, NOT sending Release\n");
- return 0;
-}
-
-uint32_t iu_get_conn_id(const struct ranap_ue_conn_ctx *ue)
-{
- /* There is a bogus conn_id in the bogus struct ranap_ue_conn_ctx, managed for unit testing of Iu even in the
- * absence of libosmo-ranap (when built without Iu support). */
- return ue->conn_id;
-}
-
-#endif
diff --git a/src/libmsc/iucs.c b/src/libmsc/iucs.c
deleted file mode 100644
index 974ddb3f7..000000000
--- a/src/libmsc/iucs.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/* Code to manage MSC RAN connections over IuCS interface */
-
-/*
- * (C) 2016,2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- *
- * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
- *
- * 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 <inttypes.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/ranap/iu_client.h>
-#include <osmocom/msc/debug.h>
-
-#include <osmocom/msc/gsm_data.h>
-#include <osmocom/msc/gsm_subscriber.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/core/byteswap.h>
-
-#include "../../bscconfig.h"
-
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-extern struct msgb *ranap_new_msg_rab_assign_voice(uint8_t rab_id,
- uint32_t rtp_ip,
- uint16_t rtp_port,
- bool use_x213_nsap);
-#else
-#include <osmocom/msc/iu_dummy.h>
-#endif /* BUILD_IU */
-
-/* For A-interface see libbsc/bsc_api.c subscr_con_allocate() */
-static struct ran_conn *ran_conn_allocate_iu(struct gsm_network *network,
- struct ranap_ue_conn_ctx *ue,
- uint16_t lac)
-{
- struct ran_conn *conn;
-
- DEBUGP(DIUCS, "Allocating IuCS RAN conn: lac %d, conn_id %" PRIx32 "\n",
- lac, ue->conn_id);
-
- conn = ran_conn_alloc(network, OSMO_RAT_UTRAN_IU, lac);
- if (!conn)
- return NULL;
-
- conn->iu.ue_ctx = ue;
- conn->iu.ue_ctx->rab_assign_addr_enc = network->iu.rab_assign_addr_enc;
- return conn;
-}
-
-static int same_ue_conn(struct ranap_ue_conn_ctx *a, struct ranap_ue_conn_ctx *b)
-{
- if (a == b)
- return 1;
- return (a->conn_id == b->conn_id);
-}
-
-static inline void log_subscribers(struct gsm_network *network)
-{
- if (!log_check_level(DIUCS, LOGL_DEBUG))
- return;
-
- struct ran_conn *conn;
- int i = 0;
- llist_for_each_entry(conn, &network->ran_conns, entry) {
- DEBUGP(DIUCS, "%3d: %s", i, vlr_subscr_name(conn->vsub));
- switch (conn->via_ran) {
- case OSMO_RAT_UTRAN_IU:
- DEBUGPC(DIUCS, " Iu");
- if (conn->iu.ue_ctx) {
- DEBUGPC(DIUCS, " conn_id %d",
- conn->iu.ue_ctx->conn_id
- );
- }
- break;
- case OSMO_RAT_GERAN_A:
- DEBUGPC(DIUCS, " A");
- /* TODO log A-interface connection details */
- break;
- case OSMO_RAT_UNKNOWN:
- DEBUGPC(DIUCS, " ?");
- break;
- default:
- DEBUGPC(DIUCS, " invalid");
- break;
- }
- DEBUGPC(DIUCS, "\n");
- i++;
- }
- DEBUGP(DIUCS, "subscribers registered: %d\n", i);
-}
-
-/* Return an existing IuCS RAN connection record for the given
- * connection IDs, or return NULL if not found. */
-struct ran_conn *ran_conn_lookup_iu(
- struct gsm_network *network,
- struct ranap_ue_conn_ctx *ue)
-{
- struct ran_conn *conn;
-
- DEBUGP(DIUCS, "Looking for IuCS subscriber: conn_id %" PRIx32 "\n",
- ue->conn_id);
- log_subscribers(network);
-
- llist_for_each_entry(conn, &network->ran_conns, entry) {
- if (conn->via_ran != OSMO_RAT_UTRAN_IU)
- continue;
- if (!same_ue_conn(conn->iu.ue_ctx, ue))
- continue;
- DEBUGP(DIUCS, "Found IuCS subscriber for conn_id %" PRIx32 "\n",
- ue->conn_id);
- return conn;
- }
- DEBUGP(DIUCS, "No IuCS subscriber found for conn_id %" PRIx32 "\n",
- ue->conn_id);
- return NULL;
-}
-
-/* Receive MM/CC/... message from IuCS (SCCP user SAP).
- * msg->dst must reference a struct ranap_ue_conn_ctx, which identifies the peer that
- * sent the msg.
- *
- * For A-interface see libbsc/bsc_api.c gsm0408_rcvmsg(). */
-int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
- uint16_t *lac)
-{
- struct ranap_ue_conn_ctx *ue_ctx;
- struct ran_conn *conn;
-
- ue_ctx = (struct ranap_ue_conn_ctx*)msg->dst;
-
- /* TODO: are there message types that could allow us to skip this
- * search? */
- conn = ran_conn_lookup_iu(network, ue_ctx);
-
- if (conn && lac && (conn->lac != *lac)) {
- LOGP(DIUCS, LOGL_ERROR, "IuCS subscriber has changed LAC"
- " within the same connection, discarding connection:"
- " %s from LAC %d to %d\n",
- vlr_subscr_name(conn->vsub), conn->lac, *lac);
- /* Deallocate conn with previous LAC */
- ran_conn_close(conn, GSM_CAUSE_INV_MAND_INFO);
- /* At this point we could be tolerant and allocate a new
- * connection, but changing the LAC within the same connection
- * is shifty. Rather cancel everything. */
- return -1;
- }
-
- if (conn) {
- /* Make sure we don't receive RR over IuCS; otherwise all
- * messages handled by gsm0408_dispatch() are of interest (CC,
- * MM, SMS, NS_SS, maybe even MM_GPRS and SM_GPRS). */
- struct gsm48_hdr *gh = msgb_l3(msg);
- uint8_t pdisc = gh->proto_discr & 0x0f;
- OSMO_ASSERT(pdisc != GSM48_PDISC_RR);
-
- ran_conn_dtap(conn, msg);
- } else {
- /* allocate a new connection */
-
- if (!lac) {
- LOGP(DIUCS, LOGL_ERROR, "New IuCS subscriber"
- " but no LAC available. Expecting an InitialUE"
- " message containing a LAI IE."
- " Dropping connection.\n");
- return -1;
- }
-
- conn = ran_conn_allocate_iu(network, ue_ctx, *lac);
- if (!conn)
- abort();
-
- /* ownership of conn hereby goes to the MSC: */
- ran_conn_compl_l3(conn, msg, 0);
- }
-
- return 0;
-}
-
-int iu_rab_act_cs(struct gsm_trans *trans)
-{
- struct ran_conn *conn;
- struct msgb *msg;
- bool use_x213_nsap;
- uint32_t conn_id;
- struct ranap_ue_conn_ctx *uectx;
- uint8_t rab_id;
- uint32_t rtp_ip;
- uint16_t rtp_port;
-
- conn = trans->conn;
- uectx = conn->iu.ue_ctx;
- rab_id = conn->iu.rab_id;
- rtp_ip = osmo_htonl(inet_addr(conn->rtp.local_addr_ran));
- rtp_port = conn->rtp.local_port_ran;
- conn_id = uectx->conn_id;
-
- if (rtp_ip == INADDR_NONE) {
- LOGP(DIUCS, LOGL_DEBUG,
- "Assigning RAB: conn_id=%u, rab_id=%d, invalid RTP IP-Address\n",
- conn_id, rab_id);
- return -EINVAL;
- }
- if (rtp_port == 0) {
- LOGP(DIUCS, LOGL_DEBUG,
- "Assigning RAB: conn_id=%u, rab_id=%d, invalid RTP Port\n",
- conn_id, rab_id);
- return -EINVAL;
- }
-
- use_x213_nsap =
- (uectx->rab_assign_addr_enc == RANAP_NSAP_ADDR_ENC_X213);
-
- LOGP(DIUCS, LOGL_DEBUG,
- "Assigning RAB: conn_id=%u, rab_id=%d, rtp=%x:%u, use_x213_nsap=%d\n",
- conn_id, rab_id, rtp_ip, rtp_port, use_x213_nsap);
-
- msg = ranap_new_msg_rab_assign_voice(rab_id, rtp_ip, rtp_port,
- use_x213_nsap);
- msg->l2h = msg->data;
-
- if (ranap_iu_rab_act(uectx, msg))
- LOGP(DIUCS, LOGL_ERROR,
- "Failed to send RAB Assignment: conn_id=%d rab_id=%d rtp=%x:%u\n",
- conn_id, rab_id, rtp_ip, rtp_port);
- return 0;
-}
-
-uint32_t iu_get_conn_id(const struct ranap_ue_conn_ctx *ue)
-{
- return ue->conn_id;
-}
diff --git a/src/libmsc/iucs_ranap.c b/src/libmsc/iucs_ranap.c
deleted file mode 100644
index 1e4207aec..000000000
--- a/src/libmsc/iucs_ranap.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Implementation of RANAP messages to/from an MSC via an Iu-CS interface.
- * This keeps direct RANAP dependencies out of libmsc. */
-
-/* (C) 2016 by sysmocom s.m.f.c. GmbH <info@sysmocom.de>
- *
- * 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 "../../bscconfig.h"
-
-#ifdef BUILD_IU
-
-#include <osmocom/core/logging.h>
-
-#include <osmocom/ranap/ranap_ies_defs.h>
-#include <osmocom/ranap/iu_client.h>
-#include <osmocom/ranap/RANAP_IuTransportAssociation.h>
-#include <osmocom/ranap/iu_helpers.h>
-
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/gsm_data.h>
-#include <osmocom/msc/gsm_subscriber.h>
-#include <osmocom/msc/iucs.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/iucs_ranap.h>
-#include <osmocom/msc/msc_mgcp.h>
-
-#include <asn1c/asn1helpers.h>
-
-/* To continue authorization after a Security Mode Complete */
-int gsm0408_authorize(struct ran_conn *conn);
-
-static int iucs_rx_rab_assign(struct ran_conn *conn, RANAP_RAB_SetupOrModifiedItemIEs_t * setup_ies)
-{
- uint8_t rab_id;
- RANAP_RAB_SetupOrModifiedItem_t *item = &setup_ies->raB_SetupOrModifiedItem;
- RANAP_TransportLayerAddress_t *transp_layer_addr;
- RANAP_IuTransportAssociation_t *transp_assoc;
- uint16_t port = 0;
- int rc;
- char addr[INET_ADDRSTRLEN];
-
- rab_id = item->rAB_ID.buf[0];
-
- LOGP(DIUCS, LOGL_NOTICE,
- "Received RAB assignment event for %s rab_id=%hhd\n", vlr_subscr_name(conn->vsub), rab_id);
-
- if (item->iuTransportAssociation && item->transportLayerAddress) {
- transp_layer_addr = item->transportLayerAddress;
- transp_assoc = item->iuTransportAssociation;
-
- rc = ranap_transp_assoc_decode(&port, transp_assoc);
- if (rc != 0) {
- LOGP(DIUCS, LOGL_ERROR,
- "Unable to decode RTP port in RAB assignment (%s rab_id=%hhd)\n",
- vlr_subscr_name(conn->vsub), rab_id);
- return 0;
- }
-
- rc = ranap_transp_layer_addr_decode(addr, sizeof(addr), transp_layer_addr);
- if (rc != 0) {
- LOGP(DIUCS, LOGL_ERROR,
- "Unable to decode IP-Address in RAB assignment (%s rab_id=%hhd)\n",
- vlr_subscr_name(conn->vsub), rab_id);
- return 0;
- }
-
- return msc_mgcp_ass_complete(conn, port, addr);
- }
-
- LOGP(DIUCS, LOGL_ERROR,
- "RAB assignment lacks RTP connection information. (%s rab_id=%hhd)\n",
- vlr_subscr_name(conn->vsub), rab_id);
- return 0;
-}
-
-int iucs_rx_sec_mode_compl(struct ran_conn *conn,
- RANAP_SecurityModeCompleteIEs_t *ies)
-{
- OSMO_ASSERT(conn->via_ran == OSMO_RAT_UTRAN_IU);
-
- /* TODO evalute ies */
-
- ran_conn_rx_sec_mode_compl(conn);
- return 0;
-}
-
-int iucs_rx_ranap_event(struct gsm_network *network,
- struct ranap_ue_conn_ctx *ue_ctx, int type, void *data)
-{
- struct ran_conn *conn;
-
- conn = ran_conn_lookup_iu(network, ue_ctx);
-
- if (!conn) {
- LOGP(DRANAP, LOGL_ERROR, "Cannot find subscriber for IU event %u\n", type);
- return -1;
- }
-
- switch (type) {
- case RANAP_IU_EVENT_IU_RELEASE:
- case RANAP_IU_EVENT_LINK_INVALIDATED:
- LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n",
- vlr_subscr_name(conn->vsub));
- ran_conn_rx_iu_release_complete(conn);
- return 0;
-
- case RANAP_IU_EVENT_SECURITY_MODE_COMPLETE:
- LOGP(DIUCS, LOGL_INFO, "IuCS security mode complete for %s\n",
- vlr_subscr_name(conn->vsub));
- return iucs_rx_sec_mode_compl(conn,
- (RANAP_SecurityModeCompleteIEs_t*)data);
- case RANAP_IU_EVENT_RAB_ASSIGN:
- return iucs_rx_rab_assign(conn,
- (RANAP_RAB_SetupOrModifiedItemIEs_t*)data);
- default:
- LOGP(DIUCS, LOGL_NOTICE, "Unknown message received:"
- " RANAP event: %i\n", type);
- return -1;
- }
-}
-
-#endif /* BUILD_IU */
diff --git a/src/libmsc/mncc.c b/src/libmsc/mncc.c
index d2cd170a8..8c95ecb14 100644
--- a/src/libmsc/mncc.c
+++ b/src/libmsc/mncc.c
@@ -286,3 +286,103 @@ int mncc_prim_check(const struct gsm_mncc *mncc_prim, unsigned int len)
}
return 0;
}
+
+static uint8_t mncc_speech_ver_to_perm_speech(int speech_ver)
+{
+ /* The speech versions that are transmitted in the Bearer capability
+ * information element, that is transmitted on the Layer 3 (CC)
+ * use a different encoding than the permitted speech version
+ * identifier, that is signalled in the channel type element on the A
+ * interface. (See also 3GPP TS 48.008, 3.2.2.1 and 3GPP TS 24.008,
+ * 10.5.103 */
+
+ switch (speech_ver) {
+ case GSM48_BCAP_SV_FR:
+ return GSM0808_PERM_FR1;
+ case GSM48_BCAP_SV_HR:
+ return GSM0808_PERM_HR1;
+ case GSM48_BCAP_SV_EFR:
+ return GSM0808_PERM_FR2;
+ case GSM48_BCAP_SV_AMR_F:
+ return GSM0808_PERM_FR3;
+ case GSM48_BCAP_SV_AMR_H:
+ return GSM0808_PERM_HR3;
+ case GSM48_BCAP_SV_AMR_OFW:
+ return GSM0808_PERM_FR4;
+ case GSM48_BCAP_SV_AMR_OHW:
+ return GSM0808_PERM_HR4;
+ case GSM48_BCAP_SV_AMR_FW:
+ return GSM0808_PERM_FR5;
+ case GSM48_BCAP_SV_AMR_OH:
+ return GSM0808_PERM_HR6;
+ }
+
+ /* If nothing matches, tag the result as invalid */
+ LOGP(DBSSAP, LOGL_ERROR, "Invalid permitted speech version: %d\n", speech_ver);
+ return 0xFF;
+}
+
+/* Convert speech preference field */
+static uint8_t mncc_bc_radio_to_speech_pref(int radio)
+{
+ /* The Radio channel requirement field that is transmitted in the
+ * Bearer capability information element, that is transmitted on the
+ * Layer 3 (CC) uses a different encoding than the Channel rate and
+ * type field that is signalled in the channel type element on the A
+ * interface. (See also 3GPP TS 48.008, 3.2.2.1 and 3GPP TS 24.008,
+ * 10.5.102 */
+
+ switch (radio) {
+ case GSM48_BCAP_RRQ_FR_ONLY:
+ return GSM0808_SPEECH_FULL_BM;
+ case GSM48_BCAP_RRQ_DUAL_FR:
+ return GSM0808_SPEECH_FULL_PREF;
+ case GSM48_BCAP_RRQ_DUAL_HR:
+ return GSM0808_SPEECH_HALF_PREF;
+ }
+
+ LOGP(DBSSAP, LOGL_ERROR, "Invalid radio channel preference: %d; defaulting to full rate.\n", radio);
+ return GSM0808_SPEECH_FULL_BM;
+}
+
+int mncc_bearer_cap_to_channel_type(struct gsm0808_channel_type *ct, const struct gsm_mncc_bearer_cap *bc)
+{
+ unsigned int i;
+ uint8_t sv;
+ unsigned int count = 0;
+ bool only_gsm_hr = true;
+
+ ct->ch_indctr = GSM0808_CHAN_SPEECH;
+
+ for (i = 0; i < ARRAY_SIZE(bc->speech_ver); i++) {
+ if (bc->speech_ver[i] == -1)
+ break;
+ sv = mncc_speech_ver_to_perm_speech(bc->speech_ver[i]);
+ if (sv != 0xFF) {
+ /* Detect if something else than
+ * GSM HR V1 is supported */
+ if (sv == GSM0808_PERM_HR2 ||
+ sv == GSM0808_PERM_HR3 || sv == GSM0808_PERM_HR4 || sv == GSM0808_PERM_HR6)
+ only_gsm_hr = false;
+
+ ct->perm_spch[count] = sv;
+ count++;
+ }
+ }
+ ct->perm_spch_len = count;
+
+ if (only_gsm_hr)
+ /* Note: We must avoid the usage of GSM HR1 as this
+ * codec only offers very poor audio quality. If the
+ * MS only supports GSM HR1 (and full rate), and has
+ * a preference for half rate. Then we will ignore the
+ * preference and assume a preference for full rate. */
+ ct->ch_rate_type = GSM0808_SPEECH_FULL_BM;
+ else
+ ct->ch_rate_type = mncc_bc_radio_to_speech_pref(bc->radio);
+
+ if (count)
+ return 0;
+ else
+ return -EINVAL;
+}
diff --git a/src/libmsc/mncc_builtin.c b/src/libmsc/mncc_builtin.c
index fbdc5b4b5..6dd7e350a 100644
--- a/src/libmsc/mncc_builtin.c
+++ b/src/libmsc/mncc_builtin.c
@@ -79,7 +79,7 @@ static int mncc_setup_ind(struct gsm_call *call, int msg_type,
/* already have remote call */
if (call->remote_ref)
return 0;
-
+
/* transfer mode 1 would be packet mode, which was never specified */
if (setup->bearer_cap.mode != 0) {
LOGP(DMNCC, LOGL_NOTICE, "(call %x) We don't support "
@@ -254,7 +254,7 @@ int int_mncc_recv(struct gsm_network *net, struct msgb *msg)
/* Special messages */
switch(msg_type) {
}
-
+
/* find callref */
callref = data->callref;
llist_for_each_entry(callt, &call_list, entry) {
@@ -271,7 +271,7 @@ int int_mncc_recv(struct gsm_network *net, struct msgb *msg)
/* create call */
if (!(call = talloc_zero(tall_call_ctx, struct gsm_call))) {
struct gsm_mncc rel;
-
+
memset(&rel, 0, sizeof(struct gsm_mncc));
rel.callref = callref;
mncc_set_cause(&rel, GSM48_CAUSE_LOC_PRN_S_LU,
diff --git a/src/libmsc/mncc_call.c b/src/libmsc/mncc_call.c
new file mode 100644
index 000000000..a9181546f
--- /dev/null
+++ b/src/libmsc/mncc_call.c
@@ -0,0 +1,760 @@
+/* Handle an MNCC managed call (external MNCC). */
+/* At the time of writing, this is only used for inter-MSC handover: forward a voice stream to a remote MSC.
+ * Maybe it makes sense to also use it for all "normal" external call management at some point. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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/fsm.h>
+#include <osmocom/core/tdef.h>
+
+#include <osmocom/msc/mncc_call.h>
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/rtp_stream.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/vlr.h>
+
+struct osmo_fsm mncc_call_fsm;
+static bool mncc_call_tx_rtp_create(struct mncc_call *mncc_call);
+
+LLIST_HEAD(mncc_call_list);
+
+static const struct osmo_tdef_state_timeout mncc_call_fsm_timeouts[32] = {
+ /* TODO */
+};
+
+struct gsm_network *gsmnet = NULL;
+
+/* Transition to a state, using the T timer defined in msc_a_fsm_timeouts.
+ * The actual timeout value is in turn obtained from network->T_defs.
+ * Assumes local variable fi exists. */
+#define mncc_call_fsm_state_chg(MNCC, STATE) \
+ osmo_tdef_fsm_inst_state_chg((MNCC)->fi, STATE, mncc_call_fsm_timeouts, gsmnet->mncc_tdefs, 5)
+
+#define mncc_call_error(MNCC, FMT, ARGS...) do { \
+ LOG_MNCC_CALL(MNCC, LOGL_ERROR, FMT, ##ARGS); \
+ osmo_fsm_inst_term((MNCC)->fi, OSMO_FSM_TERM_REGULAR, 0); \
+ } while(0)
+
+void mncc_call_fsm_init(struct gsm_network *net)
+{
+ osmo_fsm_register(&mncc_call_fsm);
+ gsmnet = net;
+}
+
+void mncc_call_fsm_update_id(struct mncc_call *mncc_call)
+{
+ osmo_fsm_inst_update_id_f_sanitize(mncc_call->fi, '-', "%s:callref-0x%x%s%s",
+ vlr_subscr_name(mncc_call->vsub), mncc_call->callref,
+ mncc_call->remote_msisdn_present ? ":to-msisdn-" : "",
+ mncc_call->remote_msisdn_present ? mncc_call->remote_msisdn.number : "");
+}
+
+/* Invoked by the socket read callback in case the given MNCC call instance is responsible for the given callref. */
+void mncc_call_rx(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg)
+{
+ if (!mncc_call)
+ return;
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Rx %s\n", get_mncc_name(mncc_msg->msg_type));
+ osmo_fsm_inst_dispatch(mncc_call->fi, MNCC_CALL_EV_RX_MNCC_MSG, (void*)mncc_msg);
+}
+
+/* Send an MNCC message (associated with this MNCC call). */
+int mncc_call_tx(struct mncc_call *mncc_call, union mncc_msg *mncc_msg)
+{
+ struct msgb *msg;
+ unsigned char *data;
+
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "tx %s\n", get_mncc_name(mncc_msg->msg_type));
+
+ msg = msgb_alloc(sizeof(*mncc_msg), "MNCC-tx");
+ OSMO_ASSERT(msg);
+
+ data = msgb_put(msg, sizeof(*mncc_msg));
+ memcpy(data, mncc_msg, sizeof(*mncc_msg));
+
+ if (gsmnet->mncc_recv(gsmnet, msg)) {
+ mncc_call_error(mncc_call, "Failed to send MNCC message %s\n", get_mncc_name(mncc_msg->msg_type));
+ return -EIO;
+ }
+ return 0;
+}
+
+/* Send a trivial MNCC message with just a message type (associated with this MNCC call). */
+int mncc_call_tx_msgt(struct mncc_call *mncc_call, uint32_t msg_type)
+{
+ union mncc_msg mncc_msg = {
+ .signal = {
+ .msg_type = msg_type,
+ .callref = mncc_call->callref,
+ },
+ };
+ return mncc_call_tx(mncc_call, &mncc_msg);
+}
+
+/* Allocate an MNCC FSM as child of the given MSC role FSM.
+ * parent_event_call_released is mandatory and is passed as the parent_term_event.
+ * parent_event_call_setup_complete is dispatched when the MNCC FSM enters the MNCC_CALL_ST_TALKING state.
+ * parent_event_call_setup_complete is optional, pass a negative number to avoid dispatching.
+ *
+ * If non-NULL, message_cb is invoked whenever an MNCC message is received from the the MNCC socket, which is useful to
+ * forward things like DTMF to CC or to another MNCC call.
+ *
+ * After mncc_call_alloc(), call either mncc_call_outgoing_start() or mncc_call_incoming_start().
+ */
+struct mncc_call *mncc_call_alloc(struct vlr_subscr *vsub,
+ struct osmo_fsm_inst *parent,
+ int parent_event_call_setup_complete,
+ uint32_t parent_event_call_released,
+ mncc_call_message_cb_t message_cb, void *forward_cb_data)
+{
+ struct mncc_call *mncc_call;
+ struct osmo_fsm_inst *fi = osmo_fsm_inst_alloc_child(&mncc_call_fsm, parent, parent_event_call_released);
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(vsub);
+
+ mncc_call = talloc_zero(fi, struct mncc_call);
+ OSMO_ASSERT(mncc_call);
+ fi->priv = mncc_call;
+
+ *mncc_call = (struct mncc_call){
+ .fi = fi,
+ .vsub = vsub,
+ .parent_event_call_setup_complete = parent_event_call_setup_complete,
+ .message_cb = message_cb,
+ .forward_cb_data = forward_cb_data,
+ };
+
+ llist_add(&mncc_call->entry, &mncc_call_list);
+ mncc_call_fsm_update_id(mncc_call);
+
+ return mncc_call;
+}
+
+void mncc_call_reparent(struct mncc_call *mncc_call,
+ struct osmo_fsm_inst *new_parent,
+ int parent_event_call_setup_complete,
+ uint32_t parent_event_call_released,
+ mncc_call_message_cb_t message_cb, void *forward_cb_data)
+{
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Reparenting from parent %s to parent %s\n",
+ mncc_call->fi->proc.parent->name, new_parent->name);
+ osmo_fsm_inst_change_parent(mncc_call->fi, new_parent, parent_event_call_released);
+ talloc_steal(new_parent, mncc_call->fi);
+ mncc_call->parent_event_call_setup_complete = parent_event_call_setup_complete;
+ mncc_call->message_cb = message_cb;
+ mncc_call->forward_cb_data = forward_cb_data;
+}
+
+/* Associate an rtp_stream with this MNCC call instance (optional).
+ * Can be called directly after mncc_call_alloc(). If an rtp_stream is set, upon receiving the MNCC_RTP_CONNECT containing
+ * the PBX's RTP IP and port, pass the IP:port information to rtp_stream_set_remote_addr() and rtp_stream_commit() to
+ * update the MGW connection. If no rtp_stream is associated, the caller is responsible to manually extract the RTP
+ * IP:port from the MNCC_RTP_CONNECT message forwarded to mncc_call_message_cb_t (see mncc_call_alloc()).
+ * When an rtp_stream is set, call rtp_stream_release() when the MNCC call ends; call mncc_call_detach_rtp_stream() before
+ * the MNCC call releases if that is not desired.
+ */
+int mncc_call_set_rtp_stream(struct mncc_call *mncc_call, struct rtp_stream *rtps)
+{
+ if (mncc_call->rtps && mncc_call->rtps != rtps) {
+ LOG_MNCC_CALL(mncc_call, LOGL_ERROR,
+ "Cannot associate with RTP stream %s, already associated with %s\n",
+ rtps ? rtps->fi->name : "NULL", mncc_call->rtps->fi->name);
+ return -ENOSPC;
+ }
+
+ mncc_call->rtps = rtps;
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Associated with RTP stream %s\n", mncc_call->rtps->fi->name);
+ return 0;
+}
+
+/* Disassociate the rtp_stream from this MNCC call instance, and clear the remote RTP IP:port info.
+ * When the MNCC FSM ends for any reason, it will release the RTP stream (which usually triggers complete tear down of
+ * the call_leg and CC transaction). If the RTP stream should still remain in use, e.g. during Subseqent inter-MSC
+ * Handover where this MNCC was a forwarding to a remote MSC that is no longer needed, this function must be called
+ * before the MNCC FSM instance terminates. Call this *before* setting a new remote RTP address on the rtp_stream, since
+ * this clears the rtp_stream->remote ip:port information. */
+void mncc_call_detach_rtp_stream(struct mncc_call *mncc_call)
+{
+ struct rtp_stream *rtps = mncc_call->rtps;
+ struct osmo_sockaddr_str clear;
+ if (!rtps)
+ return;
+ mncc_call->rtps = NULL;
+ rtp_stream_set_remote_addr(rtps, &clear);
+}
+
+static void mncc_call_tx_setup_ind(struct mncc_call *mncc_call)
+{
+ struct gsm_mncc mncc_msg = mncc_call->outgoing_req;
+ mncc_msg.msg_type = MNCC_SETUP_IND;
+ mncc_msg.callref = mncc_call->callref;
+
+ OSMO_STRLCPY_ARRAY(mncc_msg.imsi, mncc_call->vsub->imsi);
+
+ if (!(mncc_call->outgoing_req.fields & MNCC_F_CALLING)) {
+ /* No explicit calling number set, use the local subscriber */
+ mncc_msg.fields |= MNCC_F_CALLING;
+ OSMO_STRLCPY_ARRAY(mncc_msg.calling.number, mncc_call->vsub->msisdn);
+
+ }
+ mncc_call->local_msisdn_present = true;
+ mncc_call->local_msisdn = mncc_msg.calling;
+
+ rate_ctr_inc(&gsmnet->msc_ctrs->ctr[MSC_CTR_CALL_MO_SETUP]);
+
+ mncc_call_tx(mncc_call, (union mncc_msg*)&mncc_msg);
+}
+
+static void mncc_call_rx_setup_req(struct mncc_call *mncc_call, const struct gsm_mncc *incoming_req)
+{
+ mncc_call->callref = incoming_req->callref;
+
+ if (incoming_req->fields & MNCC_F_CALLED) {
+ mncc_call->local_msisdn_present = true;
+ mncc_call->local_msisdn = incoming_req->called;
+ }
+
+ if (incoming_req->fields & MNCC_F_CALLING) {
+ mncc_call->remote_msisdn_present = true;
+ mncc_call->remote_msisdn = incoming_req->calling;
+ }
+
+ mncc_call_fsm_update_id(mncc_call);
+}
+
+/* Remote PBX asks for RTP_CREATE. This merely asks us to create an RTP stream, and does not actually contain any useful
+ * information like the remote RTP IP:port (these follow in the RTP_CONNECT from the SIP side) */
+static bool mncc_call_rx_rtp_create(struct mncc_call *mncc_call)
+{
+ mncc_call->received_rtp_create = true;
+
+ if (!mncc_call->rtps) {
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Got RTP_CREATE, but no RTP stream associated\n");
+ return true;
+ }
+
+ if (!osmo_sockaddr_str_is_set(&mncc_call->rtps->local)) {
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Got RTP_CREATE, but RTP stream has no local address\n");
+ return true;
+ }
+
+ if (!mncc_call->rtps->codec_known) {
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Got RTP_CREATE, but RTP stream has no codec set\n");
+ return true;
+ }
+
+ LOG_MNCC_CALL(mncc_call, LOGL_DEBUG, "Got RTP_CREATE, responding with " OSMO_SOCKADDR_STR_FMT " %s\n",
+ OSMO_SOCKADDR_STR_FMT_ARGS(&mncc_call->rtps->local),
+ osmo_mgcpc_codec_name(mncc_call->rtps->codec));
+ /* Already know what RTP IP:port to tell the MNCC. Send it. */
+ return mncc_call_tx_rtp_create(mncc_call);
+}
+
+/* Convert enum mgcp_codecs to an gsm_mncc_rtp->payload_msg_type value. */
+uint32_t mgcp_codec_to_mncc_payload_msg_type(enum mgcp_codecs codec)
+{
+ switch (codec) {
+ default:
+ /* disclaimer: i have no idea what i'm doing. */
+ case CODEC_GSM_8000_1:
+ return GSM_TCHF_FRAME;
+ case CODEC_GSMEFR_8000_1:
+ return GSM_TCHF_FRAME_EFR;
+ case CODEC_GSMHR_8000_1:
+ return GSM_TCHH_FRAME;
+ case CODEC_AMR_8000_1:
+ case CODEC_AMRWB_16000_1:
+ //return GSM_TCHF_FRAME;
+ return GSM_TCH_FRAME_AMR;
+ }
+}
+
+static bool mncc_call_tx_rtp_create(struct mncc_call *mncc_call)
+{
+ if (!mncc_call->rtps || !osmo_sockaddr_str_is_set(&mncc_call->rtps->local)) {
+ mncc_call_error(mncc_call, "Cannot send RTP_CREATE, no local RTP address set up\n");
+ return false;
+ }
+ struct osmo_sockaddr_str *rtp_local = &mncc_call->rtps->local;
+ union mncc_msg mncc_msg = {
+ .rtp = {
+ .msg_type = MNCC_RTP_CREATE,
+ .callref = mncc_call->callref,
+ .port = rtp_local->port,
+ },
+ };
+
+ if (osmo_sockaddr_str_to_32n(rtp_local, &mncc_msg.rtp.ip)) {
+ mncc_call_error(mncc_call, "Failed to compose IP address " OSMO_SOCKADDR_STR_FMT "\n",
+ OSMO_SOCKADDR_STR_FMT_ARGS(rtp_local));
+ return false;
+ }
+
+ if (mncc_call->rtps->codec_known) {
+ mncc_msg.rtp.payload_type = 0; /* ??? */
+ mncc_msg.rtp.payload_msg_type = mgcp_codec_to_mncc_payload_msg_type(mncc_call->rtps->codec);
+ }
+
+ if (mncc_call_tx(mncc_call, &mncc_msg))
+ return false;
+ return true;
+}
+
+static bool mncc_call_rx_rtp_connect(struct mncc_call *mncc_call, const struct gsm_mncc_rtp *mncc_msg)
+{
+ struct osmo_sockaddr_str rtp;
+
+ if (!mncc_call->rtps) {
+ /* The user has not associated an RTP stream, hence we're not supposed to take any action here. */
+ return true;
+ }
+
+ if (osmo_sockaddr_str_from_32n(&rtp, mncc_msg->ip, mncc_msg->port)) {
+ mncc_call_error(mncc_call, "Cannot RTP-CONNECT, invalid RTP IP:port in incoming MNCC message\n");
+ return false;
+ }
+
+ rtp_stream_set_remote_addr(mncc_call->rtps, &rtp);
+ if (rtp_stream_commit(mncc_call->rtps)) {
+ mncc_call_error(mncc_call, "RTP-CONNECT, failed, RTP stream is not properly set up: %s\n",
+ mncc_call->rtps->fi->id);
+ return false;
+ }
+ return true;
+}
+
+/* Return true if the FSM instance still exists after this call, false if it was terminated. */
+static bool mncc_call_rx_release_msg(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg)
+{
+ switch (mncc_msg->msg_type) {
+ case MNCC_DISC_REQ:
+ /* Remote call leg ended the call, MNCC tells us to DISC. We ack with a REL. */
+ mncc_call_tx_msgt(mncc_call, MNCC_REL_IND);
+ osmo_fsm_inst_term(mncc_call->fi, OSMO_FSM_TERM_REGULAR, 0);
+ return false;
+
+ case MNCC_REL_REQ:
+ /* MNCC acks with a REL to a previous DISC IND we have (probably) sent.
+ * We ack with a REL CNF. */
+ mncc_call_tx_msgt(mncc_call, MNCC_REL_CNF);
+ osmo_fsm_inst_term(mncc_call->fi, OSMO_FSM_TERM_REGULAR, 0);
+ return false;
+
+ default:
+ return true;
+ }
+}
+
+/* Return true if the FSM instance still exists after this call, false if it was terminated. */
+static bool mncc_call_rx_common_msg(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg)
+{
+ switch (mncc_msg->msg_type) {
+ case MNCC_RTP_CREATE:
+ mncc_call_rx_rtp_create(mncc_call);
+ return true;
+
+ case MNCC_RTP_CONNECT:
+ mncc_call_rx_rtp_connect(mncc_call, &mncc_msg->rtp);
+ return true;
+
+ default:
+ return mncc_call_rx_release_msg(mncc_call, mncc_msg);
+ }
+}
+
+static void mncc_call_forward(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg)
+{
+ if (!mncc_call || !mncc_call->message_cb)
+ return;
+ mncc_call->message_cb(mncc_call, mncc_msg, mncc_call->forward_cb_data);
+}
+
+/* Initiate an outgoing call.
+ * The outgoing_req represents the details for the MNCC_SETUP_IND message sent to initiate the outgoing call. Pass at
+ * least a called number (set outgoing_req->fields |= MNCC_F_CALLED and populate outgoing_req->called). All other items
+ * are optional and can be included if required. The message type, callref and IMSI from this struct are ignored,
+ * instead they are determined internally upon sending the MNCC message. If no calling number is set in the message
+ * struct, it will be set from mncc_call->vsub->msisdn.
+ */
+int mncc_call_outgoing_start(struct mncc_call *mncc_call, const struct gsm_mncc *outgoing_req)
+{
+ if (!mncc_call)
+ return -EINVAL;
+ /* By dispatching an event instead of taking direct action, make sure that the FSM permits starting an outgoing
+ * call. */
+ return osmo_fsm_inst_dispatch(mncc_call->fi, MNCC_CALL_EV_OUTGOING_START, (void*)outgoing_req);
+}
+
+/* Handle an incoming call.
+ * When the MNCC recv callback (not included in this mncc_call_fsm API) detects an incoming call (MNCC_SETUP_REQ), take over
+ * handling of the incoming call by the given mncc_call instance.
+ * In incoming_req->setup_req_msg, pass the struct gsm_mncc message containing the received MNCC_SETUP_REQ.
+ * mncc_call_incoming_start() will immediately respond with a MNCC_CALL_CONF_IND; in incoming_req->bearer_cap, pass the
+ * bearer capabilities that should be included in this MNCC_CALL_CONF_IND message; in incoming_req->cccap, pass the
+ * CCCAP to be sent, if any.
+ */
+int mncc_call_incoming_start(struct mncc_call *mncc_call, const struct mncc_call_incoming_req *incoming_req)
+{
+ if (!mncc_call)
+ return -EINVAL;
+ /* By dispatching an event instead of taking direct action, make sure that the FSM permits starting an incoming
+ * call. */
+ return osmo_fsm_inst_dispatch(mncc_call->fi, MNCC_CALL_EV_INCOMING_START, (void*)incoming_req);
+}
+
+static void mncc_call_incoming_tx_call_conf_ind(struct mncc_call *mncc_call, const struct gsm_mncc_bearer_cap *bearer_cap)
+{
+ if (mncc_call->fi->state != MNCC_CALL_ST_INCOMING_WAIT_COMPLETE) {
+ LOG_MNCC_CALL(mncc_call, LOGL_ERROR, "%s not allowed in this state\n", __func__);
+ return;
+ }
+
+ union mncc_msg mncc_msg = {
+ .signal = {
+ .msg_type = MNCC_CALL_CONF_IND,
+ .callref = mncc_call->callref,
+ },
+ };
+
+ if (bearer_cap) {
+ mncc_msg.signal.fields |= MNCC_F_BEARER_CAP;
+ mncc_msg.signal.bearer_cap = *bearer_cap;
+ }
+
+ mncc_call_tx(mncc_call, &mncc_msg);
+}
+
+/* Send an MNCC_SETUP_CNF message. Typically after the local side is ready to receive the call and RTP (e.g. for a GSM
+ * CC call, the lchan and RTP should be ready and the CC call should have been confirmed and alerting).
+ * For inter-MSC call forwarding, this can happen immediately upon the MNCC_RTP_CREATE.
+ */
+int mncc_call_incoming_tx_setup_cnf(struct mncc_call *mncc_call, const struct gsm_mncc_number *connected_number)
+{
+ if (mncc_call->fi->state != MNCC_CALL_ST_INCOMING_WAIT_COMPLETE) {
+ LOG_MNCC_CALL(mncc_call, LOGL_ERROR, "%s not allowed in this state\n", __func__);
+ return -EINVAL;
+ }
+
+ union mncc_msg mncc_msg = {
+ .signal = {
+ .msg_type = MNCC_SETUP_CNF,
+ .callref = mncc_call->callref,
+ },
+ };
+
+ if (connected_number) {
+ mncc_msg.signal.fields |= MNCC_F_CONNECTED;
+ mncc_msg.signal.connected = *connected_number;
+ }
+
+ return mncc_call_tx(mncc_call, &mncc_msg);
+}
+
+static void mncc_call_fsm_not_started(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct mncc_call *mncc_call = fi->priv;
+ const struct gsm_mncc *outgoing_req;
+ const struct mncc_call_incoming_req *incoming_req;
+
+ switch (event) {
+ case MNCC_CALL_EV_OUTGOING_START:
+ outgoing_req = data;
+ mncc_call->outgoing_req = *outgoing_req;
+ mncc_call->callref = msc_cc_next_outgoing_callref();
+ mncc_call_fsm_state_chg(mncc_call, MNCC_CALL_ST_OUTGOING_WAIT_PROCEEDING);
+ mncc_call_tx_setup_ind(mncc_call);
+ return;
+
+ case MNCC_CALL_EV_INCOMING_START:
+ incoming_req = data;
+ mncc_call_rx_setup_req(mncc_call, &incoming_req->setup_req_msg);
+ mncc_call_fsm_state_chg(mncc_call, MNCC_CALL_ST_INCOMING_WAIT_COMPLETE);
+ mncc_call_incoming_tx_call_conf_ind(mncc_call, incoming_req->bearer_cap_present ? &incoming_req->bearer_cap : NULL);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void mncc_call_fsm_outgoing_wait_proceeding(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct mncc_call *mncc_call = fi->priv;
+ const union mncc_msg *mncc_msg;
+
+ switch (event) {
+ case MNCC_CALL_EV_RX_MNCC_MSG:
+ mncc_msg = data;
+ if (!mncc_call_rx_common_msg(mncc_call, mncc_msg))
+ return;
+
+ switch (mncc_msg->msg_type) {
+ case MNCC_CALL_PROC_REQ:
+ mncc_call_fsm_state_chg(mncc_call, MNCC_CALL_ST_OUTGOING_WAIT_COMPLETE);
+ break;
+ default:
+ break;
+ }
+
+ mncc_call_forward(mncc_call, mncc_msg);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ };
+}
+
+static void mncc_call_fsm_outgoing_wait_complete(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct mncc_call *mncc_call = fi->priv;
+ const union mncc_msg *mncc_msg;
+
+ switch (event) {
+ case MNCC_CALL_EV_RX_MNCC_MSG:
+ mncc_msg = data;
+ if (!mncc_call_rx_common_msg(mncc_call, mncc_msg))
+ return;
+
+ switch (mncc_msg->msg_type) {
+ case MNCC_SETUP_RSP:
+ mncc_call_fsm_state_chg(mncc_call, MNCC_CALL_ST_TALKING);
+ mncc_call_tx_msgt(mncc_call, MNCC_SETUP_COMPL_IND);
+ break;
+ default:
+ break;
+ }
+
+ mncc_call_forward(mncc_call, mncc_msg);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ };
+}
+
+static void mncc_call_fsm_incoming_wait_complete(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct mncc_call *mncc_call = fi->priv;
+ const union mncc_msg *mncc_msg;
+
+ switch (event) {
+ case MNCC_CALL_EV_RX_MNCC_MSG:
+ mncc_msg = data;
+ if (!mncc_call_rx_common_msg(mncc_call, mncc_msg))
+ return;
+
+ switch (mncc_msg->msg_type) {
+ case MNCC_SETUP_COMPL_REQ:
+ mncc_call_fsm_state_chg(mncc_call, MNCC_CALL_ST_TALKING);
+ break;
+ default:
+ break;
+ }
+
+ mncc_call_forward(mncc_call, mncc_msg);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ };
+}
+
+static void mncc_call_fsm_talking(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct mncc_call *mncc_call = fi->priv;
+ const union mncc_msg *mncc_msg;
+
+ switch (event) {
+ case MNCC_CALL_EV_RX_MNCC_MSG:
+ mncc_msg = data;
+ if (!mncc_call_rx_common_msg(mncc_call, mncc_msg))
+ return;
+ mncc_call_forward(mncc_call, mncc_msg);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ };
+}
+
+static void mncc_call_fsm_wait_release_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct mncc_call *mncc_call = fi->priv;
+ const union mncc_msg *mncc_msg;
+
+ switch (event) {
+ case MNCC_CALL_EV_RX_MNCC_MSG:
+ mncc_msg = data;
+ if (!mncc_call_rx_release_msg(mncc_call, mncc_msg))
+ return;
+ mncc_call_forward(mncc_call, mncc_msg);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ };
+}
+
+static void mncc_call_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct mncc_call *mncc_call = fi->priv;
+
+ switch (fi->state) {
+ case MNCC_CALL_ST_NOT_STARTED:
+ case MNCC_CALL_ST_WAIT_RELEASE_ACK:
+ break;
+ default:
+ /* Make sure we did indicate some sort of release */
+ mncc_call_tx_msgt(mncc_call, MNCC_REL_IND);
+ break;
+ }
+
+ /* Releasing the RTP stream should trigger completely tearing down the call leg as well as the CC transaction.
+ * In case of an inter-MSC handover where this MNCC connection is replaced by another MNCC / another BSC
+ * connection, the caller needs to detach the RTP stream from this FSM before terminating it. */
+ if (mncc_call->rtps) {
+ rtp_stream_release(mncc_call->rtps);
+ mncc_call->rtps = NULL;
+ }
+
+ llist_del(&mncc_call->entry);
+}
+
+static int mncc_call_fsm_timer_cb(struct osmo_fsm_inst *fi)
+{
+ return 1;
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state mncc_call_fsm_states[] = {
+ [MNCC_CALL_ST_NOT_STARTED] = {
+ .name = "NOT_STARTED",
+ .in_event_mask = 0
+ | S(MNCC_CALL_EV_OUTGOING_START)
+ | S(MNCC_CALL_EV_INCOMING_START)
+ ,
+ .out_state_mask = 0
+ | S(MNCC_CALL_ST_OUTGOING_WAIT_PROCEEDING)
+ | S(MNCC_CALL_ST_INCOMING_WAIT_COMPLETE)
+ ,
+ .action = mncc_call_fsm_not_started,
+ },
+ [MNCC_CALL_ST_OUTGOING_WAIT_PROCEEDING] = {
+ .name = "OUTGOING_WAIT_PROCEEDING",
+ .in_event_mask = 0
+ | S(MNCC_CALL_EV_RX_MNCC_MSG)
+ ,
+ .out_state_mask = 0
+ | S(MNCC_CALL_ST_OUTGOING_WAIT_COMPLETE)
+ | S(MNCC_CALL_ST_WAIT_RELEASE_ACK)
+ ,
+ .action = mncc_call_fsm_outgoing_wait_proceeding,
+ },
+ [MNCC_CALL_ST_OUTGOING_WAIT_COMPLETE] = {
+ .name = "OUTGOING_WAIT_COMPLETE",
+ .in_event_mask = 0
+ | S(MNCC_CALL_EV_RX_MNCC_MSG)
+ ,
+ .out_state_mask = 0
+ | S(MNCC_CALL_ST_TALKING)
+ | S(MNCC_CALL_ST_WAIT_RELEASE_ACK)
+ ,
+ .action = mncc_call_fsm_outgoing_wait_complete,
+ },
+ [MNCC_CALL_ST_INCOMING_WAIT_COMPLETE] = {
+ .name = "INCOMING_WAIT_COMPLETE",
+ .in_event_mask = 0
+ | S(MNCC_CALL_EV_RX_MNCC_MSG)
+ ,
+ .out_state_mask = 0
+ | S(MNCC_CALL_ST_TALKING)
+ | S(MNCC_CALL_ST_WAIT_RELEASE_ACK)
+ ,
+ .action = mncc_call_fsm_incoming_wait_complete,
+ },
+ [MNCC_CALL_ST_TALKING] = {
+ .name = "TALKING",
+ .in_event_mask = 0
+ | S(MNCC_CALL_EV_RX_MNCC_MSG)
+ ,
+ .out_state_mask = 0
+ | S(MNCC_CALL_ST_WAIT_RELEASE_ACK)
+ ,
+ .action = mncc_call_fsm_talking,
+ },
+ [MNCC_CALL_ST_WAIT_RELEASE_ACK] = {
+ .name = "WAIT_RELEASE_ACK",
+ .in_event_mask = 0
+ | S(MNCC_CALL_EV_RX_MNCC_MSG)
+ ,
+ .action = mncc_call_fsm_wait_release_ack,
+ },
+};
+
+static const struct value_string mncc_call_fsm_event_names[] = {
+ OSMO_VALUE_STRING(MNCC_CALL_EV_RX_MNCC_MSG),
+
+ OSMO_VALUE_STRING(MNCC_CALL_EV_OUTGOING_START),
+ OSMO_VALUE_STRING(MNCC_CALL_EV_OUTGOING_ALERTING),
+ OSMO_VALUE_STRING(MNCC_CALL_EV_OUTGOING_SETUP_COMPLETE),
+
+ OSMO_VALUE_STRING(MNCC_CALL_EV_INCOMING_START),
+ OSMO_VALUE_STRING(MNCC_CALL_EV_INCOMING_SETUP),
+ OSMO_VALUE_STRING(MNCC_CALL_EV_INCOMING_SETUP_COMPLETE),
+
+ OSMO_VALUE_STRING(MNCC_CALL_EV_CN_RELEASE),
+ OSMO_VALUE_STRING(MNCC_CALL_EV_MS_RELEASE),
+ {}
+};
+
+struct osmo_fsm mncc_call_fsm = {
+ .name = "mncc_call",
+ .states = mncc_call_fsm_states,
+ .num_states = ARRAY_SIZE(mncc_call_fsm_states),
+ .log_subsys = DMNCC,
+ .event_names = mncc_call_fsm_event_names,
+ .timer_cb = mncc_call_fsm_timer_cb,
+ .cleanup = mncc_call_fsm_cleanup,
+};
+
+struct mncc_call *mncc_call_find_by_callref(uint32_t callref)
+{
+ struct mncc_call *mncc_call;
+ llist_for_each_entry(mncc_call, &mncc_call_list, entry) {
+ if (mncc_call->callref == callref)
+ return mncc_call;
+ }
+ return NULL;
+}
+
+void mncc_call_release(struct mncc_call *mncc_call)
+{
+ if (!mncc_call)
+ return;
+ mncc_call_tx_msgt(mncc_call, MNCC_DISC_IND);
+ mncc_call_fsm_state_chg(mncc_call, MNCC_CALL_ST_WAIT_RELEASE_ACK);
+}
diff --git a/src/libmsc/mncc_sock.c b/src/libmsc/mncc_sock.c
index 57b4bd883..b2739e857 100644
--- a/src/libmsc/mncc_sock.c
+++ b/src/libmsc/mncc_sock.c
@@ -56,15 +56,6 @@ int mncc_sock_from_cc(struct gsm_network *net, struct msgb *msg)
if (net->mncc_state->conn_bfd.fd < 0) {
LOGP(DMNCC, LOGL_ERROR, "mncc_sock receives %s for external CC app "
"but socket is gone\n", get_mncc_name(msg_type));
- if (!mncc_is_data_frame(msg_type)) {
- /* release the request */
- struct gsm_mncc mncc_out;
- memset(&mncc_out, 0, sizeof(mncc_out));
- mncc_out.callref = mncc_in->callref;
- mncc_set_cause(&mncc_out, GSM48_CAUSE_LOC_PRN_S_LU,
- GSM48_CC_CAUSE_TEMP_FAILURE);
- mncc_tx_to_cc(net, MNCC_REL_REQ, &mncc_out);
- }
/* free the original message */
msgb_free(msg);
return -1;
@@ -92,7 +83,7 @@ static void mncc_sock_close(struct mncc_sock_state *state)
state->listen_bfd.when |= BSC_FD_READ;
/* release all exisitng calls */
- gsm0408_clear_all_trans(state->net, GSM48_PDISC_CC);
+ gsm0408_clear_all_trans(state->net, TRANS_CC);
/* flush the queue */
while (!llist_empty(&state->net->upqueue)) {
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
new file mode 100644
index 000000000..675f93202
--- /dev/null
+++ b/src/libmsc/msc_a.c
@@ -0,0 +1,1651 @@
+/* Code to manage a subscriber's MSC-A role */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/utils.h>
+#include <osmocom/core/tdef.h>
+#include <osmocom/core/rate_ctr.h>
+#include <osmocom/core/signal.h>
+
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/paging.h>
+#include <osmocom/msc/signal.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/transaction.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/ran_msg_a.h>
+#include <osmocom/msc/ran_msg_iu.h>
+#include <osmocom/msc/sgs_iface.h>
+#include <osmocom/msc/gsm_04_08.h>
+#include <osmocom/msc/gsm_09_11.h>
+#include <osmocom/msc/gsm_04_14.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
+#include <osmocom/msc/msc_ho.h>
+
+#define MSC_A_USE_WAIT_CLEAR_COMPLETE "wait-Clear-Complete"
+
+static struct osmo_fsm msc_a_fsm;
+
+static const struct osmo_tdef_state_timeout msc_a_fsm_timeouts[32] = {
+ [MSC_A_ST_VALIDATE_L3] = { .T = -1 },
+ [MSC_A_ST_AUTH_CIPH] = { .keep_timer = true },
+ [MSC_A_ST_WAIT_CLASSMARK_UPDATE] = { .keep_timer = true },
+ [MSC_A_ST_AUTHENTICATED] = { .keep_timer = true },
+ [MSC_A_ST_RELEASING] = { .T = -2 },
+ [MSC_A_ST_RELEASED] = { .T = -2 },
+};
+
+/* Transition to a state, using the T timer defined in msc_a_fsm_timeouts.
+ * The actual timeout value is in turn obtained from network->T_defs.
+ * Assumes local variable fi exists. */
+#define msc_a_state_chg(msc_a, state) \
+ osmo_tdef_fsm_inst_state_chg((msc_a)->c.fi, state, msc_a_fsm_timeouts, (msc_a)->c.ran->tdefs, 5)
+
+struct gsm_network *msc_a_net(const struct msc_a *msc_a)
+{
+ return msub_net(msc_a->c.msub);
+}
+
+struct vlr_subscr *msc_a_vsub(const struct msc_a *msc_a)
+{
+ return msub_vsub(msc_a->c.msub);
+}
+
+struct msc_i *msc_a_msc_i(const struct msc_a *msc_a)
+{
+ return msub_msc_i(msc_a->c.msub);
+}
+
+struct msc_t *msc_a_msc_t(const struct msc_a *msc_a)
+{
+ return msub_msc_t(msc_a->c.msub);
+}
+
+struct msc_a *msc_a_fi_priv(struct osmo_fsm_inst *fi)
+{
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(fi->fsm == &msc_a_fsm);
+ OSMO_ASSERT(fi->priv);
+ return fi->priv;
+}
+
+static void update_counters(struct osmo_fsm_inst *fi, bool conn_accepted)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct gsm_network *net = msc_a_net(msc_a);
+ switch (msc_a->complete_layer3_type) {
+ case COMPLETE_LAYER3_LU:
+ rate_ctr_inc(&net->msc_ctrs->ctr[
+ conn_accepted ? MSC_CTR_LOC_UPDATE_COMPLETED
+ : MSC_CTR_LOC_UPDATE_FAILED]);
+ break;
+ case COMPLETE_LAYER3_CM_SERVICE_REQ:
+ rate_ctr_inc(&net->msc_ctrs->ctr[
+ conn_accepted ? MSC_CTR_CM_SERVICE_REQUEST_ACCEPTED
+ : MSC_CTR_CM_SERVICE_REQUEST_REJECTED]);
+ break;
+ case COMPLETE_LAYER3_PAGING_RESP:
+ rate_ctr_inc(&net->msc_ctrs->ctr[
+ conn_accepted ? MSC_CTR_PAGING_RESP_ACCEPTED
+ : MSC_CTR_PAGING_RESP_REJECTED]);
+ break;
+ default:
+ break;
+ }
+}
+
+static void evaluate_acceptance_outcome(struct osmo_fsm_inst *fi, bool conn_accepted)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+
+ update_counters(fi, conn_accepted);
+
+ /* Trigger transactions that we paged for */
+ if (msc_a->complete_layer3_type == COMPLETE_LAYER3_PAGING_RESP) {
+ if (conn_accepted)
+ paging_response(msc_a);
+ else
+ paging_expired(vsub);
+ }
+
+ if (conn_accepted)
+ osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_ATTACHED, msc_a_vsub(msc_a));
+
+ if (msc_a->complete_layer3_type == COMPLETE_LAYER3_LU)
+ msc_a_put(msc_a, MSC_A_USE_LOCATION_UPDATING);
+}
+
+bool msc_a_is_accepted(const struct msc_a *msc_a)
+{
+ if (!msc_a || !msc_a->c.fi)
+ return false;
+ return msc_a->c.fi->state == MSC_A_ST_AUTHENTICATED
+ || msc_a->c.fi->state == MSC_A_ST_COMMUNICATING;
+}
+
+bool msc_a_in_release(struct msc_a *msc_a)
+{
+ if (!msc_a)
+ return true;
+ if (msc_a->c.fi->state == MSC_A_ST_RELEASING)
+ return true;
+ if (msc_a->c.fi->state == MSC_A_ST_RELEASED)
+ return true;
+ return false;
+}
+
+static int msc_a_ran_dec(struct msc_a *msc_a, const struct an_apdu *an_apdu, enum msc_role from_role)
+{
+ int rc;
+ struct msc_a_ran_dec_data d = {
+ .from_role = from_role,
+ .an_apdu = an_apdu,
+ };
+ msc_a_get(msc_a, __func__);
+ rc = msc_role_ran_decode(msc_a->c.fi, an_apdu, msc_a_ran_decode_cb, &d);
+ msc_a_put(msc_a, __func__);
+ return rc;
+};
+
+static void msc_a_fsm_validate_l3(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+ const struct an_apdu *an_apdu;
+
+ switch (event) {
+ case MSC_A_EV_FROM_I_COMPLETE_LAYER_3:
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ an_apdu = data;
+ msc_a_ran_dec(msc_a, an_apdu, MSC_ROLE_I);
+ return;
+
+ case MSC_A_EV_COMPLETE_LAYER_3_OK:
+ msc_a_state_chg(msc_a, MSC_A_ST_AUTH_CIPH);
+ return;
+
+ case MSC_A_EV_MO_CLOSE:
+ case MSC_A_EV_CN_CLOSE:
+ evaluate_acceptance_outcome(fi, false);
+ /* fall through */
+ case MSC_A_EV_UNUSED:
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+/* Figure out whether to first send a Classmark Request to the MS to figure out algorithm support. */
+static bool msc_a_need_classmark_for_ciphering(struct msc_a *msc_a)
+{
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ int i = 0;
+ bool request_classmark = false;
+
+ /* Only on GERAN-A do we ever need Classmark Information for Ciphering. */
+ if (msc_a->c.ran->type != OSMO_RAT_GERAN_A)
+ return false;
+
+ for (i = 0; i < 8; i++) {
+ int supported;
+
+ /* A5/n permitted by osmo-msc.cfg? */
+ if (!(net->a5_encryption_mask & (1 << i)))
+ continue;
+
+ /* A5/n supported by MS? */
+ supported = osmo_gsm48_classmark_supports_a5(&vsub->classmark, i);
+ if (supported < 0) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "For A5/%d, we still need Classmark %d\n", i, -supported);
+ request_classmark = true;
+ }
+ }
+
+ return request_classmark;
+}
+
+static int msc_a_ran_enc_ciphering(struct msc_a *msc_a, bool umts_aka, bool retrieve_imeisv);
+
+/* VLR callback for ops.set_ciph_mode() */
+int msc_a_vlr_set_cipher_mode(void *_msc_a, bool umts_aka, bool retrieve_imeisv)
+{
+ struct msc_a *msc_a = _msc_a;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+
+ if (!msc_a || !vsub || !vsub->last_tuple) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Insufficient info to start ciphering\n");
+ return -EINVAL;
+ }
+
+ if (msc_a_need_classmark_for_ciphering(msc_a)) {
+ int rc;
+ struct ran_msg msg = {
+ .msg_type = RAN_MSG_CLASSMARK_REQUEST,
+ };
+ rc = msc_a_ran_down(msc_a, MSC_ROLE_I, &msg);
+ if (rc) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot send Classmark Request\n");
+ return -EIO;
+ }
+
+ msc_a->state_before_classmark_update = msc_a->c.fi->state;
+ msc_a->action_on_classmark_update = (struct msc_a_action_on_classmark_update){
+ .type = MSC_A_CLASSMARK_UPDATE_THEN_CIPHERING,
+ .ciphering = {
+ .umts_aka = umts_aka,
+ .retrieve_imeisv = retrieve_imeisv,
+ },
+ };
+ msc_a_state_chg(msc_a, MSC_A_ST_WAIT_CLASSMARK_UPDATE);
+ return 0;
+ }
+
+ return msc_a_ran_enc_ciphering(msc_a, umts_aka, retrieve_imeisv);
+}
+
+static int msc_a_ran_enc_ciphering(struct msc_a *msc_a, bool umts_aka, bool retrieve_imeisv)
+{
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct ran_msg msg;
+
+ if (!msc_a || !vsub || !vsub->last_tuple) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Insufficient info to start ciphering\n");
+ return -EINVAL;
+ }
+
+ msg = (struct ran_msg){
+ .msg_type = RAN_MSG_CIPHER_MODE_COMMAND,
+ .cipher_mode_command = {
+ .vec = vsub->last_tuple ? &vsub->last_tuple->vec : NULL,
+ .classmark = &vsub->classmark,
+ .geran = {
+ .umts_aka = umts_aka,
+ .retrieve_imeisv = retrieve_imeisv,
+ .a5_encryption_mask = net->a5_encryption_mask,
+
+ /* for ran_a.c to store the GERAN key that is actually used */
+ .chosen_key = &msc_a->geran_encr,
+ },
+ },
+ };
+
+ if (msc_a_ran_down(msc_a, MSC_ROLE_I, &msg)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Sending Cipher Mode Command failed\n");
+ /* Returning error to the VLR ops.set_ciph_mode() will cancel the attach. Other callers need to take
+ * care of the return value. */
+ return -EINVAL;
+ }
+
+ if (msc_a->geran_encr.key_len)
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "RAN encoding chose ciphering key %s\n",
+ osmo_hexdump_nospc(msc_a->geran_encr.key, msc_a->geran_encr.key_len));
+ return 0;
+}
+
+static void msc_a_fsm_auth_ciph(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ /* If accepted, transition the state, all other cases mean failure. */
+ switch (event) {
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ msc_a_ran_dec(msc_a, data, MSC_ROLE_I);
+ return;
+
+ case MSC_A_EV_AUTHENTICATED:
+ msc_a_state_chg(msc_a, MSC_A_ST_AUTHENTICATED);
+ return;
+
+ case MSC_A_EV_UNUSED:
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+ case MSC_A_EV_MO_CLOSE:
+ case MSC_A_EV_CN_CLOSE:
+ evaluate_acceptance_outcome(fi, false);
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void msc_a_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ switch (event) {
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ msc_a_ran_dec(msc_a, data, MSC_ROLE_I);
+ return;
+
+ case MSC_A_EV_CLASSMARK_UPDATE:
+ switch (msc_a->action_on_classmark_update.type) {
+ case MSC_A_CLASSMARK_UPDATE_THEN_CIPHERING:
+ msc_a_state_chg(msc_a, MSC_A_ST_AUTH_CIPH);
+ if (msc_a_ran_enc_ciphering(msc_a,
+ msc_a->action_on_classmark_update.ciphering.umts_aka,
+ msc_a->action_on_classmark_update.ciphering.retrieve_imeisv)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "After Classmark Update, still failed to send Cipher Mode Command\n");
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ }
+ return;
+
+ default:
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Internal error: After Classmark Update, don't know what to do\n");
+ msc_a_state_chg(msc_a, msc_a->state_before_classmark_update);
+ return;
+ }
+
+ case MSC_A_EV_UNUSED:
+ /* Seems something detached / aborted in the middle of auth+ciph. */
+ evaluate_acceptance_outcome(fi, false);
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+ case MSC_A_EV_MO_CLOSE:
+ case MSC_A_EV_CN_CLOSE:
+ evaluate_acceptance_outcome(fi, false);
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static bool msc_a_fsm_has_active_transactions(struct osmo_fsm_inst *fi)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct gsm_trans *trans;
+
+ if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_SILENT_CALL)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: silent call still active\n", __func__);
+ return true;
+ }
+
+ if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_CC)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still awaiting MO CC request after a CM Service Request\n",
+ __func__);
+ return true;
+ }
+ if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_SMS)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still awaiting MO SMS after a CM Service Request\n",
+ __func__);
+ return true;
+ }
+ if (osmo_use_count_by(&msc_a->use_count, MSC_A_USE_CM_SERVICE_SS)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still awaiting MO SS after a CM Service Request\n",
+ __func__);
+ return true;
+ }
+
+ if (vsub && !llist_empty(&vsub->cs.requests)) {
+ struct paging_request *pr;
+ llist_for_each_entry(pr, &vsub->cs.requests, entry) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "%s: still active: %s\n", __func__, pr->label);
+ }
+ return true;
+ }
+
+ if ((trans = trans_has_conn(msc_a))) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "connection still has active transaction: %s\n",
+ trans_type_name(trans->type));
+ return true;
+ }
+
+ return false;
+}
+
+static void msc_a_fsm_authenticated_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+
+ /* Stop Location Update expiry for this subscriber. While the subscriber
+ * has an open connection the LU expiry timer must remain disabled.
+ * Otherwise we would kick the subscriber off the network when the timer
+ * expires e.g. during a long phone call.
+ * The LU expiry timer will restart once the connection is closed. */
+ if (vsub)
+ vsub->expire_lu = VLR_SUBSCRIBER_NO_EXPIRATION;
+
+ evaluate_acceptance_outcome(fi, true);
+}
+
+static void msc_a_fsm_authenticated(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ switch (event) {
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST:
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ msc_a_ran_dec(msc_a, data, MSC_ROLE_I);
+ return;
+
+ case MSC_A_EV_COMPLETE_LAYER_3_OK:
+ /* When Authentication is off, we may already be in the Accepted state when the code
+ * evaluates the Compl L3. Simply ignore. This just cosmetically mutes the error log
+ * about the useless event. */
+ return;
+
+ case MSC_A_EV_TRANSACTION_ACCEPTED:
+ msc_a_state_chg(msc_a, MSC_A_ST_COMMUNICATING);
+ return;
+
+ case MSC_A_EV_MO_CLOSE:
+ case MSC_A_EV_CN_CLOSE:
+ case MSC_A_EV_UNUSED:
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+/* The MGW has given us a local IP address for the RAN side. Ready to start the Assignment of a voice channel. */
+static void msc_a_call_leg_ran_local_addr_available(struct msc_a *msc_a)
+{
+ struct ran_msg msg;
+ struct gsm_trans *cc_trans = msc_a->cc.active_trans;
+ struct gsm0808_channel_type channel_type;
+
+ /* Once a CI is known, we could also CRCX the CN side of the MGW endpoint, but it makes sense to wait for the
+ * codec to be determined by the Assignment Complete message, first. */
+
+ if (mncc_bearer_cap_to_channel_type(&channel_type, &cc_trans->bearer_cap)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot compose Channel Type from bearer capabilities\n");
+ /* FIXME: ERROR HANDLING */
+ return;
+ }
+
+ /* The RAN side RTP address is known, so the voice Assignment can commence. */
+ msg = (struct ran_msg){
+ .msg_type = RAN_MSG_ASSIGNMENT_COMMAND,
+ .assignment_command = {
+ .cn_rtp = &msc_a->cc.call_leg->rtp[RTP_TO_RAN]->local,
+ .channel_type = &channel_type,
+ },
+ };
+ if (msc_a_ran_down(msc_a, MSC_ROLE_I, &msg)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot send Assignment\n");
+ /* FIXME: ERROR HANDLING */
+ return;
+ }
+}
+
+static void msc_a_call_leg_cn_local_addr_available(struct msc_a *msc_a, struct gsm_trans *cc_trans)
+{
+ if (gsm48_tch_rtp_create(cc_trans)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot inform MNCC of RTP address\n");
+ /* FIXME: ERROR HANDLING */
+ return;
+ }
+}
+
+static struct gsm_trans *find_waiting_call(struct msc_a *msc_a)
+{
+ struct gsm_trans *trans;
+ struct gsm_network *net = msc_a_net(msc_a);
+
+ llist_for_each_entry(trans, &net->trans_list, entry) {
+ if (trans->msc_a != msc_a)
+ continue;
+ if (trans->type != TRANS_CC)
+ continue;
+ if (trans->msc_a->cc.active_trans == trans)
+ continue;
+ return trans;
+ }
+ return NULL;
+}
+
+static void msc_a_cleanup_rtp_streams(struct msc_a *msc_a, uint32_t event, void *data)
+{
+ struct rtp_stream *rtps;
+
+ switch (event) {
+ case MSC_EV_CALL_LEG_RTP_RELEASED:
+ rtps = data;
+ if (msc_a->cc.mncc_forwarding_to_remote_ran
+ && msc_a->cc.mncc_forwarding_to_remote_ran->rtps == rtps)
+ msc_a->cc.mncc_forwarding_to_remote_ran->rtps = NULL;
+ if (msc_a->ho.new_cell.mncc_forwarding_to_remote_ran
+ && msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps == rtps)
+ msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps = NULL;
+ return;
+
+ case MSC_EV_CALL_LEG_TERM:
+ msc_a->cc.call_leg = NULL;
+ if (msc_a->cc.mncc_forwarding_to_remote_ran)
+ msc_a->cc.mncc_forwarding_to_remote_ran->rtps = NULL;
+
+ if (msc_a->ho.new_cell.mncc_forwarding_to_remote_ran) {
+ fprintf(stderr, "FOCKEN %p\n", msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps);
+ msc_a->ho.new_cell.mncc_forwarding_to_remote_ran->rtps = NULL;
+ }
+ return;
+
+ case MSC_MNCC_EV_CALL_ENDED:
+ msc_a->cc.mncc_forwarding_to_remote_ran = NULL;
+ return;
+
+ default:
+ return;
+ }
+}
+
+static void msc_a_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct rtp_stream *rtps;
+ struct gsm_trans *waiting_trans;
+ struct an_apdu *an_apdu;
+
+ msc_a_cleanup_rtp_streams(msc_a, event, data);
+
+ switch (event) {
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST:
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ an_apdu = data;
+ msc_a_ran_dec(msc_a, an_apdu, MSC_ROLE_I);
+ return;
+
+ case MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE:
+ case MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE:
+ case MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST:
+ an_apdu = data;
+ msc_a_ran_dec(msc_a, an_apdu, MSC_ROLE_T);
+ return;
+
+ case MSC_A_EV_TRANSACTION_ACCEPTED:
+ /* no-op */
+ return;
+
+ case MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE:
+ rtps = data;
+ if (!rtps) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Invalid data for %s\n", osmo_fsm_event_name(fi->fsm, event));
+ return;
+ }
+ LOG_MSC_A(msc_a, LOGL_DEBUG,
+ "MGW endpoint's RTP address available for the CI %s: " OSMO_SOCKADDR_STR_FMT "\n",
+ rtp_direction_name(rtps->dir), OSMO_SOCKADDR_STR_FMT_ARGS(&rtps->local));
+ switch (rtps->dir) {
+ case RTP_TO_RAN:
+ msc_a_call_leg_ran_local_addr_available(msc_a);
+ return;
+ case RTP_TO_CN:
+ msc_a_call_leg_cn_local_addr_available(msc_a, rtps->for_trans);
+ return;
+ default:
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Invalid data for %s\n", osmo_fsm_event_name(fi->fsm, event));
+ return;
+ }
+
+ case MSC_EV_CALL_LEG_RTP_COMPLETE:
+ /* Nothing to do. */
+ return;
+
+ case MSC_EV_CALL_LEG_RTP_RELEASED:
+ case MSC_MNCC_EV_CALL_ENDED:
+ /* Cleaned up above */
+ return;
+
+ case MSC_EV_CALL_LEG_TERM:
+ /* RTP streams cleaned up above */
+
+ msc_a_get(msc_a, __func__);
+ if (msc_a->cc.active_trans)
+ trans_free(msc_a->cc.active_trans);
+
+ /* If there is another call still waiting to be activated, this is the time when the mgcp_ctx is
+ * available again and the other call can start assigning. */
+ waiting_trans = find_waiting_call(msc_a);
+ if (waiting_trans) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "(ti %02x) Call waiting: starting Assignment\n",
+ waiting_trans->transaction_id);
+ msc_a_try_call_assignment(waiting_trans);
+ }
+ msc_a_put(msc_a, __func__);
+ return;
+
+ case MSC_A_EV_HANDOVER_REQUIRED:
+ msc_ho_start(msc_a, (struct ran_handover_required*)data);
+ return;
+
+ case MSC_A_EV_MO_CLOSE:
+ case MSC_A_EV_CN_CLOSE:
+ case MSC_A_EV_UNUSED:
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static int msc_a_fsm_timer_cb(struct osmo_fsm_inst *fi)
+{
+ struct msc_a *msc_a = fi->priv;
+ if (msc_a_in_release(msc_a)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Timeout while releasing, discarding right now\n");
+ msc_a_put_all(msc_a, MSC_A_USE_WAIT_CLEAR_COMPLETE);
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASED);
+ } else {
+ enum gsm48_reject_value cause = GSM48_REJECT_CONGESTION;
+ osmo_fsm_inst_dispatch(fi, MSC_A_EV_CN_CLOSE, &cause);
+ }
+ return 0;
+}
+
+static void msc_a_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ int i;
+ char buf[128];
+ const char * const use_counts_to_cancel[] = {
+ MSC_A_USE_LOCATION_UPDATING,
+ MSC_A_USE_CM_SERVICE_CC,
+ MSC_A_USE_CM_SERVICE_SMS,
+ MSC_A_USE_CM_SERVICE_SS,
+ MSC_A_USE_PAGING_RESPONSE,
+ };
+
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Releasing: msc_a use is %s\n",
+ osmo_use_count_name_buf(buf, sizeof(buf), &msc_a->use_count));
+
+ if (vsub) {
+ vlr_subscr_get(vsub, __func__);
+
+ /* Cancel all VLR FSMs, if any */
+ vlr_subscr_cancel_attach_fsm(vsub, OSMO_FSM_TERM_ERROR, GSM48_REJECT_CONGESTION);
+
+ /* The subscriber has no active connection anymore.
+ * Restart the periodic Location Update expiry timer for this subscriber. */
+ vlr_subscr_enable_expire_lu(vsub);
+ }
+
+ /* If we're closing in a middle of a trans, we need to clean up */
+ trans_conn_closed(msc_a);
+
+ call_leg_release(msc_a->cc.call_leg);
+
+ /* Cancel use counts for pending CM Service / Paging */
+ for (i = 0; i < ARRAY_SIZE(use_counts_to_cancel); i++) {
+ const char *use = use_counts_to_cancel[i];
+ int32_t count = osmo_use_count_by(&msc_a->use_count, use);
+ if (!count)
+ continue;
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Releasing: canceling still pending use: %s (%d)\n", use, count);
+ osmo_use_count_get_put(&msc_a->use_count, use, -count);
+ }
+
+ if (msc_a->c.ran->type == OSMO_RAT_EUTRAN_SGS) {
+ sgs_iface_tx_release(vsub);
+ /* In SGsAP there is no confirmation of a release. */
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASED);
+ } else {
+ struct ran_msg msg = {
+ .msg_type = RAN_MSG_CLEAR_COMMAND,
+ .clear_command = {
+ .csfb_ind = (vsub && vsub->sgs_fsm->state == SGS_UE_ST_ASSOCIATED),
+ },
+ };
+ msc_a_get(msc_a, MSC_A_USE_WAIT_CLEAR_COMPLETE);
+ msc_a_ran_down(msc_a, MSC_ROLE_I, &msg);
+ }
+
+ if (vsub)
+ vlr_subscr_put(vsub, __func__);
+}
+
+static void msc_a_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ msc_a_cleanup_rtp_streams(msc_a, event, data);
+
+ switch (event) {
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ msc_a_ran_dec(msc_a, data, MSC_ROLE_I);
+ return;
+
+ case MSC_A_EV_MO_CLOSE:
+ case MSC_A_EV_CN_CLOSE:
+ case MSC_A_EV_UNUSED:
+ /* Already releasing */
+ return;
+
+ case MSC_EV_CALL_LEG_RTP_RELEASED:
+ case MSC_EV_CALL_LEG_TERM:
+ case MSC_MNCC_EV_CALL_ENDED:
+ /* RTP streams cleaned up above */
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+
+static void msc_a_fsm_released_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_a *msc_a = msc_a_fi_priv(fi);
+ char buf[128];
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Released: msc_a use is %s\n",
+ osmo_use_count_name_buf(buf, sizeof(buf), &msc_a->use_count));
+ if (osmo_use_count_total(&msc_a->use_count) == 0)
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, fi);
+}
+
+static void msc_a_fsm_released(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ if (event == MSC_A_EV_UNUSED)
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, fi);
+}
+
+void msc_a_fsm_allstate_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ //struct msc_a *a = msc_a_fi_priv(fi);
+ switch (event) {
+
+ default:
+ return;
+ }
+}
+
+void msc_a_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_a *msc_a = msc_a_fi_priv(fi);
+
+ trans_conn_closed(msc_a);
+
+ if (msc_a_fsm_has_active_transactions(fi))
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Deallocating active transactions failed\n");
+
+ LOG_MSC_A_CAT(msc_a, DREF, LOGL_DEBUG, "max total use count was %d\n", msc_a->max_total_use_count);
+}
+
+const struct value_string msc_a_fsm_event_names[] = {
+ OSMO_VALUE_STRING(MSC_REMOTE_EV_RX_GSUP),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_COMPLETE),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_RELEASED),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_TERM),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_NEED_LOCAL_RTP),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_PROCEEDING),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_COMPLETE),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_ENDED),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_I_COMPLETE_LAYER_3),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE),
+ OSMO_VALUE_STRING(MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST),
+ OSMO_VALUE_STRING(MSC_A_EV_COMPLETE_LAYER_3_OK),
+ OSMO_VALUE_STRING(MSC_A_EV_CLASSMARK_UPDATE),
+ OSMO_VALUE_STRING(MSC_A_EV_AUTHENTICATED),
+ OSMO_VALUE_STRING(MSC_A_EV_TRANSACTION_ACCEPTED),
+ OSMO_VALUE_STRING(MSC_A_EV_CN_CLOSE),
+ OSMO_VALUE_STRING(MSC_A_EV_MO_CLOSE),
+ OSMO_VALUE_STRING(MSC_A_EV_UNUSED),
+ OSMO_VALUE_STRING(MSC_A_EV_HANDOVER_REQUIRED),
+ OSMO_VALUE_STRING(MSC_A_EV_HANDOVER_END),
+ {}
+};
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msc_a_fsm_states[] = {
+ [MSC_A_ST_VALIDATE_L3] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_VALIDATE_L3),
+ .in_event_mask = 0
+ | S(MSC_A_EV_FROM_I_COMPLETE_LAYER_3)
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_COMPLETE_LAYER_3_OK)
+ | S(MSC_A_EV_MO_CLOSE)
+ | S(MSC_A_EV_CN_CLOSE)
+ | S(MSC_A_EV_UNUSED)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_VALIDATE_L3)
+ | S(MSC_A_ST_AUTH_CIPH)
+ | S(MSC_A_ST_RELEASING)
+ ,
+ .action = msc_a_fsm_validate_l3,
+ },
+ [MSC_A_ST_AUTH_CIPH] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_AUTH_CIPH),
+ .in_event_mask = 0
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_AUTHENTICATED)
+ | S(MSC_A_EV_MO_CLOSE)
+ | S(MSC_A_EV_CN_CLOSE)
+ | S(MSC_A_EV_UNUSED)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_WAIT_CLASSMARK_UPDATE)
+ | S(MSC_A_ST_AUTHENTICATED)
+ | S(MSC_A_ST_RELEASING)
+ ,
+ .action = msc_a_fsm_auth_ciph,
+ },
+ [MSC_A_ST_WAIT_CLASSMARK_UPDATE] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_WAIT_CLASSMARK_UPDATE),
+ .in_event_mask = 0
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_CLASSMARK_UPDATE)
+ | S(MSC_A_EV_MO_CLOSE)
+ | S(MSC_A_EV_CN_CLOSE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_AUTH_CIPH)
+ | S(MSC_A_ST_RELEASING)
+ ,
+ .action = msc_a_fsm_wait_classmark_update,
+ },
+ [MSC_A_ST_AUTHENTICATED] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_AUTHENTICATED),
+ /* allow everything to release for any odd behavior */
+ .in_event_mask = 0
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_TRANSACTION_ACCEPTED)
+ | S(MSC_A_EV_MO_CLOSE)
+ | S(MSC_A_EV_CN_CLOSE)
+ | S(MSC_A_EV_UNUSED)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_RELEASING)
+ | S(MSC_A_ST_COMMUNICATING)
+ ,
+ .onenter = msc_a_fsm_authenticated_enter,
+ .action = msc_a_fsm_authenticated,
+ },
+ [MSC_A_ST_COMMUNICATING] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_COMMUNICATING),
+ /* allow everything to release for any odd behavior */
+ .in_event_mask = 0
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE)
+ | S(MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE)
+ | S(MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_TRANSACTION_ACCEPTED)
+ | S(MSC_A_EV_MO_CLOSE)
+ | S(MSC_A_EV_CN_CLOSE)
+ | S(MSC_A_EV_UNUSED)
+ | S(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE)
+ | S(MSC_EV_CALL_LEG_RTP_COMPLETE)
+ | S(MSC_EV_CALL_LEG_RTP_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ | S(MSC_A_EV_HANDOVER_REQUIRED)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_RELEASING)
+ ,
+ .action = msc_a_fsm_communicating,
+ },
+ [MSC_A_ST_RELEASING] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_RELEASING),
+ .in_event_mask = 0
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_UNUSED)
+ | S(MSC_EV_CALL_LEG_RTP_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_RELEASED)
+ ,
+ .onenter = msc_a_fsm_releasing_onenter,
+ .action = msc_a_fsm_releasing,
+ },
+ [MSC_A_ST_RELEASED] = {
+ .name = OSMO_STRINGIFY(MSC_A_ST_RELEASED),
+ .in_event_mask = 0
+ | S(MSC_A_EV_UNUSED)
+ ,
+ .onenter = msc_a_fsm_released_onenter,
+ .action = msc_a_fsm_released,
+ },
+};
+
+static struct osmo_fsm msc_a_fsm = {
+ .name = "msc_a",
+ .states = msc_a_fsm_states,
+ .num_states = ARRAY_SIZE(msc_a_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msc_a_fsm_event_names,
+ .allstate_action = msc_a_fsm_allstate_action,
+ .allstate_event_mask = 0
+ ,
+ .timer_cb = msc_a_fsm_timer_cb,
+ .cleanup = msc_a_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msc_a_fsm_init()
+{
+ OSMO_ASSERT(osmo_fsm_register(&msc_a_fsm) == 0);
+}
+
+static int msc_a_use_cb(struct osmo_use_count_entry *e, int32_t old_use_count, const char *file, int line)
+{
+ struct msc_a *msc_a = e->use_count->talloc_object;
+ char buf[128];
+ int32_t total;
+ int level;
+
+ if (!e->use)
+ return -EINVAL;
+
+ total = osmo_use_count_total(&msc_a->use_count);
+
+ if (total == 0
+ || (total == 1 && old_use_count == 0 && e->count == 1))
+ level = LOGL_INFO;
+ else
+ level = LOGL_DEBUG;
+
+ LOG_MSC_A_CAT_SRC(msc_a, DREF, level, file, line, "%s %s: now used by %s\n",
+ (e->count - old_use_count) > 0? "+" : "-", e->use,
+ osmo_use_count_name_buf(buf, sizeof(buf), &msc_a->use_count));
+
+ if (e->count < 0)
+ return -ERANGE;
+
+ msc_a->max_total_use_count = OSMO_MAX(msc_a->max_total_use_count, total);
+
+ if (total == 0)
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_UNUSED, NULL);
+ return 0;
+}
+
+struct msc_a *msc_a_alloc(struct msub *msub, struct ran_infra *ran)
+{
+ struct msc_a *msc_a = msub_role_alloc(msub, MSC_ROLE_A, &msc_a_fsm, struct msc_a, ran);
+ msc_a->use_count = (struct osmo_use_count){
+ .talloc_object = msc_a,
+ .use_cb = msc_a_use_cb,
+ };
+ osmo_use_count_make_static_entries(&msc_a->use_count, msc_a->use_count_buf, ARRAY_SIZE(msc_a->use_count_buf));
+ /* Start timeout for first state */
+ msc_a_state_chg(msc_a, MSC_A_ST_VALIDATE_L3);
+ return msc_a;
+}
+
+bool msc_a_is_establishing_auth_ciph(const struct msc_a *msc_a)
+{
+ if (!msc_a || !msc_a->c.fi)
+ return false;
+ return msc_a->c.fi->state == MSC_A_ST_AUTH_CIPH;
+}
+
+const struct value_string complete_layer3_type_names[] = {
+ { COMPLETE_LAYER3_NONE, "NONE" },
+ { COMPLETE_LAYER3_LU, "LU" },
+ { COMPLETE_LAYER3_CM_SERVICE_REQ, "CM_SERVICE_REQ" },
+ { COMPLETE_LAYER3_PAGING_RESP, "PAGING_RESP" },
+ { 0, NULL }
+};
+
+#define _msc_a_update_id(MSC_A, FMT, ARGS ...) \
+ do { \
+ if (osmo_fsm_inst_update_id_f(msc_a->c.fi, FMT ":%s:%s", \
+ ## ARGS, \
+ msub_ran_conn_name(msc_a->c.msub), \
+ complete_layer3_type_name(msc_a->complete_layer3_type)) \
+ == 0) { \
+ struct vlr_subscr *_vsub = msc_a_vsub(MSC_A); \
+ if (_vsub) { \
+ if (_vsub->lu_fsm) \
+ osmo_fsm_inst_update_id(_vsub->lu_fsm, (MSC_A)->c.fi->id); \
+ if (_vsub->auth_fsm) \
+ osmo_fsm_inst_update_id(_vsub->auth_fsm, (MSC_A)->c.fi->id); \
+ if (_vsub->proc_arq_fsm) \
+ osmo_fsm_inst_update_id(_vsub->proc_arq_fsm, (MSC_A)->c.fi->id); \
+ } \
+ LOG_MSC_A(MSC_A, LOGL_DEBUG, "Updated ID\n"); \
+ } \
+ /* otherwise osmo_fsm_inst_update_id_f() will log an error. */ \
+ } while (0)
+
+
+/* Compose an ID almost like gsm48_mi_to_string(), but print the MI type along, and print a TMSI as hex. */
+void msc_a_update_id_from_mi(struct msc_a *msc_a, const uint8_t mi[], uint8_t mi_len)
+{
+ _msc_a_update_id(msc_a, "%s", osmo_mi_name(mi, mi_len));
+}
+
+/* Update msc_a->fi id string from current msc_a->vsub and msc_a->complete_layer3_type. */
+void msc_a_update_id(struct msc_a *msc_a)
+{
+ _msc_a_update_id(msc_a, "%s", vlr_subscr_name(msc_a_vsub(msc_a)));
+}
+
+/* Iterate all msc_a instances that are relevant for this subscriber, and update FSM ID strings for all of the FSM
+ * instances. */
+void msc_a_update_id_for_vsub(struct vlr_subscr *for_vsub)
+{
+ struct msub *msub;
+ llist_for_each_entry(msub, &msub_list, entry) {
+ struct vlr_subscr *vsub = msub_vsub(msub);
+ if (vsub != for_vsub)
+ continue;
+ msc_a_update_id(msub_msc_a(msub));
+ }
+}
+
+static bool msg_is_initially_permitted(const struct gsm48_hdr *hdr)
+{
+ uint8_t pdisc = gsm48_hdr_pdisc(hdr);
+ uint8_t msg_type = gsm48_hdr_msg_type(hdr);
+
+ switch (pdisc) {
+ case GSM48_PDISC_MM:
+ switch (msg_type) {
+ case GSM48_MT_MM_LOC_UPD_REQUEST:
+ case GSM48_MT_MM_CM_SERV_REQ:
+ case GSM48_MT_MM_CM_REEST_REQ:
+ case GSM48_MT_MM_AUTH_RESP:
+ case GSM48_MT_MM_AUTH_FAIL:
+ case GSM48_MT_MM_ID_RESP:
+ case GSM48_MT_MM_TMSI_REALL_COMPL:
+ case GSM48_MT_MM_IMSI_DETACH_IND:
+ return true;
+ default:
+ break;
+ }
+ break;
+ case GSM48_PDISC_RR:
+ switch (msg_type) {
+ /* GSM48_MT_RR_CIPH_M_COMPL is actually handled in bssmap_rx_ciph_compl() and gets redirected in the
+ * BSSAP layer to ran_conn_cipher_mode_compl() (before this here is reached) */
+ case GSM48_MT_RR_PAG_RESP:
+ case GSM48_MT_RR_CIPH_M_COMPL:
+ return true;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return false;
+}
+
+/* Main entry point for GSM 04.08/44.008 Layer 3 data (e.g. from the BSC). */
+int msc_a_up_l3(struct msc_a *msc_a, struct msgb *msg)
+{
+ struct gsm48_hdr *gh;
+ uint8_t pdisc;
+ int rc;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ int is_r99;
+
+ OSMO_ASSERT(msg->l3h);
+ OSMO_ASSERT(msg);
+
+ gh = msgb_l3(msg);
+ pdisc = gsm48_hdr_pdisc(gh);
+
+ LOG_MSC_A_CAT(msc_a, DRLL, LOGL_DEBUG, "Dispatching 04.08 message: %s %s\n",
+ gsm48_pdisc_name(pdisc), gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)));
+
+ /* To evaluate the 3GPP TS 24.007 Duplicate Detection, we need Classmark information on whether the MS is R99
+ * capable. If the subscriber is already actively connected, the Classmark information is stored with the
+ * vlr_subscr. Otherwise, this *must* be a Complete Layer 3 with Classmark info. */
+ if (vsub)
+ is_r99 = osmo_gsm48_classmark_is_r99(&vsub->classmark) ? 1 : 0;
+ else
+ is_r99 = compl_l3_msg_is_r99(msg);
+
+ if (is_r99 < 0) {
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "No Classmark Information, dropping non-Complete-Layer3 message: %s\n",
+ gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)));
+ return -EACCES;
+ }
+
+ if (is_r99 >= 0
+ && ran_dec_dtap_undup_is_duplicate(msc_a->c.fi, msc_a->n_sd_next, is_r99 ? true : false, msg)) {
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Dropping duplicate message"
+ " (3GPP TS 24.007 11.2.3.2 Message Type Octet / Duplicate Detection)\n");
+ return 0;
+ }
+
+ if (!msc_a_is_accepted(msc_a)
+ && !msg_is_initially_permitted(gh)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "Message not permitted for initial conn: %s\n",
+ gsm48_pdisc_msgtype_name(pdisc, gsm48_hdr_msg_type(gh)));
+ return -EACCES;
+ }
+
+ if (vsub && vsub->cs.attached_via_ran != msc_a->c.ran->type) {
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "Illegal situation: RAN type mismatch:"
+ " attached via %s, received message via %s\n",
+ osmo_rat_type_name(vsub->cs.attached_via_ran),
+ osmo_rat_type_name(msc_a->c.ran->type));
+ return -EACCES;
+ }
+
+#if 0
+ if (silent_call_reroute(conn, msg))
+ return silent_call_rx(conn, msg);
+#endif
+
+ switch (pdisc) {
+ case GSM48_PDISC_CC:
+ rc = gsm0408_rcv_cc(msc_a, msg);
+ break;
+ case GSM48_PDISC_MM:
+ rc = gsm0408_rcv_mm(msc_a, msg);
+ break;
+ case GSM48_PDISC_RR:
+ rc = gsm0408_rcv_rr(msc_a, msg);
+ break;
+ case GSM48_PDISC_SMS:
+ rc = gsm0411_rcv_sms(msc_a, msg);
+ break;
+ case GSM48_PDISC_MM_GPRS:
+ case GSM48_PDISC_SM_GPRS:
+ LOG_MSC_A_CAT(msc_a, DRLL, LOGL_NOTICE, "Unimplemented "
+ "GSM 04.08 discriminator 0x%02x\n", pdisc);
+ rc = -ENOTSUP;
+ break;
+ case GSM48_PDISC_NC_SS:
+ rc = gsm0911_rcv_nc_ss(msc_a, msg);
+ break;
+ case GSM48_PDISC_TEST:
+ rc = gsm0414_rcv_test(msc_a, msg);
+ break;
+ default:
+ LOG_MSC_A_CAT(msc_a, DRLL, LOGL_NOTICE, "Unknown "
+ "GSM 04.08 discriminator 0x%02x\n", pdisc);
+ rc = -EINVAL;
+ break;
+ }
+
+ return rc;
+}
+
+static void msc_a_up_call_assignment_complete(struct msc_a *msc_a, const struct ran_msg *ac)
+{
+ struct gsm_trans *cc_trans = msc_a->cc.active_trans;
+ struct rtp_stream *rtps_to_ran = msc_a->cc.call_leg ? msc_a->cc.call_leg->rtp[RTP_TO_RAN] : NULL;
+
+ if (!rtps_to_ran) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Rx Assignment Complete, but no RTP stream is set up\n");
+ return;
+ }
+ if (!cc_trans) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Rx Assignment Complete, but CC transaction is active\n");
+ return;
+ }
+
+ /* Update RAN-side endpoint CI: */
+ rtp_stream_set_codec(rtps_to_ran, ac->assignment_complete.codec);
+ rtp_stream_set_remote_addr(rtps_to_ran, &ac->assignment_complete.remote_rtp);
+ rtp_stream_commit(rtps_to_ran);
+
+ /* Setup CN side endpoint CI:
+ * Now that
+ * - the first CI has been created and a definitive endpoint name is assigned to the call_leg's MGW
+ * endpoint,
+ * - the Assignment has chosen a speech codec
+ * go on to create the CN side RTP stream's CI. */
+ if (call_leg_ensure_ci(msc_a->cc.call_leg, RTP_TO_CN, cc_trans->callref, cc_trans,
+ &ac->assignment_complete.codec, NULL)) {
+ LOG_MSC_A_CAT(msc_a, DCC, LOGL_ERROR, "Error creating MGW CI towards CN\n");
+ call_leg_release(msc_a->cc.call_leg);
+ return;
+ }
+}
+
+static void msc_a_up_call_assignment_failure(struct msc_a *msc_a, const struct ran_msg *af)
+{
+ struct gsm_trans *trans;
+
+ /* For a normal voice call, there will be an rtp_stream FSM. */
+ if (msc_a->cc.call_leg && msc_a->cc.call_leg->rtp[RTP_TO_RAN]) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Assignment Failure, releasing call\n");
+ rtp_stream_release(msc_a->cc.call_leg->rtp[RTP_TO_RAN]);
+ return;
+ }
+
+ /* Otherwise, a silent call might be active */
+ trans = trans_find_by_type(msc_a, TRANS_SILENT_CALL);
+ if (trans) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Assignment Failure, releasing silent call\n");
+ trans_free(trans);
+ return;
+ }
+
+ /* Neither a voice call nor silent call assignment. Assume the worst and detach. */
+ msc_a_release_cn(msc_a);
+}
+
+static void msc_a_up_classmark_update(struct msc_a *msc_a, const struct osmo_gsm48_classmark *classmark,
+ struct osmo_gsm48_classmark *dst)
+{
+ if (!dst) {
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+
+ if (!vsub)
+ dst = &msc_a->temporary_classmark;
+ else
+ dst = &vsub->classmark;
+ }
+
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "A5 capabilities recived from Classmark Update: %s\n",
+ osmo_gsm48_classmark_a5_name(classmark));
+ osmo_gsm48_classmark_update(dst, classmark);
+
+ /* bump subscr conn FSM in case it is waiting for a Classmark Update */
+ if (msc_a->c.fi->state == MSC_A_ST_WAIT_CLASSMARK_UPDATE)
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_CLASSMARK_UPDATE, NULL);
+}
+
+static void msc_a_up_sapi_n_reject(struct msc_a *msc_a, const struct ran_msg *msg)
+{
+ int sapi = msg->sapi_n_reject.dlci & 0x7;
+ if (sapi == UM_SAPI_SMS)
+ gsm411_sapi_n_reject(msc_a);
+}
+
+static int msc_a_up_ho(struct msc_a *msc_a, const struct msc_a_ran_dec_data *d, uint32_t ho_fi_event)
+{
+ if (!msc_a->ho.fi) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Rx Handover message, but no Handover ongoing: %s\n", d->ran_dec->msg_name);
+ return -EINVAL;
+ }
+ return osmo_fsm_inst_dispatch(msc_a->ho.fi, ho_fi_event, (void*)d);
+}
+
+int msc_a_ran_dec_from_msc_i(struct msc_a *msc_a, struct msc_a_ran_dec_data *d)
+{
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ const struct ran_msg *msg = d->ran_dec;
+ int rc = -99;
+
+ switch (msg->msg_type) {
+
+ case RAN_MSG_COMPL_L3:
+ msc_a->via_cell = (struct osmo_cell_global_id){
+ .lai.plmn = msc_a_net(msc_a)->plmn,
+ };
+ gsm0808_cell_id_to_cgi(&msc_a->via_cell, msg->compl_l3.cell_id);
+ rc = msc_a_up_l3(msc_a, msg->compl_l3.msg);
+ if (!rc) {
+ struct ran_conn *conn = msub_ran_conn(msc_a->c.msub);
+ if (conn)
+ ran_peer_cells_seen_add(conn->ran_peer, msg->compl_l3.cell_id);
+ }
+ break;
+
+ case RAN_MSG_DTAP:
+ rc = msc_a_up_l3(msc_a, msg->dtap);
+ break;
+
+ case RAN_MSG_CLEAR_REQUEST:
+ rc = osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_MO_CLOSE, NULL);
+ break;
+
+ case RAN_MSG_CLEAR_COMPLETE:
+ switch (msc_a->c.fi->state) {
+ case MSC_A_ST_RELEASING:
+ msc_a_put_all(msc_a, MSC_A_USE_WAIT_CLEAR_COMPLETE);
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASED);
+ break;
+ case MSC_A_ST_RELEASED:
+ break;
+ default:
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Received Clear Complete event, but did not send Clear Command\n");
+ msc_a_state_chg(msc_a, MSC_A_ST_RELEASING);
+ break;
+ }
+ rc = 0;
+ break;
+
+ case RAN_MSG_CLASSMARK_UPDATE:
+ msc_a_up_classmark_update(msc_a, msg->classmark_update.classmark, NULL);
+ rc = 0;
+ break;
+
+ case RAN_MSG_CIPHER_MODE_COMPLETE:
+ /* Remember what Ciphering was negotiated (e.g. for Handover) */
+ if (msg->cipher_mode_complete.alg_id) {
+ msc_a->geran_encr.alg_id = msg->cipher_mode_complete.alg_id;
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Cipher Mode Complete: chosen encryption algorithm: A5/%u\n",
+ msc_a->geran_encr.alg_id - 1);
+ };
+ vlr_subscr_rx_ciph_res(vsub, VLR_CIPH_COMPL);
+ rc = 0;
+ break;
+
+ case RAN_MSG_CIPHER_MODE_REJECT:
+ vlr_subscr_rx_ciph_res(vsub, VLR_CIPH_REJECT);
+ rc = 0;
+ break;
+
+ case RAN_MSG_ASSIGNMENT_COMPLETE:
+ msc_a_up_call_assignment_complete(msc_a, msg);
+ rc = 0;
+ break;
+
+ case RAN_MSG_ASSIGNMENT_FAILURE:
+ msc_a_up_call_assignment_failure(msc_a, msg);
+ rc = 0;
+ break;
+
+ case RAN_MSG_SAPI_N_REJECT:
+ msc_a_up_sapi_n_reject(msc_a, msg);
+ rc = 0;
+ break;
+
+ case RAN_MSG_HANDOVER_PERFORMED:
+ /* The BSS lets us know that a handover happened within the BSS, which doesn't concern us. */
+ LOG_MSC_A(msc_a, LOGL_ERROR, "'Handover Performed' handling not implemented\n");
+ break;
+
+ case RAN_MSG_HANDOVER_REQUIRED:
+ /* The BSS lets us know that it wants to handover to a different cell */
+ rc = osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_HANDOVER_REQUIRED, (void*)&msg->handover_required);
+ break;
+
+ case RAN_MSG_HANDOVER_FAILURE:
+ rc = msc_a_up_ho(msc_a, d, MSC_HO_EV_RX_FAILURE);
+ break;
+
+ default:
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Message from MSC-I not implemented: %s\n", ran_msg_type_name(msg->msg_type));
+ rc = -ENOTSUP;
+ break;
+ }
+ return rc;
+}
+
+static int msc_a_ran_dec_from_msc_t(struct msc_a *msc_a, struct msc_a_ran_dec_data *d)
+{
+ struct msc_t *msc_t = msc_a_msc_t(msc_a);
+ int rc = -99;
+
+ if (!msc_t) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Rx message from MSC-T role, but I have no active MSC-T role.\n");
+ return -EINVAL;
+ }
+
+ OSMO_ASSERT(d->ran_dec);
+
+ switch (d->ran_dec->msg_type) {
+
+ case RAN_MSG_CLEAR_REQUEST:
+ rc = osmo_fsm_inst_dispatch(msc_t->c.fi, MSC_T_EV_MO_CLOSE, NULL);
+ break;
+
+ case RAN_MSG_CLEAR_COMPLETE:
+ rc = osmo_fsm_inst_dispatch(msc_t->c.fi, MSC_T_EV_CLEAR_COMPLETE, NULL);
+ break;
+
+ case RAN_MSG_CLASSMARK_UPDATE:
+ msc_a_up_classmark_update(msc_a, d->ran_dec->classmark_update.classmark, &msc_t->classmark);
+ rc = 0;
+ break;
+
+ case RAN_MSG_HANDOVER_REQUEST_ACK:
+ /* new BSS accepts Handover */
+ rc = msc_a_up_ho(msc_a, d, MSC_HO_EV_RX_REQUEST_ACK);
+ break;
+
+ case RAN_MSG_HANDOVER_DETECT:
+ /* new BSS signals the MS is DETECTed on the new lchan */
+ rc = msc_a_up_ho(msc_a, d, MSC_HO_EV_RX_DETECT);
+ break;
+
+ case RAN_MSG_HANDOVER_COMPLETE:
+ /* new BSS signals the MS has fully moved to the new lchan */
+ rc = msc_a_up_ho(msc_a, d, MSC_HO_EV_RX_COMPLETE);
+ break;
+
+ case RAN_MSG_HANDOVER_FAILURE:
+ rc = msc_a_up_ho(msc_a, d, MSC_HO_EV_RX_FAILURE);
+ break;
+
+ default:
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Message from MSC-T not implemented: %s\n",
+ ran_msg_type_name(d->ran_dec->msg_type));
+ rc = -ENOTSUP;
+ break;
+ }
+ return rc;
+}
+
+int msc_a_ran_decode_cb(struct osmo_fsm_inst *msc_a_fi, void *data, const struct ran_msg *msg)
+{
+ struct msc_a *msc_a = msc_a_fi_priv(msc_a_fi);
+ struct msc_a_ran_dec_data *d = data;
+ int rc = -99;
+
+ d->ran_dec = msg;
+
+ switch (d->from_role) {
+ case MSC_ROLE_I:
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "RAN decode: %s\n", msg->msg_name ? : ran_msg_type_name(msg->msg_type));
+ rc = msc_a_ran_dec_from_msc_i(msc_a, d);
+ break;
+
+ case MSC_ROLE_T:
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "RAN decode from MSC-T: %s\n",
+ msg->msg_name ? : ran_msg_type_name(msg->msg_type));
+ rc = msc_a_ran_dec_from_msc_t(msc_a, d);
+ break;
+
+ default:
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Message from invalid role %s: %s\n", msc_role_name(d->from_role),
+ ran_msg_type_name(msg->msg_type));
+ return -ENOTSUP;
+ }
+
+ if (rc)
+ LOG_MSC_A(msc_a, LOGL_ERROR, "RAN decode error (rc=%d) for %s from %s\n", rc, ran_msg_type_name(msg->msg_type),
+ msc_role_name(d->from_role));
+ return rc;
+}
+
+/* Your typical DTAP via FORWARD_ACCESS_SIGNALLING_REQUEST */
+int _msc_a_ran_down(struct msc_a *msc_a, enum msc_role to_role, const struct ran_msg *ran_msg,
+ const char *file, int line)
+{
+ return _msc_a_msg_down(msc_a, to_role, msub_role_to_role_event(msc_a->c.msub, MSC_ROLE_A, to_role),
+ ran_msg, file, line);
+}
+
+/* To transmit more complex events than just FORWARD_ACCESS_SIGNALLING_REQUEST, e.g. an
+ * MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST */
+int _msc_a_msg_down(struct msc_a *msc_a, enum msc_role to_role, uint32_t to_role_event,
+ const struct ran_msg *ran_msg,
+ const char *file, int line)
+{
+ struct an_apdu an_apdu = {
+ .an_proto = msc_a->c.ran->an_proto,
+ .msg = msc_role_ran_encode(msc_a->c.fi, ran_msg),
+ };
+ int rc;
+ if (!an_apdu.msg)
+ return -EIO;
+ rc = _msub_role_dispatch(msc_a->c.msub, to_role, to_role_event, &an_apdu, file, line);
+ msgb_free(an_apdu.msg);
+ return rc;
+}
+
+int msc_a_tx_dtap_to_i(struct msc_a *msc_a, struct msgb *dtap)
+{
+ struct ran_msg ran_msg;
+
+ if (msc_a->c.ran->type == OSMO_RAT_EUTRAN_SGS) {
+ /* The SGs connection to the MME always is at the MSC-A. */
+ return sgs_iface_tx_dtap_ud(msc_a, dtap);
+ }
+
+ ran_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_DTAP,
+ .dtap = dtap,
+ };
+ return msc_a_ran_down(msc_a, MSC_ROLE_I, &ran_msg);
+}
+
+struct msc_a *msc_a_for_vsub(const struct vlr_subscr *vsub, bool valid_conn_only)
+{
+ struct msc_a *msc_a = msub_msc_a(msub_for_vsub(vsub));
+ if (valid_conn_only && !msc_a_is_accepted(msc_a))
+ return NULL;
+ return msc_a;
+}
+
+int msc_tx_common_id(struct msc_a *msc_a, enum msc_role to_role)
+{
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct ran_msg msg = {
+ .msg_type = RAN_MSG_COMMON_ID,
+ .common_id = {
+ .imsi = vsub->imsi,
+ },
+ };
+
+ return msc_a_ran_down(msc_a, to_role, &msg);
+}
+
+static int msc_a_start_assignment(struct msc_a *msc_a, struct gsm_trans *cc_trans)
+{
+ struct call_leg *cl = msc_a->cc.call_leg;
+
+ OSMO_ASSERT(!msc_a->cc.active_trans);
+ msc_a->cc.active_trans = cc_trans;
+
+ OSMO_ASSERT(cc_trans && cc_trans->type == TRANS_CC);
+
+ if (!cl) {
+ cl = msc_a->cc.call_leg = call_leg_alloc(msc_a->c.fi,
+ MSC_EV_CALL_LEG_TERM,
+ MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,
+ MSC_EV_CALL_LEG_RTP_COMPLETE,
+ MSC_EV_CALL_LEG_RTP_RELEASED);
+ OSMO_ASSERT(cl);
+
+ /* HACK: We put the connection in loopback mode at the beginnig to
+ * trick the hNodeB into doing the IuUP negotiation with itself.
+ * This is a hack we need because osmo-mgw does not support IuUP yet, see OS#2459. */
+ if (msc_a->c.ran->type == OSMO_RAT_UTRAN_IU)
+ cl->crcx_conn_mode[RTP_TO_RAN] = MGCP_CONN_LOOPBACK;
+ }
+
+ /* This will lead to either MSC_EV_CALL_LEG_LOCAL_ADDR_AVAILABLE or MSC_EV_CALL_LEG_TERM.
+ * If the local address is already known, then immediately trigger. */
+ if (call_leg_local_ip(cl, RTP_TO_RAN))
+ return osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE, cl->rtp[RTP_TO_RAN]);
+ else
+ return call_leg_ensure_ci(msc_a->cc.call_leg, RTP_TO_RAN, cc_trans->callref, cc_trans, NULL, NULL);
+}
+
+int msc_a_try_call_assignment(struct gsm_trans *cc_trans)
+{
+ struct msc_a *msc_a = cc_trans->msc_a;
+ OSMO_ASSERT(cc_trans->type == TRANS_CC);
+
+ if (msc_a->cc.active_trans == cc_trans) {
+ /* Assignment for this trans already started earlier. */
+ return 0;
+ }
+
+ if (msc_a->cc.active_trans) {
+ LOG_MSC_A(msc_a, LOGL_INFO, "Another call is already ongoing, not assigning yet\n");
+ return 0;
+ }
+
+ LOG_MSC_A(msc_a, LOGL_DEBUG, "Starting call assignment\n");
+ return msc_a_start_assignment(msc_a, cc_trans);
+}
+
+const char *msc_a_cm_service_type_to_use(enum osmo_cm_service_type cm_service_type)
+{
+ switch (cm_service_type) {
+ case GSM48_CMSERV_MO_CALL_PACKET:
+ case GSM48_CMSERV_EMERGENCY:
+ return MSC_A_USE_CM_SERVICE_CC;
+
+ case GSM48_CMSERV_SMS:
+ return MSC_A_USE_CM_SERVICE_SMS;
+
+ case GSM48_CMSERV_SUP_SERV:
+ return MSC_A_USE_CM_SERVICE_SS;
+
+ default:
+ return NULL;
+ }
+}
+
+void msc_a_release_cn(struct msc_a *msc_a)
+{
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_CN_CLOSE, NULL);
+}
+
+void msc_a_release_mo(struct msc_a *msc_a, enum gsm48_gsm_cause gsm_cause)
+{
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_MO_CLOSE, NULL);
+}
diff --git a/src/libmsc/msc_a_remote.c b/src/libmsc/msc_a_remote.c
new file mode 100644
index 000000000..ce07e4a5f
--- /dev/null
+++ b/src/libmsc/msc_a_remote.c
@@ -0,0 +1,392 @@
+/* The MSC-A role implementation variant that forwards requests to/from a remote MSC. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <inttypes.h>
+
+#include <osmocom/core/fsm.h>
+#include <osmocom/gsm/gsup.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/msc_a_remote.h>
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/e_link.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/ran_peer.h>
+
+static struct osmo_fsm msc_a_remote_fsm;
+
+static struct msc_a *msc_a_remote_priv(struct osmo_fsm_inst *fi)
+{
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(fi->fsm == &msc_a_remote_fsm);
+ OSMO_ASSERT(fi->priv);
+ return fi->priv;
+}
+
+/* The idea is that this msc_a role is event-compatible to the "real" msc_a.c FSM, but instead of acting on the events
+ * directly, it forwards the events to a remote MSC-A role, via E-over-GSUP.
+ *
+ * [MSC-A---------------------] [MSC-B---------------------]
+ * msc_a <-- msc_{i,t}_remote <---GSUP---- msc_a_remote <-- msc_{i,t} <--BSSMAP--- [BSS]
+ * ^you are here
+ */
+static int msc_a_remote_msg_up_to_remote_msc(struct msc_a *msc_a,
+ enum msc_role from_role,
+ enum osmo_gsup_message_type message_type,
+ struct an_apdu *an_apdu)
+{
+ struct osmo_gsup_message m;
+ struct e_link *e = msc_a->c.remote_to;
+
+ if (!e) {
+ LOG_MSC_A_REMOTE(msc_a, LOGL_ERROR, "No E link to remote MSC, cannot send AN-APDU\n");
+ return -1;
+ }
+
+ if (e_prep_gsup_msg(e, from_role, &m)) {
+ LOG_MSC_A_REMOTE(msc_a, LOGL_ERROR, "Error composing E-interface GSUP message\n");
+ return -1;
+ }
+ m.message_type = message_type;
+ if (an_apdu) {
+ if (gsup_msg_assign_an_apdu(&m, an_apdu)) {
+ LOG_MSC_A_REMOTE(msc_a, LOGL_ERROR, "Error composing E-interface GSUP message\n");
+ return -1;
+ }
+ }
+
+ return e_tx(e, &m);
+}
+
+/* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_t_remote ----GSUP---> msc_a_remote --> msc_t ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+static void msc_a_remote_rx_gsup_to_msc_t(struct msc_a *msc_a, const struct osmo_gsup_message *gsup_msg)
+{
+ uint32_t event;
+ struct an_apdu an_apdu;
+
+ switch (gsup_msg->message_type) {
+ case OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST:
+ event = MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST:
+ case OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ event = MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_CLOSE:
+ case OSMO_GSUP_MSGT_E_ABORT:
+ case OSMO_GSUP_MSGT_E_ROUTING_ERROR:
+ /* TODO: maybe some non-"normal" release with error cause? */
+ msc_a_release_cn(msc_a);
+ return;
+
+ default:
+ LOG_MSC_A_REMOTE(msc_a, LOGL_ERROR, "Unhandled GSUP message type: %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ return;
+ };
+
+ gsup_msg_to_an_apdu(&an_apdu, gsup_msg);
+ msub_role_dispatch(msc_a->c.msub, MSC_ROLE_T, event, &an_apdu);
+ if (an_apdu.msg)
+ msgb_free(an_apdu.msg);
+}
+
+/* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_i_remote ----GSUP---> msc_a_remote --> msc_i ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+static void msc_a_remote_rx_gsup_to_msc_i(struct msc_a *msc_a, const struct osmo_gsup_message *gsup_msg)
+{
+ uint32_t event;
+ struct an_apdu an_apdu;
+
+ switch (gsup_msg->message_type) {
+ case OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ event = MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_ERROR:
+ case OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_RESULT:
+ event = MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE;
+ break;
+
+ case OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_RESULT:
+ case OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_ERROR:
+ event = MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT;
+ break;
+
+ case OSMO_GSUP_MSGT_E_CLOSE:
+ case OSMO_GSUP_MSGT_E_ABORT:
+ case OSMO_GSUP_MSGT_E_ROUTING_ERROR:
+ /* TODO: maybe some non-"normal" release with error cause? */
+ msc_a_release_cn(msc_a);
+ return;
+
+ default:
+ LOG_MSC_A_REMOTE(msc_a, LOGL_ERROR, "Unhandled GSUP message type: %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ return;
+ };
+
+ gsup_msg_to_an_apdu(&an_apdu, gsup_msg);
+ msub_role_dispatch(msc_a->c.msub, MSC_ROLE_I, event, &an_apdu);
+ if (an_apdu.msg)
+ msgb_free(an_apdu.msg);
+}
+
+static void msc_a_remote_send_handover_failure(struct msc_a *msc_a, enum gsm0808_cause cause)
+{
+ struct ran_msg ran_enc_msg = {
+ .msg_type = RAN_MSG_HANDOVER_FAILURE,
+ .handover_failure = {
+ .cause = cause,
+ },
+ };
+ struct an_apdu an_apdu = {
+ .an_proto = msc_a->c.ran->an_proto,
+ .msg = msc_role_ran_encode(msc_a->c.fi, &ran_enc_msg),
+ };
+ if (!an_apdu.msg)
+ return;
+
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_T, OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_ERROR, &an_apdu);
+ msgb_free(an_apdu.msg);
+ return;
+}
+
+/* [MSC-A---------------------] [MSC-B---------------------]
+ * msc_a --> msc_{i,t}_remote ----GSUP---> msc_a_remote --> msc_{i,t} ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+static void msc_a_remote_rx_gsup(struct msc_a *msc_a, const struct osmo_gsup_message *gsup_msg)
+{
+ struct msc_t *msc_t = msc_a_msc_t(msc_a);
+ struct msc_i *msc_i = msc_a_msc_i(msc_a);
+
+ /* If starting a new Handover, this subscriber *must* be new and completely unattached. Create a new msc_t role
+ * to receive below event. */
+ if (gsup_msg->message_type == OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST) {
+ if (msc_t || msc_i) {
+ LOG_MSC_A_REMOTE_CAT(msc_a, DLGSUP, LOGL_ERROR,
+ "Already have an MSC-T or -I role, cannot Rx %s from remote MSC\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ msc_a_remote_send_handover_failure(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE);
+ return;
+ }
+
+ msc_t = msc_t_alloc_without_ran_peer(msc_a->c.msub, msc_a->c.ran);
+ }
+
+ /* We are on a remote MSC-B. If an msub has an MSC-T role, this is the remote target of a handover, and all
+ * messages from MSC-A *must* be intended for the MSC-T role. As soon as the Handover is successful, the MSC-T
+ * role disappears and an MSC-I role appears. */
+ if (msc_t) {
+ LOG_MSC_A_REMOTE_CAT(msc_a, DLGSUP, LOGL_DEBUG, "Routing to MSC-T: %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ msc_a_remote_rx_gsup_to_msc_t(msc_a, gsup_msg);
+ } else if (msc_i) {
+ LOG_MSC_A_REMOTE_CAT(msc_a, DLGSUP, LOGL_DEBUG, "Routing to MSC-I: %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ msc_a_remote_rx_gsup_to_msc_i(msc_a, gsup_msg);
+ } else {
+ LOG_MSC_A_REMOTE_CAT(msc_a, DLGSUP, LOGL_ERROR,
+ "No MSC-T nor MSC-I role present, cannot Rx GSUP %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ }
+}
+
+static void msc_a_remote_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = msc_a_remote_priv(fi);
+ struct an_apdu *an_apdu;
+
+ switch (event) {
+
+ case MSC_REMOTE_EV_RX_GSUP:
+ /* [MSC-A---------------------] [MSC-B---------------------]
+ * msc_a --> msc_{i,t}_remote ----GSUP---> msc_a_remote --> msc_{i,t} ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+ msc_a_remote_rx_gsup(msc_a, (const struct osmo_gsup_message*)data);
+ return;
+
+ /* For all remaining cases:
+ * [MSC-A---------------------] [MSC-B---------------------]
+ * msc_a <-- msc_{i,t}_remote <---GSUP---- msc_a_remote <-- msc_{i,t} <--BSSMAP--- [BSS]
+ * you are here^
+ */
+
+ case MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_I,
+ OSMO_GSUP_MSGT_E_PROCESS_ACCESS_SIGNALLING_REQUEST, an_apdu);
+ return;
+
+ case MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_I,
+ OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_REQUEST, an_apdu);
+ return;
+
+ case MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_I,
+ OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST, an_apdu);
+ return;
+
+ case MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_T,
+ OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_RESULT, an_apdu);
+ return;
+
+ case MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_T,
+ OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_ERROR, an_apdu);
+ return;
+
+ case MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_T,
+ OSMO_GSUP_MSGT_E_PROCESS_ACCESS_SIGNALLING_REQUEST, an_apdu);
+ return;
+
+ case MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST:
+ an_apdu = data;
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_T,
+ OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST, an_apdu);
+ return;
+
+ case MSC_A_EV_CN_CLOSE:
+ case MSC_A_EV_MO_CLOSE:
+ osmo_fsm_inst_state_chg(msc_a->c.fi, MSC_A_ST_RELEASING, 0, 0);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void msc_a_remote_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, fi);
+}
+
+static void msc_a_remote_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_a *msc_a = msc_a_remote_priv(fi);
+ if (msc_a->c.msub->role[MSC_ROLE_I])
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_I, OSMO_GSUP_MSGT_E_CLOSE, NULL);
+ if (msc_a->c.msub->role[MSC_ROLE_T])
+ msc_a_remote_msg_up_to_remote_msc(msc_a, MSC_ROLE_T, OSMO_GSUP_MSGT_E_CLOSE, NULL);
+}
+
+#define S(x) (1 << (x))
+
+/* FSM events are by definition compatible with msc_a_fsm. States could be a separate enum, but so that
+ * msc_a_is_accepted() also works on remote msc_a, this FSM shares state numbers with the msc_a_fsm_states. */
+static const struct osmo_fsm_state msc_a_remote_fsm_states[] = {
+ /* Whichever MSC_A_ST would be the first for the real MSC-A implementation, a fresh FSM instance will start in
+ * state == 0 and we just need to be able to transition out of it. */
+ [0] = {
+ .name = "INIT-REMOTE",
+ .out_state_mask = 0
+ | S(MSC_A_ST_COMMUNICATING)
+ | S(MSC_A_ST_RELEASING)
+ ,
+ },
+ [MSC_A_ST_COMMUNICATING] = {
+ .name = "COMMUNICATING",
+ .action = msc_a_remote_fsm_communicating,
+ .in_event_mask = 0
+ | S(MSC_REMOTE_EV_RX_GSUP)
+ | S(MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST)
+ | S(MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE)
+ | S(MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE)
+ | S(MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST)
+ | S(MSC_A_EV_CN_CLOSE)
+ | S(MSC_A_EV_MO_CLOSE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_A_ST_RELEASING)
+ ,
+ },
+ [MSC_A_ST_RELEASING] = {
+ .name = "RELEASING",
+ .onenter = msc_a_remote_fsm_releasing_onenter,
+ },
+};
+
+static struct osmo_fsm msc_a_remote_fsm = {
+ .name = "msc_a_remote",
+ .states = msc_a_remote_fsm_states,
+ .num_states = ARRAY_SIZE(msc_a_remote_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msc_a_fsm_event_names,
+ .cleanup = msc_a_remote_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msc_a_remote_fsm_init(void)
+{
+ OSMO_ASSERT(osmo_fsm_register(&msc_a_remote_fsm) == 0);
+}
+
+struct msc_a *msc_a_remote_alloc(struct msub *msub, struct ran_infra *ran,
+ const uint8_t *remote_msc_name, size_t remote_msc_name_len)
+{
+ struct msc_a *msc_a;
+
+ msub_role_alloc(msub, MSC_ROLE_A, &msc_a_remote_fsm, struct msc_a, ran);
+ msc_a = msub_msc_a(msub);
+ if (!msc_a) {
+ LOG_MSUB(msub, LOGL_ERROR, "Error setting up MSC-A remote role\n");
+ return NULL;
+ }
+
+ msc_a->c.remote_to = e_link_alloc(msub_net(msub)->gcm, msc_a->c.fi, remote_msc_name, remote_msc_name_len);
+ if (!msc_a->c.remote_to) {
+ LOG_MSC_A_REMOTE(msc_a, LOGL_ERROR, "Failed to set up E link\n");
+ msc_a_release_cn(msc_a);
+ return NULL;
+ }
+
+ msc_a_update_id(msc_a);
+
+ /* Immediately get out of state 0. */
+ osmo_fsm_inst_state_chg(msc_a->c.fi, MSC_A_ST_COMMUNICATING, 0, 0);
+
+ return msc_a;
+}
diff --git a/src/libmsc/msc_ho.c b/src/libmsc/msc_ho.c
new file mode 100644
index 000000000..9d130c57c
--- /dev/null
+++ b/src/libmsc/msc_ho.c
@@ -0,0 +1,879 @@
+/* MSC Handover implementation */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <osmocom/core/fsm.h>
+#include <osmocom/gsm/protocol/gsm_08_08.h>
+#include <osmocom/sigtran/sccp_helpers.h>
+
+#include <osmocom/msc/msc_ho.h>
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/e_link.h>
+#include <osmocom/msc/msc_i_remote.h>
+#include <osmocom/msc/msc_t_remote.h>
+#include <osmocom/msc/neighbor_ident.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/transaction.h>
+#include <osmocom/msc/gsm_04_08.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
+#include <osmocom/msc/mncc_call.h>
+
+struct osmo_fsm msc_ho_fsm;
+
+#define MSC_A_USE_HANDOVER "Handover"
+
+static const struct osmo_tdef_state_timeout msc_ho_fsm_timeouts[32] = {
+ [MSC_HO_ST_REQUIRED] = { .keep_timer = true, .T = -3 },
+ [MSC_HO_ST_WAIT_REQUEST_ACK] = { .keep_timer = true },
+ [MSC_HO_ST_WAIT_COMPLETE] = { .T = -3 },
+};
+
+/* Transition to a state, using the T timer defined in msc_a_fsm_timeouts.
+ * The actual timeout value is in turn obtained from network->T_defs.
+ * Assumes local variable fi exists. */
+#define msc_ho_fsm_state_chg(msc_a, state) \
+ osmo_tdef_fsm_inst_state_chg((msc_a)->ho.fi, state, msc_ho_fsm_timeouts, (msc_a)->c.ran->tdefs, 5)
+
+static __attribute__((constructor)) void msc_ho_fsm_init()
+{
+ osmo_fsm_register(&msc_ho_fsm);
+}
+
+void msc_ho_down_required_reject(struct msc_a *msc_a, enum gsm0808_cause cause)
+{
+ struct msc_i *msc_i = msc_a_msc_i(msc_a);
+ uint32_t event;
+
+ struct ran_msg ran_enc_msg = {
+ .msg_type = RAN_MSG_HANDOVER_REQUIRED_REJECT,
+ .handover_required_reject = {
+ .cause = cause,
+ },
+ };
+
+ if (msc_i->c.remote_to)
+ event = MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR;
+ else
+ event = MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST;
+
+ msc_a_msg_down(msc_a, MSC_ROLE_I, event, &ran_enc_msg);
+}
+
+/* Even though this is using the 3GPP TS 48.008 definitions and naming, the intention is to be RAN implementation agnostic.
+ * For other RAN types, the 48.008 items shall be translated to their respective counterparts. */
+void msc_ho_start(struct msc_a *msc_a, const struct ran_handover_required *ho_req)
+{
+ if (msc_a->ho.fi) {
+ LOG_HO(msc_a, LOGL_ERROR, "Rx Handover Required, but Handover is still ongoing\n");
+ msc_ho_down_required_reject(msc_a, GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC);
+ return;
+ }
+
+ if (!ho_req->cil.id_list_len) {
+ LOG_HO(msc_a, LOGL_ERROR, "Rx Handover Required without a Cell Identifier List\n");
+ msc_ho_down_required_reject(msc_a, GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING);
+ return;
+ }
+
+ if (msc_a_msc_t(msc_a)) {
+ LOG_HO(msc_a, LOGL_ERROR,
+ "Rx Handover Required, but this subscriber still has an active MSC-T role: %s\n",
+ msc_a_msc_t(msc_a)->c.fi->id);
+ /* Protocol error because the BSS is not supposed to send another Handover Required before the previous
+ * attempt has concluded. */
+ msc_ho_down_required_reject(msc_a, GSM0808_CAUSE_PROTOCOL_ERROR_BETWEEN_BSS_AND_MSC);
+ return;
+ }
+
+ /* Paranoia: make sure we start with clean state */
+ msc_a->ho = (struct msc_ho_state){};
+
+ msc_a->ho.fi = osmo_fsm_inst_alloc_child(&msc_ho_fsm, msc_a->c.fi, MSC_A_EV_HANDOVER_END);
+ OSMO_ASSERT(msc_a->ho.fi);
+
+ msc_a->ho.fi->priv = msc_a;
+ msc_a->ho.info = *ho_req;
+ msc_a->ho.next_cil_idx = 0;
+
+ /* Start the timeout */
+ msc_ho_fsm_state_chg(msc_a, MSC_HO_ST_REQUIRED);
+}
+
+static void msc_ho_rtp_rollback_to_old_cell(struct msc_a *msc_a);
+
+static void msc_ho_end(struct msc_a *msc_a, bool success, enum gsm0808_cause cause)
+{
+ struct msc_i *msc_i;
+ struct msc_t *msc_t = msc_a_msc_t(msc_a);
+
+ if (!success) {
+ msc_ho_rtp_rollback_to_old_cell(msc_a);
+ msc_ho_down_required_reject(msc_a, cause);
+ }
+
+ if (success) {
+ /* Any previous call forwarding to a remote MSC becomes obsolete. */
+ if (msc_a->cc.mncc_forwarding_to_remote_ran) {
+ mncc_call_release(msc_a->cc.mncc_forwarding_to_remote_ran);
+ msc_a->cc.mncc_forwarding_to_remote_ran = NULL;
+ }
+
+ /* Replace MSC-I with new MSC-T */
+ if (msc_t->c.remote_to) {
+ /* Inter-MSC Handover. */
+
+ /* The MNCC forwarding set up for inter-MSC handover, so far transitional in msc_a->ho now
+ * becomes the "officially" active MNCC forwarding for this call. */
+ msc_a->cc.mncc_forwarding_to_remote_ran = msc_a->ho.new_cell.mncc_forwarding_to_remote_ran;
+ msc_a->ho.new_cell.mncc_forwarding_to_remote_ran = NULL;
+ mncc_call_reparent(msc_a->cc.mncc_forwarding_to_remote_ran,
+ msc_a->c.fi, -1, MSC_MNCC_EV_CALL_ENDED, NULL, NULL);
+
+ /* inter-MSC link. msc_i_remote_alloc() properly "steals" the e_link from msc_t. */
+ msc_i = msc_i_remote_alloc(msc_a->c.msub, msc_t->c.ran, msc_t->c.remote_to);
+ OSMO_ASSERT(msc_t->c.remote_to == NULL);
+ } else {
+ /* local BSS */
+ msc_i = msc_i_alloc(msc_a->c.msub, msc_t->c.ran);
+ /* msc_i_set_ran_conn() properly "steals" the ran_conn from msc_t */
+ msc_i_set_ran_conn(msc_i, msc_t->ran_conn);
+ }
+ }
+
+ osmo_fsm_inst_term(msc_a->ho.fi, OSMO_FSM_TERM_REGULAR, NULL);
+}
+
+#define msc_ho_failed(msc_a, cause, fmt, args...) do { \
+ LOG_HO(msc_a, LOGL_ERROR, fmt, ##args); \
+ msc_ho_end(msc_a, false, cause); \
+ } while(0)
+#define msc_ho_try_next_cell(msc_a, fmt, args...) do {\
+ LOG_HO(msc_a, LOGL_ERROR, fmt, ##args); \
+ msc_ho_fsm_state_chg(msc_a, MSC_HO_ST_REQUIRED); \
+ } while(0)
+#define msc_ho_success(msc_a) msc_ho_end(msc_a, true, 0)
+
+enum msc_neighbor_type msc_ho_find_target_cell(struct msc_a *msc_a, const struct gsm0808_cell_id *cid,
+ const struct neighbor_ident_entry **remote_msc,
+ struct ran_peer **ran_peer_from_neighbor_ident,
+ struct ran_peer **ran_peer_from_seen_cells)
+{
+ struct gsm_network *net = msc_a_net(msc_a);
+ const struct neighbor_ident_entry *e;
+ struct sccp_ran_inst *sri;
+ struct ran_peer *rp_from_neighbor_ident = NULL;
+ struct ran_peer *rp_from_cell_id = NULL;
+ struct ran_peer *rp;
+ int i;
+
+ OSMO_ASSERT(remote_msc);
+ OSMO_ASSERT(ran_peer_from_neighbor_ident);
+ OSMO_ASSERT(ran_peer_from_seen_cells);
+
+ e = neighbor_ident_find_by_cell(&net->neighbor_ident_list, msc_a->c.ran->type, cid);
+
+ if (e && e->addr.type == MSC_NEIGHBOR_TYPE_REMOTE_MSC) {
+ *remote_msc = e;
+ return MSC_NEIGHBOR_TYPE_REMOTE_MSC;
+ }
+
+ /* It is not a remote MSC target. Figure out local RAN peers. */
+
+ if (e && e->addr.type == MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER) {
+ /* Find local RAN peer in neighbor config. If anything is wrong with that, just keep
+ * rp_from_neighbor_ident == NULL. */
+
+ struct sccp_ran_inst *sri_from_neighbor_ident = NULL;
+ struct osmo_ss7_instance *ss7 = NULL;
+
+ /* Get the sccp_ran_inst with sanity checkin. If anything is fishy, just keep
+ * sri_from_neighbor_ident == NULL and below code will notice the error. */
+ if (e->addr.ran_type < msc_ran_infra_len) {
+ sri_from_neighbor_ident = msc_ran_infra[e->addr.ran_type].sri;
+ ss7 = osmo_sccp_get_ss7(sri_from_neighbor_ident->sccp);
+ if (!ss7)
+ sri_from_neighbor_ident = NULL;
+ }
+
+ if (!sri_from_neighbor_ident) {
+ LOG_HO(msc_a, LOGL_ERROR, "Cannot handover to RAN type %s\n", osmo_rat_type_name(e->addr.ran_type));
+ } else {
+ /* Interpret the point-code string placed in the neighbors config. */
+ int pc = osmo_ss7_pointcode_parse(ss7, e->addr.local_ran_peer_pc_str);
+
+ if (pc < 0) {
+ LOG_HO(msc_a, LOGL_ERROR, "Invalid point code string: %s\n",
+ osmo_quote_str(e->addr.local_ran_peer_pc_str, -1));
+ } else {
+ struct osmo_sccp_addr addr = {};
+ osmo_sccp_make_addr_pc_ssn(&addr, pc, sri_from_neighbor_ident->ran->ssn);
+ rp_from_neighbor_ident = ran_peer_find_by_addr(sri_from_neighbor_ident, &addr);
+ }
+ }
+
+ if (!rp_from_neighbor_ident) {
+ LOG_HO(msc_a, LOGL_ERROR, "Target RAN peer from neighbor config is not connected:"
+ " Cell ID %s resolves to target address %s\n",
+ gsm0808_cell_id_name(cid), e->addr.local_ran_peer_pc_str);
+ } else if (rp_from_neighbor_ident->fi->state != RAN_PEER_ST_READY) {
+ LOG_HO(msc_a, LOGL_ERROR, "Target RAN peer in invalid state: %s (%s)\n",
+ osmo_fsm_inst_state_name(rp_from_neighbor_ident->fi),
+ rp_from_neighbor_ident->fi->id);
+ rp_from_neighbor_ident = NULL;
+ }
+ }
+
+ /* Figure out actually connected RAN peers for this cell ID.
+ * If no cell has been found yet at all, this might determine a Handover target,
+ * otherwise this is for sanity checking. If none is found, just keep rp_from_cell_id == NULL. */
+
+ /* Iterate all connected RAN peers. Possibly, more than one RAN peer has advertised a match for this Cell ID.
+ * For example, if the handover target is identified as LAC=23 but there are multiple cells with distinct CIs
+ * serving in LAC=23, we have an ambiguity. It's up to the user to configure correctly, help with logging. */
+ for (i = 0; i < msc_ran_infra_len; i++) {
+ sri = msc_ran_infra[i].sri;
+ if (!sri)
+ continue;
+
+ rp = ran_peer_find_by_cell_id(sri, cid, true);
+ if (rp && rp->fi && rp->fi->state == RAN_PEER_ST_READY) {
+ if (rp_from_cell_id) {
+ LOG_HO(msc_a, LOGL_ERROR,
+ "Ambiguous match for cell ID %s: more than one RAN type is serving this cell"
+ " ID: %s and %s\n",
+ gsm0808_cell_id_name(cid),
+ rp_from_cell_id->fi->id,
+ rp->fi->id);
+ /* But logging is all we're going to do about it. */
+ }
+
+ /* Use the first found RAN peer, but if multiple matches are found, favor the one that matches
+ * the current RAN type. */
+ if (!rp_from_cell_id || rp->sri == msc_a->c.ran->sri)
+ rp_from_cell_id = rp;
+ }
+ }
+
+ /* Did we find mismatching targets from neighbor config and from connected cells? */
+ if (rp_from_neighbor_ident && rp_from_cell_id
+ && rp_from_neighbor_ident != rp_from_cell_id) {
+ LOG_HO(msc_a, LOGL_ERROR, "Ambiguous match for cell ID %s:"
+ " neighbor config points at %s; a matching cell is also served by connected RAN peer %s\n",
+ gsm0808_cell_id_name(cid), rp_from_neighbor_ident->fi->id, rp_from_cell_id->fi->id);
+ /* But logging is all we're going to do about it. */
+ }
+
+ if (rp_from_neighbor_ident && rp_from_neighbor_ident->sri != msc_a->c.ran->sri) {
+ LOG_HO(msc_a, LOGL_ERROR,
+ "Neighbor config indicates inter-RAT Handover, which is not implemented. Ignoring target %s\n",
+ rp_from_neighbor_ident->fi->id);
+ rp_from_neighbor_ident = NULL;
+ }
+
+ if (rp_from_cell_id && rp_from_cell_id->sri != msc_a->c.ran->sri) {
+ LOG_HO(msc_a, LOGL_ERROR,
+ "Target RAN peer indicates inter-RAT Handover, which is not implemented. Ignoring target %s\n",
+ rp_from_cell_id->fi->id);
+ rp_from_cell_id = NULL;
+ }
+
+ *ran_peer_from_neighbor_ident = rp_from_neighbor_ident;
+ *ran_peer_from_seen_cells = rp_from_cell_id;
+
+ return rp_from_neighbor_ident || rp_from_cell_id ? MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER : MSC_NEIGHBOR_TYPE_NONE;
+}
+
+static bool msc_ho_find_next_target_cell(struct msc_a *msc_a)
+{
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct ran_handover_required *info = &msc_a->ho.info;
+ struct gsm0808_cell_id *cid = &msc_a->ho.new_cell.cid;
+ const struct neighbor_ident_entry *e;
+ struct ran_peer *rp_from_neighbor_ident = NULL;
+ struct ran_peer *rp_from_cell_id = NULL;
+ struct ran_peer *rp;
+
+ unsigned int cil_idx = msc_a->ho.next_cil_idx;
+ msc_a->ho.next_cil_idx++;
+
+ msc_a->ho.new_cell.type = MSC_NEIGHBOR_TYPE_NONE;
+
+ if (cil_idx >= info->cil.id_list_len)
+ return false;
+
+ *cid = (struct gsm0808_cell_id){
+ .id_discr = info->cil.id_discr,
+ .id = info->cil.id_list[cil_idx],
+ };
+
+ msc_a->ho.new_cell.cgi = (struct osmo_cell_global_id){
+ .lai = vsub->cgi.lai,
+ };
+ gsm0808_cell_id_to_cgi(&msc_a->ho.new_cell.cgi, cid);
+
+ switch (msc_ho_find_target_cell(msc_a, cid, &e, &rp_from_neighbor_ident, &rp_from_cell_id)) {
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ OSMO_ASSERT(e);
+ msc_a->ho.new_cell.ran_type = e->addr.ran_type;
+ msc_a->ho.new_cell.type = MSC_NEIGHBOR_TYPE_REMOTE_MSC;
+ msc_a->ho.new_cell.msc_ipa_name = e->addr.remote_msc_ipa_name.buf;
+ return true;
+
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ rp = rp_from_neighbor_ident ? : rp_from_cell_id;
+ OSMO_ASSERT(rp);
+ msc_a->ho.new_cell.type = MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER;
+ msc_a->ho.new_cell.ran_peer = rp;
+ return true;
+
+ default:
+ break;
+ }
+
+ LOG_HO(msc_a, LOGL_DEBUG, "Cannot find target peer for cell ID %s\n", gsm0808_cell_id_name(cid));
+ /* Try the next cell id, if any. */
+ return msc_ho_find_next_target_cell(msc_a);
+}
+
+static void msc_ho_fsm_required_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ if (!msc_ho_find_next_target_cell(msc_a)) {
+ int tried = msc_a->ho.next_cil_idx - 1;
+ msc_ho_failed(msc_a, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE,
+ "Attempted Handover to %u cells without success\n", tried);
+ return;
+ }
+
+ msc_ho_fsm_state_chg(msc_a, MSC_HO_ST_WAIT_REQUEST_ACK);
+}
+
+static void msc_ho_send_handover_request(struct msc_a *msc_a)
+{
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct gsm0808_channel_type channel_type;
+ struct ran_msg ran_enc_msg = {
+ .msg_type = RAN_MSG_HANDOVER_REQUEST,
+ .handover_request = {
+ .imsi = vsub->imsi,
+ .classmark = &vsub->classmark,
+ .geran = {
+ .chosen_encryption = &msc_a->geran_encr,
+ .a5_encryption_mask = net->a5_encryption_mask,
+ },
+ .bssap_cause = GSM0808_CAUSE_BETTER_CELL,
+ .current_channel_type_1_present = msc_a->ho.info.current_channel_type_1_present,
+ .current_channel_type_1 = msc_a->ho.info.current_channel_type_1,
+ .speech_version_used = msc_a->ho.info.speech_version_used,
+ .old_bss_to_new_bss_info_raw = msc_a->ho.info.old_bss_to_new_bss_info_raw,
+ .old_bss_to_new_bss_info_raw_len = msc_a->ho.info.old_bss_to_new_bss_info_raw_len,
+
+ /* Don't send AoIP Transport Layer Address for inter-MSC Handover */
+ .rtp_ran_local = (msc_a->ho.new_cell.type == MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER)
+ ? call_leg_local_ip(msc_a->cc.call_leg, RTP_TO_RAN) : NULL,
+ },
+ };
+
+ if (msc_a->cc.active_trans) {
+ if (mncc_bearer_cap_to_channel_type(&channel_type, &msc_a->cc.active_trans->bearer_cap)) {
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ "Failed to encode Bearer Cap to Channel Type\n");
+ return;
+ }
+ ran_enc_msg.handover_request.geran.channel_type = &channel_type;
+ }
+
+ gsm0808_cell_id_from_cgi(&ran_enc_msg.handover_request.cell_id_serving, CELL_IDENT_WHOLE_GLOBAL, &vsub->cgi);
+ ran_enc_msg.handover_request.cell_id_target = msc_a->ho.new_cell.cid;
+
+ if (msc_a_msg_down(msc_a, MSC_ROLE_T, MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST, &ran_enc_msg))
+ msc_ho_try_next_cell(msc_a, "Failed to send Handover Request message\n");
+}
+
+static void msc_ho_fsm_wait_request_ack_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct msc_i *msc_i = msc_a_msc_i(msc_a);
+ struct msc_t *msc_t;
+ struct ran_peer *rp;
+ const char *ipa_name;
+
+ msc_t = msc_a_msc_t(msc_a);
+ if (msc_t) {
+ /* All the other code should prevent this from happening, ever. */
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ "Cannot initiate Handover Request, there still is an active MSC-T role: %s\n",
+ msc_t->c.fi->id);
+ return;
+ }
+
+ if (!msc_i) {
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ "Cannot initiate Handover Request, there is no MSC-I role\n");
+ return;
+ }
+
+ if (!msc_i->c.remote_to
+ && !(msc_i->ran_conn && msc_i->ran_conn->ran_peer)) {
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ "Cannot initiate Handover Request, MSC-I role has no connection\n");
+ return;
+ }
+
+ switch (msc_a->ho.new_cell.type) {
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ rp = msc_a->ho.new_cell.ran_peer;
+ OSMO_ASSERT(rp && rp->fi);
+
+ if (msc_i->c.remote_to) {
+ LOG_HO(msc_a, LOGL_INFO,
+ "Starting inter-MSC Subsequent Handover from remote MSC %s to local %s\n",
+ msc_i->c.remote_to->remote_name, rp->fi->id);
+ msc_a->ho.subsequent_ho = true;
+ } else {
+ LOG_HO(msc_a, LOGL_INFO, "Starting inter-BSC Handover from %s to %s\n",
+ msc_i->ran_conn->ran_peer->fi->id, rp->fi->id);
+ }
+
+ msc_t_alloc(msc_a->c.msub, rp);
+ msc_ho_send_handover_request(msc_a);
+ return;
+
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ ipa_name = msc_a->ho.new_cell.msc_ipa_name;
+ OSMO_ASSERT(ipa_name);
+
+ if (msc_i->c.remote_to) {
+ LOG_HO(msc_a, LOGL_INFO,
+ "Starting inter-MSC Subsequent Handover from remote MSC %s to remote MSC at %s\n",
+ msc_i->c.remote_to->remote_name, osmo_quote_str(ipa_name, -1));
+ msc_a->ho.subsequent_ho = true;
+ } else {
+ LOG_HO(msc_a, LOGL_INFO, "Starting inter-MSC Handover from local %s to remote MSC at %s\n",
+ msc_i->ran_conn->ran_peer->fi->id,
+ osmo_quote_str(ipa_name, -1));
+ }
+
+ msc_t_remote_alloc(msc_a->c.msub, msc_a->c.ran, (const uint8_t*)ipa_name, strlen(ipa_name));
+ msc_ho_send_handover_request(msc_a);
+ return;
+
+ default:
+ msc_ho_try_next_cell(msc_a, "unknown Handover target type %d\n", msc_a->ho.new_cell.type);
+ return;
+ }
+
+ msc_t = msc_a_msc_t(msc_a);
+ if (!msc_t) {
+ /* There should definitely be one now. */
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ "Cannot initiate Handover Request, failed to set up a target MSC-T\n");
+ return;
+ }
+}
+
+static void msc_ho_rx_request_ack(struct msc_a *msc_a, struct msc_a_ran_dec_data *hra);
+
+static void msc_ho_fsm_wait_request_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ switch (event) {
+
+ case MSC_HO_EV_RX_REQUEST_ACK:
+ msc_ho_rx_request_ack(msc_a, (struct msc_a_ran_dec_data*)data);
+ return;
+
+ case MSC_HO_EV_RX_FAILURE:
+ msc_ho_failed(msc_a, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE,
+ "Received Handover Failure message\n");
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void msc_ho_rtp_switch_to_new_cell(struct msc_a *msc_a);
+
+void msc_ho_mncc_forward_cb(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg, void *data)
+{
+ struct msc_a *msc_a = data;
+ switch (mncc_msg->msg_type) {
+ case MNCC_RTP_CONNECT:
+ msc_a->ho.rtp_switched_to_new_cell = true;
+ return;
+ default:
+ return;
+ }
+}
+
+/* Initiate call forwarding via MNCC: call the Handover Number that the other MSC assigned. */
+static int msc_ho_start_inter_msc_call_forwarding(struct msc_a *msc_a, struct msc_t *msc_t,
+ const struct msc_a_ran_dec_data *hra)
+{
+ const struct osmo_gsup_message *e_info = hra->an_apdu->e_info;
+ struct gsm_mncc outgoing_call_req = {};
+ struct call_leg *cl = msc_a->cc.call_leg;
+ struct rtp_stream *rtp_to_ran = cl ? cl->rtp[RTP_TO_RAN] : NULL;
+ struct mncc_call *mncc_call;
+
+ if (!e_info || !e_info->msisdn_enc || !e_info->msisdn_enc_len) {
+ msc_ho_try_next_cell(msc_a,
+ "No Handover Number in Handover Request Acknowledge from remote MSC\n");
+ return -EINVAL;
+ }
+
+ /* Backup old cell's RTP IP:port and codec data */
+ msc_a->ho.old_cell.ran_remote_rtp = rtp_to_ran->remote;
+ msc_a->ho.old_cell.codec = rtp_to_ran->codec;
+
+ /* Blindly taken over from an MNCC trace of existing code: send an all-zero CCCAP: */
+ outgoing_call_req.fields |= MNCC_F_CCCAP;
+
+ /* Called number */
+ outgoing_call_req.fields |= MNCC_F_CALLED;
+ outgoing_call_req.called.plan = 1; /* Empirical magic number. There seem to be no enum or defines for this.
+ * The only other place setting this apparently is gsm48_decode_called(). */
+ if (gsm48_decode_bcd_number2(outgoing_call_req.called.number, sizeof(outgoing_call_req.called.number),
+ e_info->msisdn_enc, e_info->msisdn_enc_len, 0)) {
+ msc_ho_try_next_cell(msc_a,
+ "Failed to decode Handover Number in Handover Request Acknowledge"
+ " from remote MSC\n");
+ return -EINVAL;
+ }
+
+ if (msc_a->cc.active_trans) {
+ outgoing_call_req.fields |= MNCC_F_BEARER_CAP;
+ outgoing_call_req.bearer_cap = msc_a->cc.active_trans->bearer_cap;
+ }
+
+ mncc_call = mncc_call_alloc(msc_a_vsub(msc_a),
+ msc_a->ho.fi,
+ MSC_HO_EV_MNCC_FORWARDING_COMPLETE,
+ MSC_HO_EV_MNCC_FORWARDING_FAILED,
+ msc_ho_mncc_forward_cb, msc_a);
+
+ mncc_call_set_rtp_stream(mncc_call, rtp_to_ran);
+ msc_a->ho.new_cell.mncc_forwarding_to_remote_ran = mncc_call;
+ return mncc_call_outgoing_start(mncc_call, &outgoing_call_req);
+}
+
+static void msc_ho_rx_request_ack(struct msc_a *msc_a, struct msc_a_ran_dec_data *hra)
+{
+ struct msc_t *msc_t = msc_a_msc_t(msc_a);
+ struct ran_msg ran_enc_msg;
+
+ OSMO_ASSERT(hra->ran_dec);
+ OSMO_ASSERT(hra->an_apdu);
+
+ if (!msc_t) {
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE, "MSC-T role missing\n");
+ return;
+ }
+
+ if (!hra->ran_dec->handover_request_ack.rr_ho_command
+ || !hra->ran_dec->handover_request_ack.rr_ho_command_len) {
+ msc_ho_try_next_cell(msc_a, "Missing mandatory IE in Handover Request Acknowledge:"
+ " L3 Info (RR Handover Command)\n");
+ return;
+ }
+
+ if (!hra->ran_dec->handover_request_ack.chosen_channel_present) {
+ LOG_HO(msc_a, LOGL_DEBUG, "No 'Chosen Channel' IE in Handover Request Ack\n");
+ msc_t->geran.chosen_channel = 0;
+ } else
+ msc_t->geran.chosen_channel = hra->ran_dec->handover_request_ack.chosen_channel;
+
+ if (!hra->ran_dec->handover_request_ack.chosen_encr_alg) {
+ LOG_HO(msc_a, LOGL_DEBUG, "No 'Chosen Encryption Algorithm' IE in Handover Request Ack\n");
+ msc_t->geran.chosen_encr_alg = 0;
+ } else {
+ msc_t->geran.chosen_encr_alg = hra->ran_dec->handover_request_ack.chosen_encr_alg;
+ if (msc_t->geran.chosen_encr_alg < 1 || msc_t->geran.chosen_encr_alg > 8) {
+ msc_ho_try_next_cell(msc_a, "Handover Request Ack: Invalid 'Chosen Encryption Algorithm': %u\n",
+ msc_t->geran.chosen_encr_alg);
+ return;
+ }
+ }
+
+ msc_t->geran.chosen_speech_version = hra->ran_dec->handover_request_ack.chosen_speech_version;
+ if (!msc_t->geran.chosen_speech_version)
+ LOG_HO(msc_a, LOGL_DEBUG, "No 'Chosen Speech Version' IE in Handover Request Ack\n");
+
+ /* Inter-MSC call forwarding? */
+ if (msc_a->ho.new_cell.type == MSC_NEIGHBOR_TYPE_REMOTE_MSC) {
+ if (msc_ho_start_inter_msc_call_forwarding(msc_a, msc_t, hra))
+ return;
+ }
+
+ msc_ho_fsm_state_chg(msc_a, MSC_HO_ST_WAIT_COMPLETE);
+
+ /* Forward the RR Handover Command composed by the new RAN peer down to the old RAN peer */
+ ran_enc_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_HANDOVER_COMMAND,
+ .handover_command = {
+ .rr_ho_command = hra->ran_dec->handover_request_ack.rr_ho_command,
+ .rr_ho_command_len = hra->ran_dec->handover_request_ack.rr_ho_command_len,
+ },
+ };
+
+ if (msc_a_msg_down(msc_a, MSC_ROLE_I,
+ msc_a->ho.subsequent_ho ? MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT
+ : MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST,
+ &ran_enc_msg)) {
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE, "Failed to send Handover Command\n");
+ return;
+ }
+
+ msc_a->ho.new_cell.ran_remote_rtp = hra->ran_dec->handover_request_ack.remote_rtp;
+ if (osmo_sockaddr_str_is_set(&msc_a->ho.new_cell.ran_remote_rtp)) {
+ LOG_HO(msc_a, LOGL_DEBUG, "Request Ack contains cell's RTP address " OSMO_SOCKADDR_STR_FMT "\n",
+ OSMO_SOCKADDR_STR_FMT_ARGS(&msc_a->ho.new_cell.ran_remote_rtp));
+ }
+
+ msc_a->ho.new_cell.codec_present = hra->ran_dec->handover_request_ack.codec_present;
+ msc_a->ho.new_cell.codec = hra->ran_dec->handover_request_ack.codec;
+ if (hra->ran_dec->handover_request_ack.codec_present) {
+ LOG_HO(msc_a, LOGL_DEBUG, "Request Ack contains codec %s\n",
+ osmo_mgcpc_codec_name(msc_a->ho.new_cell.codec));
+ }
+}
+
+static void msc_ho_rtp_switch_to_new_cell(struct msc_a *msc_a)
+{
+ struct call_leg *cl = msc_a->cc.call_leg;
+ struct rtp_stream *rtp_to_ran = cl ? cl->rtp[RTP_TO_RAN] : NULL;
+
+ if (!rtp_to_ran) {
+ LOG_HO(msc_a, LOGL_DEBUG, "No RTP stream, nothing to switch\n");
+ return;
+ }
+
+ if (!osmo_sockaddr_str_is_set(&msc_a->ho.new_cell.ran_remote_rtp)) {
+ LOG_HO(msc_a, LOGL_DEBUG, "New cell's RTP IP:port not yet known, not switching RTP stream\n");
+ return;
+ }
+
+ if (msc_a->ho.rtp_switched_to_new_cell) {
+ LOG_HO(msc_a, LOGL_DEBUG, "Already switched RTP to new cell\n");
+ return;
+ }
+ msc_a->ho.rtp_switched_to_new_cell = true;
+
+ /* Backup old cell's RTP IP:port and codec data */
+ msc_a->ho.old_cell.ran_remote_rtp = rtp_to_ran->remote;
+ msc_a->ho.old_cell.codec = rtp_to_ran->codec;
+
+ LOG_HO(msc_a, LOGL_DEBUG, "Switching RTP stream to new cell: from " OSMO_SOCKADDR_STR_FMT " to " OSMO_SOCKADDR_STR_FMT "\n",
+ OSMO_SOCKADDR_STR_FMT_ARGS(&msc_a->ho.old_cell.ran_remote_rtp),
+ OSMO_SOCKADDR_STR_FMT_ARGS(&msc_a->ho.new_cell.ran_remote_rtp));
+
+ /* If a previous forwarding to a remote MSC is still active, this now becomes no longer responsible for the RTP
+ * stream. */
+ if (msc_a->cc.mncc_forwarding_to_remote_ran) {
+ if (msc_a->cc.mncc_forwarding_to_remote_ran->rtps != rtp_to_ran) {
+ LOG_HO(msc_a, LOGL_ERROR,
+ "Unexpected state: previous MNCC forwarding not using RTP-to-RAN stream\n");
+ /* That would be weird, but carry on anyway... */
+ }
+ mncc_call_detach_rtp_stream(msc_a->cc.mncc_forwarding_to_remote_ran);
+ }
+
+ /* Switch over to the new peer */
+ rtp_stream_set_remote_addr(rtp_to_ran, &msc_a->ho.new_cell.ran_remote_rtp);
+ if (msc_a->ho.new_cell.codec_present)
+ rtp_stream_set_codec(rtp_to_ran, msc_a->ho.new_cell.codec);
+ else
+ LOG_HO(msc_a, LOGL_ERROR, "No codec is set\n");
+ rtp_stream_commit(rtp_to_ran);
+}
+
+static void msc_ho_rtp_rollback_to_old_cell(struct msc_a *msc_a)
+{
+ struct call_leg *cl = msc_a->cc.call_leg;
+ struct rtp_stream *rtp_to_ran = cl ? cl->rtp[RTP_TO_RAN] : NULL;
+
+ if (!msc_a->ho.rtp_switched_to_new_cell) {
+ LOG_HO(msc_a, LOGL_DEBUG, "Not switched RTP to new cell yet, no need to roll back\n");
+ return;
+ }
+
+ if (!rtp_to_ran) {
+ LOG_HO(msc_a, LOGL_DEBUG, "No RTP stream, nothing to switch\n");
+ return;
+ }
+
+ if (!osmo_sockaddr_str_is_set(&msc_a->ho.old_cell.ran_remote_rtp)) {
+ LOG_HO(msc_a, LOGL_DEBUG, "Have no RTP IP:port for the old cell, not switching back to\n");
+ return;
+ }
+
+ /* The new call forwarding to a remote MSC is no longer needed because the handover failed */
+ if (msc_a->ho.new_cell.mncc_forwarding_to_remote_ran)
+ mncc_call_detach_rtp_stream(msc_a->ho.new_cell.mncc_forwarding_to_remote_ran);
+
+ /* If before this handover, there was a call forwarding to a remote MSC in place, this now goes back into
+ * responsibility. */
+ if (msc_a->cc.mncc_forwarding_to_remote_ran)
+ mncc_call_set_rtp_stream(msc_a->cc.mncc_forwarding_to_remote_ran, rtp_to_ran);
+
+ msc_a->ho.rtp_switched_to_new_cell = false;
+ msc_a->ho.ready_to_switch_rtp = false;
+ LOG_HO(msc_a, LOGL_NOTICE, "Switching RTP back to old cell\n");
+
+ /* Switch back to the old cell */
+ rtp_stream_set_remote_addr(rtp_to_ran, &msc_a->ho.old_cell.ran_remote_rtp);
+ rtp_stream_set_codec(rtp_to_ran, msc_a->ho.old_cell.codec);
+ rtp_stream_commit(rtp_to_ran);
+}
+
+static void msc_ho_send_handover_succeeded(struct msc_a *msc_a)
+{
+ struct ran_msg ran_enc_msg = {
+ .msg_type = RAN_MSG_HANDOVER_SUCCEEDED,
+ };
+
+ if (msc_a_msg_down(msc_a, MSC_ROLE_I, MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST, &ran_enc_msg))
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE, "Failed to send Handover Succeeded message\n");
+}
+
+static void msc_ho_fsm_wait_complete(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_a *msc_a = fi->priv;
+
+ switch (event) {
+
+ case MSC_HO_EV_RX_DETECT:
+ msc_a->ho.ready_to_switch_rtp = true;
+ /* For inter-MSC, the mncc_fsm switches the rtp_stream upon MNCC_RTP_CONNECT.
+ * For inter-BSC, need to switch here to the address obtained from Handover Request Ack. */
+ if (msc_a->ho.new_cell.type == MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER)
+ msc_ho_rtp_switch_to_new_cell(msc_a);
+ msc_ho_send_handover_succeeded(msc_a);
+ return;
+
+ case MSC_HO_EV_RX_COMPLETE:
+ msc_ho_success(msc_a);
+ return;
+
+ case MSC_HO_EV_RX_FAILURE:
+ msc_ho_failed(msc_a, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE,
+ "Received Handover Failure message\n");
+ return;
+
+ case MSC_HO_EV_MNCC_FORWARDING_FAILED:
+ msc_ho_failed(msc_a, GSM0808_CAUSE_EQUIPMENT_FAILURE, "MNCC Forwarding failed\n");
+ return;
+
+ case MSC_HO_EV_MNCC_FORWARDING_COMPLETE:
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void msc_ho_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_a *msc_a = fi->priv;
+ struct msc_t *msc_t = msc_a_msc_t(msc_a);
+
+ /* paranoia */
+ if (msc_a->ho.fi != fi)
+ return;
+
+ /* Completely clear all handover state */
+ msc_a->ho = (struct msc_ho_state){};
+
+ if (msc_t)
+ msc_t_clear(msc_t);
+}
+
+static int msc_ho_fsm_timer_cb(struct osmo_fsm_inst *fi)
+{
+ return 1;
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msc_ho_fsm_states[] = {
+ [MSC_HO_ST_REQUIRED] = {
+ .name = OSMO_STRINGIFY(MSC_HO_ST_REQUIRED),
+ .out_state_mask = 0
+ | S(MSC_HO_ST_REQUIRED)
+ | S(MSC_HO_ST_WAIT_REQUEST_ACK)
+ ,
+ .onenter = msc_ho_fsm_required_onenter,
+ },
+ [MSC_HO_ST_WAIT_REQUEST_ACK] = {
+ .name = OSMO_STRINGIFY(MSC_HO_ST_WAIT_REQUEST_ACK),
+ .in_event_mask = 0
+ | S(MSC_HO_EV_RX_REQUEST_ACK)
+ | S(MSC_HO_EV_RX_FAILURE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_HO_ST_REQUIRED)
+ | S(MSC_HO_ST_WAIT_COMPLETE)
+ ,
+ .onenter = msc_ho_fsm_wait_request_ack_onenter,
+ .action = msc_ho_fsm_wait_request_ack,
+ },
+ [MSC_HO_ST_WAIT_COMPLETE] = {
+ .name = OSMO_STRINGIFY(MSC_HO_ST_WAIT_COMPLETE),
+ .in_event_mask = 0
+ | S(MSC_HO_EV_RX_DETECT)
+ | S(MSC_HO_EV_RX_COMPLETE)
+ | S(MSC_HO_EV_RX_FAILURE)
+ | S(MSC_HO_EV_MNCC_FORWARDING_COMPLETE)
+ | S(MSC_HO_EV_MNCC_FORWARDING_FAILED)
+ ,
+ .action = msc_ho_fsm_wait_complete,
+ },
+};
+
+static const struct value_string msc_ho_fsm_event_names[] = {
+ OSMO_VALUE_STRING(MSC_HO_EV_RX_REQUEST_ACK),
+ OSMO_VALUE_STRING(MSC_HO_EV_RX_DETECT),
+ OSMO_VALUE_STRING(MSC_HO_EV_RX_COMPLETE),
+ OSMO_VALUE_STRING(MSC_HO_EV_RX_FAILURE),
+ {}
+};
+
+struct osmo_fsm msc_ho_fsm = {
+ .name = "handover",
+ .states = msc_ho_fsm_states,
+ .num_states = ARRAY_SIZE(msc_ho_fsm_states),
+ .log_subsys = DHO,
+ .event_names = msc_ho_fsm_event_names,
+ .timer_cb = msc_ho_fsm_timer_cb,
+ .cleanup = msc_ho_fsm_cleanup,
+};
diff --git a/src/libmsc/msc_i.c b/src/libmsc/msc_i.c
new file mode 100644
index 000000000..6badba668
--- /dev/null
+++ b/src/libmsc/msc_i.c
@@ -0,0 +1,383 @@
+/* Code to manage a subscriber's MSC-I role */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/ran_conn.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/mncc_call.h>
+
+static struct osmo_fsm msc_i_fsm;
+
+struct ran_infra *msc_i_ran(struct msc_i *msc_i)
+{
+ OSMO_ASSERT(msc_i
+ && msc_i->ran_conn
+ && msc_i->ran_conn->ran_peer
+ && msc_i->ran_conn->ran_peer->sri
+ && msc_i->ran_conn->ran_peer->sri->ran);
+ return msc_i->ran_conn->ran_peer->sri->ran;
+}
+
+static int msc_i_ran_enc(struct msc_i *msc_i, const struct ran_msg *ran_enc_msg)
+{
+ struct msgb *l3 = msc_role_ran_encode(msc_i->c.fi, ran_enc_msg);
+ if (!l3)
+ return -EIO;
+ return msc_i_down_l2(msc_i, l3);
+}
+
+struct msc_i *msc_i_priv(struct osmo_fsm_inst *fi)
+{
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(fi->fsm == &msc_i_fsm);
+ OSMO_ASSERT(fi->priv);
+ return fi->priv;
+}
+
+int msc_i_ready_decode_cb(struct osmo_fsm_inst *msc_i_fi, void *data, const struct ran_msg *msg)
+{
+ struct msc_i *msc_i = msc_i_priv(msc_i_fi);
+ struct msc_a *msc_a = msub_msc_a(msc_i->c.msub);
+ const struct an_apdu *an_apdu = data;
+ uint32_t event;
+
+ event = MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST;
+
+ switch (msg->msg_type) {
+ case RAN_MSG_HANDOVER_REQUIRED:
+ if (msc_a->c.remote_to) {
+ /* We're already a remote MSC-B, this hence must be a "subsequent" handover.
+ * There is not much difference really from dispatching a Process Access Signalling Request,
+ * only that 3GPP TS 29.010 specifies the different message type. */
+ event = MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return msub_role_dispatch(msc_i->c.msub, MSC_ROLE_A, event, an_apdu);
+}
+
+void msc_i_fsm_ready(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_i *msc_i = msc_i_priv(fi);
+ struct msc_a *msc_a = msub_msc_a(msc_i->c.msub);
+ struct an_apdu *an_apdu;
+
+ if (!msc_a) {
+ LOG_MSC_I(msc_i, LOGL_ERROR, "No MSC-A role\n");
+ return;
+ }
+
+ switch (event) {
+
+ case MSC_EV_FROM_RAN_COMPLETE_LAYER_3:
+ an_apdu = data;
+ msub_role_dispatch(msc_i->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_I_COMPLETE_LAYER_3, an_apdu);
+ break;
+
+ case MSC_EV_FROM_RAN_UP_L2:
+ an_apdu = data;
+ /* To send the correct event types like MSC_A_EV_FROM_I_PREPARE_SUBSEQUENT_HANDOVER_REQUEST and hence
+ * reflect the correct GSUP message type on an inter-MSC link, need to decode the message here. */
+ msc_role_ran_decode(msc_i->c.fi, an_apdu, msc_i_ready_decode_cb, an_apdu);
+ break;
+
+ case MSC_EV_FROM_RAN_CONN_RELEASED:
+ msc_i_cleared(msc_i);
+ break;
+
+ case MSC_EV_CALL_LEG_TERM:
+ msc_i->inter_msc.call_leg = NULL;
+ if (msc_i->inter_msc.mncc_forwarding_to_remote_cn)
+ msc_i->inter_msc.mncc_forwarding_to_remote_cn->rtps = NULL;
+ break;
+
+ case MSC_MNCC_EV_CALL_ENDED:
+ msc_i->inter_msc.mncc_forwarding_to_remote_cn = NULL;
+ break;
+
+ case MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ case MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT:
+ case MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR:
+ an_apdu = data;
+ if (an_apdu->an_proto != msc_i_ran(msc_i)->an_proto) {
+ LOG_MSC_I(msc_i, LOGL_ERROR, "Mismatching AN-APDU proto: %s -- Dropping message\n",
+ an_proto_name(an_apdu->an_proto));
+ msgb_free(an_apdu->msg);
+ an_apdu->msg = NULL;
+ return;
+ }
+ msc_i_down_l2(msc_i, an_apdu->msg);
+ break;
+
+ case MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE:
+ msc_i_clear(msc_i);
+ break;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+void msc_i_fsm_clearing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_i *msc_i = msc_i_priv(fi);
+ struct ran_msg msg = {
+ .msg_type = RAN_MSG_CLEAR_COMMAND,
+ /* Concerning CSFB (Circuit-Switched FallBack from LTE), for a final Clear Command that might indicate
+ * CSFB, the MSC-A has to send the Clear Command. This Clear Command is about detaching an MSC-I when a
+ * new MSC-I has shown up after an inter-BSC or inter-MSC Handover succeeded. So never CSFB here. */
+ };
+ msc_i_ran_enc(msc_i, &msg);
+}
+
+int msc_i_clearing_decode_cb(struct osmo_fsm_inst *msc_i_fi, void *data, const struct ran_msg *msg)
+{
+ struct msc_i *msc_i = msc_i_fi->priv;
+
+ switch (msg->msg_type) {
+
+ case RAN_MSG_CLEAR_COMPLETE:
+ switch (msc_i->c.fi->state) {
+ case MSC_I_ST_CLEARING:
+ osmo_fsm_inst_state_chg(msc_i->c.fi, MSC_I_ST_CLEARED, 0, 0);
+ return 0;
+ case MSC_I_ST_CLEARED:
+ return 0;
+ default:
+ LOG_MSC_I(msc_i, LOGL_ERROR, "Received Clear Complete, but did not send Clear Command\n");
+ {
+ struct msc_a *msc_a = msub_msc_a(msc_i->c.msub);
+ if (msc_a)
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_MO_CLOSE, NULL);
+ }
+ return 0;
+ }
+
+ default:
+ LOG_MSC_I(msc_i, LOGL_ERROR, "Message not handled: %s\n", ran_msg_type_name(msg->msg_type));
+ return -ENOTSUP;
+ }
+}
+
+void msc_i_fsm_clearing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_i *msc_i = msc_i_priv(fi);
+ struct an_apdu *an_apdu;
+
+ /* We expect a Clear Complete and nothing else. */
+ switch (event) {
+ case MSC_EV_FROM_RAN_UP_L2:
+ an_apdu = data;
+ msc_role_ran_decode(msc_i->c.fi, an_apdu, msc_i_clearing_decode_cb, NULL);
+ return;
+
+ case MSC_EV_FROM_RAN_CONN_RELEASED:
+ msc_i_cleared(msc_i);
+ return;
+
+ case MSC_EV_CALL_LEG_TERM:
+ msc_i->inter_msc.call_leg = NULL;
+ if (msc_i->inter_msc.mncc_forwarding_to_remote_cn)
+ msc_i->inter_msc.mncc_forwarding_to_remote_cn->rtps = NULL;
+ break;
+
+ case MSC_MNCC_EV_CALL_ENDED:
+ msc_i->inter_msc.mncc_forwarding_to_remote_cn = NULL;
+ break;
+ }
+}
+
+void msc_i_fsm_cleared_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, fi);
+}
+
+void msc_i_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_i *msc_i = msc_i_priv(fi);
+
+ call_leg_release(msc_i->inter_msc.call_leg);
+ mncc_call_release(msc_i->inter_msc.mncc_forwarding_to_remote_cn);
+
+ if (msc_i->ran_conn)
+ ran_conn_msc_role_gone(msc_i->ran_conn, msc_i->c.fi);
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msc_i_fsm_states[] = {
+ [MSC_I_ST_READY] = {
+ .name = "READY",
+ .action = msc_i_fsm_ready,
+ .in_event_mask = 0
+ | S(MSC_EV_FROM_RAN_COMPLETE_LAYER_3)
+ | S(MSC_EV_FROM_RAN_UP_L2)
+ | S(MSC_EV_FROM_RAN_CONN_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ | S(MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT)
+ | S(MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR)
+ | S(MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_I_ST_CLEARING)
+ | S(MSC_I_ST_CLEARED)
+ ,
+ },
+ [MSC_I_ST_CLEARING] = {
+ .name = "CLEARING",
+ .onenter = msc_i_fsm_clearing_onenter,
+ .action = msc_i_fsm_clearing,
+ .in_event_mask = 0
+ | S(MSC_EV_FROM_RAN_UP_L2)
+ | S(MSC_EV_FROM_RAN_CONN_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ ,
+ .out_state_mask = 0
+ | S(MSC_I_ST_CLEARED)
+ ,
+ },
+ [MSC_I_ST_CLEARED] = {
+ .name = "CLEARED",
+ .onenter = msc_i_fsm_cleared_onenter,
+ },
+};
+
+const struct value_string msc_i_fsm_event_names[] = {
+ OSMO_VALUE_STRING(MSC_REMOTE_EV_RX_GSUP),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_COMPLETE),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_RELEASED),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_TERM),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_NEED_LOCAL_RTP),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_PROCEEDING),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_COMPLETE),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_ENDED),
+
+ OSMO_VALUE_STRING(MSC_EV_FROM_RAN_COMPLETE_LAYER_3),
+ OSMO_VALUE_STRING(MSC_EV_FROM_RAN_UP_L2),
+ OSMO_VALUE_STRING(MSC_EV_FROM_RAN_CONN_RELEASED),
+
+ OSMO_VALUE_STRING(MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST),
+ OSMO_VALUE_STRING(MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT),
+ OSMO_VALUE_STRING(MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR),
+ OSMO_VALUE_STRING(MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE),
+ {}
+};
+
+static struct osmo_fsm msc_i_fsm = {
+ .name = "msc_i",
+ .states = msc_i_fsm_states,
+ .num_states = ARRAY_SIZE(msc_i_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msc_i_fsm_event_names,
+ .cleanup = msc_i_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msc_i_fsm_init(void)
+{
+ OSMO_ASSERT(osmo_fsm_register(&msc_i_fsm) == 0);
+}
+
+/* Send connection-oriented L3 message to RAN peer (MSC->[BSC|RNC]) */
+int msc_i_down_l2(struct msc_i *msc_i, struct msgb *l3)
+{
+ int rc;
+ if (!msc_i->ran_conn) {
+ LOG_MSC_I(msc_i, LOGL_ERROR, "Cannot Tx L2 message: no RAN conn\n");
+ return -EIO;
+ }
+
+ rc = ran_conn_down_l2_co(msc_i->ran_conn, l3, false);
+ if (rc)
+ LOG_MSC_I(msc_i, LOGL_ERROR, "Failed to transfer message down to subscriber (rc=%d)\n", rc);
+ return rc;
+}
+
+struct gsm_network *msc_i_net(const struct msc_i *msc_i)
+{
+ return msub_net(msc_i->c.msub);
+}
+
+struct vlr_subscr *msc_i_vsub(const struct msc_i *msc_i)
+{
+ return msub_vsub(msc_i->c.msub);
+}
+
+struct msc_i *msc_i_alloc(struct msub *msub, struct ran_infra *ran)
+{
+ return msub_role_alloc(msub, MSC_ROLE_I, &msc_i_fsm, struct msc_i, ran);
+}
+
+/* Send Clear Command and wait for Clear Complete autonomously. "Normally", the MSC-A handles Clear Command and receives
+ * Clear Complete, and then terminates MSC-I directly. This is useful to replace an MSC-I with another MSC-I during
+ * Handover. */
+void msc_i_clear(struct msc_i *msc_i)
+{
+ if (!msc_i)
+ return;
+ /* sanity timeout */
+ osmo_fsm_inst_state_chg(msc_i->c.fi, MSC_I_ST_CLEARING, 60, 0);
+}
+
+void msc_i_cleared(struct msc_i *msc_i)
+{
+ if (!msc_i)
+ return;
+ osmo_fsm_inst_state_chg(msc_i->c.fi, MSC_I_ST_CLEARED, 0, 0);
+}
+
+void msc_i_set_ran_conn(struct msc_i *msc_i, struct ran_conn *new_conn)
+{
+ struct ran_conn *old_conn = msc_i->ran_conn;
+
+ if (old_conn == new_conn)
+ return;
+
+ msc_i->ran_conn = NULL;
+ if (old_conn) {
+ old_conn->msc_role = NULL;
+ ran_conn_close(old_conn);
+ }
+
+ /* Taking a conn over from another MSC role? Make sure the other side forgets about it. */
+ if (new_conn->msc_role)
+ msc_role_forget_conn(new_conn->msc_role, new_conn);
+
+ msc_i->ran_conn = new_conn;
+ msc_i->ran_conn->msc_role = msc_i->c.fi;
+
+ /* Add the RAN conn info to the msub logging */
+ msub_update_id(msc_i->c.msub);
+}
diff --git a/src/libmsc/msc_i_remote.c b/src/libmsc/msc_i_remote.c
new file mode 100644
index 000000000..86c7b9c54
--- /dev/null
+++ b/src/libmsc/msc_i_remote.c
@@ -0,0 +1,245 @@
+/* The MSC-I role implementation variant that forwards requests to/from a remote MSC. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/fsm.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/msc_i_remote.h>
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/e_link.h>
+
+static struct osmo_fsm msc_i_remote_fsm;
+
+static struct msc_i *msc_i_remote_priv(struct osmo_fsm_inst *fi)
+{
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(fi->fsm == &msc_i_remote_fsm);
+ OSMO_ASSERT(fi->priv);
+ return fi->priv;
+}
+
+/* The idea is that this msc_i role is event-compatible to the "real" msc_i.c FSM, but instead of acting on the events
+ * directly, it forwards the events to a remote MSC-I role, via E-over-GSUP.
+ *
+ * [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_i_remote ----GSUP---> msc_a_remote --> msc_i ---BSSMAP--> [BSS]
+ * you are here^
+ */
+static int msc_i_remote_msg_down_to_remote_msc(struct msc_i *msc_i,
+ enum osmo_gsup_message_type message_type,
+ struct an_apdu *an_apdu)
+{
+ struct osmo_gsup_message m;
+ struct e_link *e = msc_i->c.remote_to;
+
+ if (!e) {
+ LOG_MSC_I_REMOTE(msc_i, LOGL_ERROR, "No E link to remote MSC, cannot send AN-APDU\n");
+ return -1;
+ }
+
+ if (e_prep_gsup_msg(e, MSC_ROLE_A, &m)) {
+ LOG_MSC_I_REMOTE(msc_i, LOGL_ERROR, "Error composing E-interface GSUP message\n");
+ return -1;
+ }
+ m.message_type = message_type;
+ if (an_apdu) {
+ if (gsup_msg_assign_an_apdu(&m, an_apdu)) {
+ LOG_MSC_I_REMOTE(msc_i, LOGL_ERROR, "Error composing E-interface GSUP message\n");
+ return -1;
+ }
+ }
+
+ return e_tx(e, &m);
+}
+
+/* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-- msc_i_remote <---GSUP---- msc_a_remote <-- msc_i <--BSSMAP--- [BSS]
+ * you are here^
+ */
+static int msc_i_remote_rx_gsup(struct msc_i *msc_i, const struct osmo_gsup_message *gsup_msg)
+{
+ uint32_t event;
+ struct an_apdu an_apdu;
+ int rc;
+
+ /* MSC_A_EV_FROM_I_COMPLETE_LAYER_3 will never occur with a remote MSC-I, since all Complete Layer 3 will happen
+ * between a local MSC-A and local MSC-I roles. Only after an inter-MSC Handover will there possibly exist a
+ * remote MSC-I, which is long after Complete Layer 3. */
+
+ switch (gsup_msg->message_type) {
+ case OSMO_GSUP_MSGT_E_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ case OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_REQUEST:
+ event = MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST:
+ event = MSC_A_EV_FROM_I_SEND_END_SIGNAL_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_CLOSE:
+ case OSMO_GSUP_MSGT_E_ABORT:
+ case OSMO_GSUP_MSGT_E_ROUTING_ERROR:
+ msc_i_clear(msc_i);
+ return 0;
+
+ default:
+ LOG_MSC_I_REMOTE(msc_i, LOGL_ERROR, "Unhandled GSUP message type: %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ return -1;
+ };
+
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-- msc_i_remote <---GSUP---- msc_a_remote <-- msc_i <--BSSMAP--- [BSS]
+ * ^you are here
+ */
+ gsup_msg_to_an_apdu(&an_apdu, gsup_msg);
+ rc = msub_role_dispatch(msc_i->c.msub, MSC_ROLE_A, event, &an_apdu);
+ if (an_apdu.msg)
+ msgb_free(an_apdu.msg);
+ return rc;
+}
+
+static void msc_i_remote_fsm_ready(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_i *msc_i = msc_i_remote_priv(fi);
+ struct an_apdu *an_apdu;
+
+ switch (event) {
+
+ case MSC_REMOTE_EV_RX_GSUP:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-- msc_i_remote <---GSUP---- msc_a_remote <-- msc_i <--BSSMAP--- [BSS]
+ * you are here^
+ */
+ msc_i_remote_rx_gsup(msc_i, (const struct osmo_gsup_message*)data);
+ return;
+
+ case MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_i_remote ----GSUP---> msc_a_remote --> msc_i ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+ an_apdu = data;
+ msc_i_remote_msg_down_to_remote_msc(msc_i, OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST, an_apdu);
+ return;
+
+ case MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_i_remote ----GSUP---> msc_a_remote --> msc_i ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+ an_apdu = data;
+ msc_i_remote_msg_down_to_remote_msc(msc_i, OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_RESULT, an_apdu);
+ return;
+
+ case MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_i_remote ----GSUP---> msc_a_remote --> msc_i ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+ an_apdu = data;
+ msc_i_remote_msg_down_to_remote_msc(msc_i, OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_ERROR, an_apdu);
+ return;
+
+ case MSC_I_EV_FROM_A_SEND_END_SIGNAL_RESPONSE:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_i_remote ----GSUP---> msc_a_remote --> msc_i ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+ an_apdu = data;
+ msc_i_remote_msg_down_to_remote_msc(msc_i, OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_RESULT, an_apdu);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void msc_i_remote_fsm_clearing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, fi);
+}
+
+static void msc_i_remote_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_i *msc_i = msc_i_remote_priv(fi);
+ msc_i_remote_msg_down_to_remote_msc(msc_i, OSMO_GSUP_MSGT_E_CLOSE, NULL);
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msc_i_remote_fsm_states[] = {
+ [MSC_I_ST_READY] = {
+ .name = "READY",
+ .action = msc_i_remote_fsm_ready,
+ .in_event_mask = 0
+ | S(MSC_REMOTE_EV_RX_GSUP)
+ | S(MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_RESULT)
+ | S(MSC_I_EV_FROM_A_PREPARE_SUBSEQUENT_HANDOVER_ERROR)
+ ,
+ .out_state_mask = 0
+ | S(MSC_I_ST_CLEARING)
+ ,
+ },
+ [MSC_I_ST_CLEARING] = {
+ .name = "CLEARING",
+ .onenter = msc_i_remote_fsm_clearing_onenter,
+ },
+};
+
+static struct osmo_fsm msc_i_remote_fsm = {
+ .name = "msc_i_remote",
+ .states = msc_i_remote_fsm_states,
+ .num_states = ARRAY_SIZE(msc_i_remote_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msc_i_fsm_event_names,
+ .cleanup = msc_i_remote_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msc_i_remote_fsm_init(void)
+{
+ OSMO_ASSERT(osmo_fsm_register(&msc_i_remote_fsm) == 0);
+}
+
+struct msc_i *msc_i_remote_alloc(struct msub *msub, struct ran_infra *ran, struct e_link *e)
+{
+ struct msc_i *msc_i;
+
+ msub_role_alloc(msub, MSC_ROLE_I, &msc_i_remote_fsm, struct msc_i, ran);
+ msc_i = msub_msc_i(msub);
+ if (!msc_i)
+ return NULL;
+
+ e_link_assign(e, msc_i->c.fi);
+ if (!msc_i->c.remote_to) {
+ LOG_MSC_I_REMOTE(msc_i, LOGL_ERROR, "Failed to set up E link over GSUP to remote MSC\n");
+ msc_i_clear(msc_i);
+ return NULL;
+ }
+
+ return msc_i;
+}
diff --git a/src/libmsc/msc_ifaces.c b/src/libmsc/msc_ifaces.c
deleted file mode 100644
index e2c52dfda..000000000
--- a/src/libmsc/msc_ifaces.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Implementation for MSC decisions which interface to send messages out on. */
-
-/* (C) 2016 by sysmocom s.m.f.c GmbH <info@sysmocom.de>
- *
- * 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 <osmocom/core/logging.h>
-
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/gsm_data.h>
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/gsm_subscriber.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/mgcp_client/mgcp_client.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/sgs_iface.h>
-#include <osmocom/msc/gsm_04_08.h>
-#include <osmocom/msc/msc_mgcp.h>
-
-#include "../../bscconfig.h"
-
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#else
-#include <osmocom/msc/iu_dummy.h>
-#endif /* BUILD_IU */
-
-static int msc_tx(struct ran_conn *conn, struct msgb *msg)
-{
- if (!msg)
- return -EINVAL;
- if (!conn) {
- msgb_free(msg);
- return -EINVAL;
- }
-
- DEBUGP(DMSC, "msc_tx %u bytes to %s via %s\n",
- msg->len, vlr_subscr_name(conn->vsub),
- osmo_rat_type_name(conn->via_ran));
- switch (conn->via_ran) {
- case OSMO_RAT_GERAN_A:
- msg->dst = conn;
- return a_iface_tx_dtap(msg);
-
- case OSMO_RAT_UTRAN_IU:
- msg->dst = conn->iu.ue_ctx;
- return ranap_iu_tx(msg, 0);
-
- case OSMO_RAT_EUTRAN_SGS:
- msg->dst = conn;
- return sgs_iface_tx_dtap_ud(msg);
-
- default:
- LOGP(DMSC, LOGL_ERROR,
- "msc_tx(): conn->via_ran invalid (%d)\n",
- conn->via_ran);
- msgb_free(msg);
- return -1;
- }
-}
-
-
-int msc_tx_dtap(struct ran_conn *conn,
- struct msgb *msg)
-{
- return msc_tx(conn, msg);
-}
-
-
-/* 9.2.5 CM service accept */
-int msc_gsm48_tx_mm_serv_ack(struct ran_conn *conn)
-{
- struct msgb *msg;
- struct gsm48_hdr *gh;
-
- if (!conn)
- return -EINVAL;
-
- msg = gsm48_msgb_alloc_name("GSM 04.08 SERV ACC");
-
- gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
- gh->proto_discr = GSM48_PDISC_MM;
- gh->msg_type = GSM48_MT_MM_CM_SERV_ACC;
-
- DEBUGP(DMM, "-> CM SERVICE ACCEPT %s\n",
- vlr_subscr_name(conn->vsub));
-
- return msc_tx_dtap(conn, msg);
-}
-
-/* 9.2.6 CM service reject */
-int msc_gsm48_tx_mm_serv_rej(struct ran_conn *conn,
- enum gsm48_reject_value value)
-{
- struct msgb *msg;
-
- if (!conn)
- return -EINVAL;
-
- msg = gsm48_create_mm_serv_rej(value);
- if (!msg) {
- LOGP(DMM, LOGL_ERROR, "Failed to allocate CM Service Reject.\n");
- return -1;
- }
-
- DEBUGP(DMM, "-> CM SERVICE Reject cause: %d\n", value);
-
- return msc_tx_dtap(conn, msg);
-}
-
-int msc_tx_common_id(struct ran_conn *conn)
-{
- if (!conn)
- return -EINVAL;
-
- /* Common ID is only sent over IuCS */
- if (conn->via_ran != OSMO_RAT_UTRAN_IU) {
- LOGP(DMM, LOGL_INFO,
- "%s: Asked to transmit Common ID, but skipping"
- " because this is not on UTRAN\n",
- vlr_subscr_name(conn->vsub));
- return 0;
- }
-
- DEBUGP(DIUCS, "%s: tx CommonID %s\n",
- vlr_subscr_name(conn->vsub), conn->vsub->imsi);
- return ranap_iu_tx_common_id(conn->iu.ue_ctx, conn->vsub->imsi);
-}
diff --git a/src/libmsc/msc_mgcp.c b/src/libmsc/msc_mgcp.c
deleted file mode 100644
index 5c8888031..000000000
--- a/src/libmsc/msc_mgcp.c
+++ /dev/null
@@ -1,1254 +0,0 @@
-/* (C) 2017 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 <arpa/inet.h>
-
-#include <osmocom/mgcp_client/mgcp_client.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/fsm.h>
-#include <osmocom/core/byteswap.h>
-#include <osmocom/msc/msc_mgcp.h>
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/gsm_04_08.h>
-#include <osmocom/msc/iucs.h>
-#include <osmocom/msc/vlr.h>
-
-#include "../../bscconfig.h"
-
-#define S(x) (1 << (x))
-
-#define CONN_ID_RAN 1
-#define CONN_ID_CN 2
-
-#define MGCP_MGW_TIMEOUT 4 /* in seconds */
-#define MGCP_MGW_TIMEOUT_TIMER_NR 1
-#define MGCP_RAN_TIMEOUT 120 /* in seconds */
-#define MGCP_RAN_TIMEOUT_TIMER_NR 2
-#define MGCP_REL_TIMEOUT 60 /* in seconds */
-#define MGCP_REL_TIMEOUT_TIMER_NR 3
-#define MGCP_ASS_TIMEOUT 10 /* in seconds */
-#define MGCP_ASS_TIMEOUT_TIMER_NR 4
-
-/* Some internal cause codes to indicate fault condition inside the FSM */
-enum msc_mgcp_cause_code {
- MGCP_ERR_MGW_FAIL,
- MGCP_ERR_MGW_INVAL_RESP,
- MGCP_ERR_MGW_TX_FAIL,
- MGCP_ERR_MGW_TIMEOUT,
- MGCP_ERR_UNEXP_TEARDOWN,
- MGCP_ERR_UNSUPP_ADDR_FMT,
- MGCP_ERR_RAN_TIMEOUT,
- MGCP_ERR_ASS_TIMEOUT,
- MGCP_ERR_TOOLONG,
- MGCP_ERR_ASSGMNT_FAIL
-};
-
-/* Human readable respresentation of the faul codes, will be displayed by
- * handle_error() */
-static const struct value_string msc_mgcp_cause_codes_names[] = {
- {MGCP_ERR_MGW_FAIL, "operation failed on MGW"},
- {MGCP_ERR_MGW_INVAL_RESP, "invalid / unparseable response from MGW"},
- {MGCP_ERR_MGW_TX_FAIL, "failed to transmit MGCP message to MGW"},
- {MGCP_ERR_MGW_TIMEOUT, "request to MGW timed out"},
- {MGCP_ERR_UNEXP_TEARDOWN, "unexpected connection teardown"},
- {MGCP_ERR_UNSUPP_ADDR_FMT, "unsupported network address format used (RAN)"},
- {MGCP_ERR_RAN_TIMEOUT, "call could not be completed in time (RAN)"},
- {MGCP_ERR_ASS_TIMEOUT, "assignment could not be completed in time (RAN)"},
- {MGCP_ERR_TOOLONG, "string value too long"},
- {MGCP_ERR_ASSGMNT_FAIL, "assignment failure (RAN)"},
- {0, NULL}
-};
-
-enum fsm_msc_mgcp_states {
- ST_CRCX_RAN,
- ST_CRCX_CN,
- ST_CRCX_COMPL,
- ST_MDCX_CN,
- ST_MDCX_CN_COMPL,
- ST_MDCX_RAN,
- ST_MDCX_RAN_COMPL,
- ST_CALL,
- ST_HALT,
-};
-
-enum msc_mgcp_fsm_evt {
- /* Initial event: start off the state machine */
- EV_INIT,
-
- /* External event: Notify that the Assignment is complete and we
- * may now forward IP/Port of the remote call leg to the MGW */
- EV_ASSIGN,
-
- /* External event: Notify that the Call is complete and that the
- * two half open connections on the MGW should now be connected */
- EV_CONNECT,
-
- /* External event: Notify that the call is over and the connections
- * on the mgw shall be removed */
- EV_TEARDOWN,
-
- /* Internal event: An error occurred that requires a controlled
- * teardown of the RTP connections */
- EV_TEARDOWN_ERROR,
-
- /* Internal event: The mgcp_gw has sent its CRCX response for
- * the RAN side */
- EV_CRCX_RAN_RESP,
-
- /* Internal event: The mgcp_gw has sent its CRCX response for
- * the CN side */
- EV_CRCX_CN_RESP,
-
- /* Internal event: The mgcp_gw has sent its MDCX response for
- * the RAN side */
- EV_MDCX_RAN_RESP,
-
- /* Internal event: The mgcp_gw has sent its MDCX response for
- * the CN side */
- EV_MDCX_CN_RESP,
-
- /* Internal event: The mgcp_gw has sent its DLCX response for
- * the RAN and CN side */
- EV_DLCX_ALL_RESP,
-};
-
-static const struct value_string msc_mgcp_fsm_evt_names[] = {
- OSMO_VALUE_STRING(EV_INIT),
- OSMO_VALUE_STRING(EV_ASSIGN),
- OSMO_VALUE_STRING(EV_CONNECT),
- OSMO_VALUE_STRING(EV_TEARDOWN),
- OSMO_VALUE_STRING(EV_TEARDOWN_ERROR),
- OSMO_VALUE_STRING(EV_CRCX_RAN_RESP),
- OSMO_VALUE_STRING(EV_CRCX_CN_RESP),
- OSMO_VALUE_STRING(EV_MDCX_RAN_RESP),
- OSMO_VALUE_STRING(EV_MDCX_CN_RESP),
- OSMO_VALUE_STRING(EV_DLCX_ALL_RESP),
- {0, NULL}
-};
-
-/* A general error handler function. On error we still have an interest to
- * remove a half open connection (if possible). This function will execute
- * a controlled jump to the DLCX phase. From there, the FSM will then just
- * continue like the call were ended normally */
-#define handle_error(mgcp_ctx, cause, dlcx) _handle_error(mgcp_ctx, cause, dlcx, __FILE__, __LINE__)
-static void _handle_error(struct mgcp_ctx *mgcp_ctx, enum msc_mgcp_cause_code cause, bool dlcx, const char *file,
- int line)
-{
- bool dlcx_possible = true;
- struct osmo_fsm_inst *fi;
- struct gsm_mncc mncc;
-
- OSMO_ASSERT(mgcp_ctx);
- fi = mgcp_ctx->fsm;
- OSMO_ASSERT(fi);
-
- /* Check if the endpoint identifier is a specific endpoint identifier,
- * since in order to perform a DLCX we must know the specific
- * identifier of the endpoint we want to release. If we do not have
- * this information because of errornous communication we can not
- * perform a DLCX. */
- if (strstr(mgcp_ctx->rtp_endpoint, "*"))
- dlcx_possible = false;
-
- LOGPFSMLSRC(mgcp_ctx->fsm, LOGL_ERROR, file, line, "%s -- graceful shutdown...\n",
- get_value_string(msc_mgcp_cause_codes_names, cause));
-
- /* Request the higher layers (gsm_04_08.c) to release the call. If the
- * problem occured after msc_mgcp_call_release() was calls, remain
- * silent because we already got informed and the higher layers might
- * already freed their context information (trans). */
- if (!mgcp_ctx->free_ctx) {
- mncc = (struct gsm_mncc) {
- .msg_type = MNCC_REL_REQ,
- .callref = mgcp_ctx->trans->callref,
- .cause = {
- .location = GSM48_CAUSE_LOC_PRN_S_LU,
- .coding = 0, /* FIXME */
- .value = GSM48_CC_CAUSE_RESOURCE_UNAVAIL
- }
- };
-
- mncc_set_cause(&mncc, GSM48_CAUSE_LOC_TRANS_NET,
- GSM48_CC_CAUSE_RESOURCE_UNAVAIL);
- mncc_tx_to_cc(mgcp_ctx->trans->net, MNCC_REL_REQ, &mncc);
- }
-
- /* For the shutdown we have two options. Whenever it makes sense to
- * send a DLCX to the MGW in order to be sure that the connection is
- * properly cleaned up, the dlcx flag should be set. In other cases
- * where a DLCX does not make sense (e.g. the MGW times out), halting
- * directly is the better options. In those cases, the dlcx flag
- * should not be set */
- if (dlcx && dlcx_possible) {
- /* Fast-forward the FSM into call state. In this state the FSM
- * expects either an EV_TEARDOWN or an EV_TEARDOWN_ERROR. When
- * one of the two events is received a DLCX will be send to
- * the MGW. After that. The FSM automatically halts but will
- * still expect a call msc_mgcp_call_release() to be freed
- * completely */
- osmo_fsm_inst_state_chg(fi, ST_CALL, 0, 0);
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_TEARDOWN_ERROR, mgcp_ctx);
- } else {
- /* Halt the state machine immediately. The FSM will not be
- * freed yet, we stil require the higher layers to call
- * msc_mgcp_call_release() */
- osmo_fsm_inst_state_chg(fi, ST_HALT, 0, 0);
- osmo_fsm_inst_dispatch(fi, EV_TEARDOWN_ERROR, mgcp_ctx);
- }
-}
-
-/* Timer callback to shut down in case of connectivity problems */
-static int fsm_timeout_cb(struct osmo_fsm_inst *fi)
-{
- struct mgcp_ctx *mgcp_ctx = fi->priv;
- struct mgcp_client *mgcp;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
-
- if (fi->T == MGCP_MGW_TIMEOUT_TIMER_NR) {
- /* We were unable to communicate with the MGW, unfortunately
- * there is no meaningful action we can take now other than
- * giving up. */
-
- /* Cancel the transaction that timed out */
- mgcp_client_cancel(mgcp, mgcp_ctx->mgw_pending_trans);
-
- /* halt of the FSM */
- handle_error(mgcp_ctx, MGCP_ERR_MGW_TIMEOUT, false);
- } else if (fi->T == MGCP_RAN_TIMEOUT_TIMER_NR) {
- /* If the logic that controls the RAN is unable to negotiate a
- * connection, we presumably still have a working connection to
- * the MGW, we will try to shut down gracefully. */
- handle_error(mgcp_ctx, MGCP_ERR_RAN_TIMEOUT, true);
- } else if (fi->T == MGCP_REL_TIMEOUT_TIMER_NR) {
- /* Under normal conditions, the MSC logic should always command
- * to release the call at some point. However, the release may
- * be missing due to errors in the MSC logic and we may have
- * reached ST_HALT because of cascading errors and timeouts. In
- * this and only in this case we will allow ST_HALT to free all
- * context information on its own authority. */
- mgcp_ctx->free_ctx = true;
-
- /* Initiate self destruction of the FSM */
- osmo_fsm_inst_state_chg(fi, ST_HALT, 0, 0);
- osmo_fsm_inst_dispatch(fi, EV_TEARDOWN, mgcp_ctx);
- } else if (fi->T == MGCP_ASS_TIMEOUT_TIMER_NR) {
- /* There may be rare cases in which the MSC is unable to
- * complete the call assignment */
- handle_error(mgcp_ctx, MGCP_ERR_ASS_TIMEOUT, true);
- } else {
- /* Ther must not be any unsolicited timers in this FSM. If so,
- * we have serious problem. */
- OSMO_ASSERT(false);
- }
-
- return 0;
-}
-
-static void mgw_crcx_ran_resp_cb(struct mgcp_response *r, void *priv);
-
-/* Callback for ST_CRCX_RAN: Send CRCX for RAN side to MGW */
-static void fsm_crcx_ran_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct mgcp_client *mgcp;
- struct mgcp_msg mgcp_msg;
- struct msgb *msg;
- int rc;
- struct gsm_trans *trans;
- struct ran_conn *conn;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- /* NOTE: In case of error, we will not be able to perform any DLCX
- * operation because until this point we do not have requested any
- * endpoint yet. */
-
- LOGPFSML(fi, LOGL_DEBUG,
- "CRCX/RAN: creating connection for the RAN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint);
-
- /* Generate MGCP message string */
- mgcp_msg = (struct mgcp_msg) {
- .verb = MGCP_VERB_CRCX,
- .presence = (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID | MGCP_MSG_PRESENCE_CONN_MODE),
- .call_id = mgcp_ctx->call_id,
- .conn_mode = MGCP_CONN_RECV_ONLY
- };
- if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_client_rtpbridge_wildcard(mgcp), sizeof(mgcp_msg.endpoint)) >=
- MGCP_ENDPOINT_MAXLEN) {
- handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, false);
- return;
- }
-
- /* HACK: We put the connection in loopback mode at the beginnig to
- * trick the hNodeB into doing the IuUP negotiation with itself.
- * This is a hack we need because osmo-mgw does not support IuUP yet, see OS#2459. */
-#ifdef BUILD_IU
- if (conn->via_ran == OSMO_RAT_UTRAN_IU)
- mgcp_msg.conn_mode = MGCP_CONN_LOOPBACK;
-#endif
-
- msg = mgcp_msg_gen(mgcp, &mgcp_msg);
- OSMO_ASSERT(msg);
-
- /* Transmit MGCP message to MGW */
- mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg);
- rc = mgcp_client_tx(mgcp, msg, mgw_crcx_ran_resp_cb, mgcp_ctx);
- if (rc < 0) {
- handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, false);
- return;
- }
-
- osmo_fsm_inst_state_chg(fi, ST_CRCX_CN, MGCP_MGW_TIMEOUT, MGCP_MGW_TIMEOUT_TIMER_NR);
-}
-
-/* Callback for MGCP-Client: handle response for RAN associated CRCX */
-static void mgw_crcx_ran_resp_cb(struct mgcp_response *r, void *priv)
-{
- struct mgcp_ctx *mgcp_ctx = priv;
- int rc;
- struct gsm_trans *trans;
- struct ran_conn *conn;
-
- /* NOTE: In case of error, we will not be able to perform any DLCX
- * operation because until we either get a parseable message that
- * contains an error code (no endpoint is seized in those cases)
- * or we get an unparseable message. In this case we can not be
- * sure, but we also can not draw any assumptions from unparseable
- * messages. */
-
- OSMO_ASSERT(mgcp_ctx);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- if (r->head.response_code != 200) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR,
- "CRCX/RAN: response yields error: %d %s\n", r->head.response_code, r->head.comment);
- handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, false);
- return;
- }
-
- /* memorize connection identifier and specific endpoint id */
- osmo_strlcpy(mgcp_ctx->conn_id_ran, r->head.conn_id, sizeof(mgcp_ctx->conn_id_ran));
- LOGPFSML(mgcp_ctx->fsm, LOGL_DEBUG, "CRCX/RAN: MGW responded with CI: %s\n", mgcp_ctx->conn_id_ran);
- osmo_strlcpy(mgcp_ctx->rtp_endpoint, r->head.endpoint, sizeof(mgcp_ctx->rtp_endpoint));
- LOGPFSML(mgcp_ctx->fsm, LOGL_DEBUG, "CRCX/RAN: MGW assigned endpoint: %s\n", mgcp_ctx->rtp_endpoint);
-
- rc = mgcp_response_parse_params(r);
- if (rc) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR, "CRCX/RAN: Cannot parse response\n");
- handle_error(mgcp_ctx, MGCP_ERR_MGW_INVAL_RESP, false);
- return;
- }
-
- LOGPFSML(mgcp_ctx->fsm, LOGL_DEBUG, "CRCX/RAN: MGW responded with address %s:%u\n", r->audio_ip, r->audio_port);
-
- conn->rtp.local_port_ran = r->audio_port;
- osmo_strlcpy(conn->rtp.local_addr_ran, r->audio_ip, sizeof(conn->rtp.local_addr_ran));
-
- /* Notify the FSM that we got the response. */
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_CRCX_RAN_RESP, mgcp_ctx);
-}
-
-static void mgw_crcx_cn_resp_cb(struct mgcp_response *r, void *priv);
-
-/* Callback for ST_CRCX_CN: check MGW response and send CRCX for CN side to MGW */
-static void fsm_crcx_cn_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct mgcp_client *mgcp;
- struct mgcp_msg mgcp_msg;
- struct msgb *msg;
- int rc;
- struct gsm_trans *trans;
- struct ran_conn *conn;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- switch (event) {
- case EV_CRCX_RAN_RESP:
- break;
- default:
- handle_error(mgcp_ctx, MGCP_ERR_UNEXP_TEARDOWN, true);
- return;
- }
-
- LOGPFSML(fi, LOGL_DEBUG,
- "CRCX/CN creating connection for the CN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint);
-
- /* Generate MGCP message string */
- mgcp_msg = (struct mgcp_msg) {
- .verb = MGCP_VERB_CRCX,
- .presence = (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID | MGCP_MSG_PRESENCE_CONN_MODE),
- .call_id = mgcp_ctx->call_id,
- .conn_mode = MGCP_CONN_RECV_ONLY
- };
- if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_ctx->rtp_endpoint, sizeof(mgcp_msg.endpoint)) >=
- MGCP_ENDPOINT_MAXLEN) {
- handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, true);
- return;
- }
-
- msg = mgcp_msg_gen(mgcp, &mgcp_msg);
- OSMO_ASSERT(msg);
-
- /* Transmit MGCP message to MGW */
- mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg);
- rc = mgcp_client_tx(mgcp, msg, mgw_crcx_cn_resp_cb, mgcp_ctx);
- if (rc < 0) {
- handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, true);
- return;
- }
-
- osmo_fsm_inst_state_chg(fi, ST_CRCX_COMPL, MGCP_MGW_TIMEOUT, MGCP_MGW_TIMEOUT_TIMER_NR);
-}
-
-/* Callback for MGCP-Client: handle response for CN associated CRCX */
-static void mgw_crcx_cn_resp_cb(struct mgcp_response *r, void *priv)
-{
- struct mgcp_ctx *mgcp_ctx = priv;
- int rc;
- struct gsm_trans *trans;
- struct ran_conn *conn;
-
- OSMO_ASSERT(mgcp_ctx);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- if (r->head.response_code != 200) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR,
- "CRCX/CN: response yields error: %d %s\n", r->head.response_code, r->head.comment);
- handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, true);
- return;
- }
-
- /* memorize connection identifier */
- osmo_strlcpy(mgcp_ctx->conn_id_cn, r->head.conn_id, sizeof(mgcp_ctx->conn_id_cn));
- LOGPFSML(mgcp_ctx->fsm, LOGL_DEBUG, "CRCX/CN: MGW responded with CI: %s\n", mgcp_ctx->conn_id_cn);
-
- rc = mgcp_response_parse_params(r);
- if (rc) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR, "CRCX/CN: Cannot parse response\n");
- handle_error(mgcp_ctx, MGCP_ERR_MGW_INVAL_RESP, true);
- return;
- }
-
- LOGPFSML(mgcp_ctx->fsm, LOGL_DEBUG, "CRCX/CN: MGW responded with address %s:%u\n", r->audio_ip, r->audio_port);
-
- conn->rtp.local_port_cn = r->audio_port;
- osmo_strlcpy(conn->rtp.local_addr_cn, r->audio_ip, sizeof(conn->rtp.local_addr_cn));
-
- /* Notify the FSM that we got the response. */
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_CRCX_CN_RESP, mgcp_ctx);
-}
-
-/* Callback for ST_CRCX_COMPL: check MGW response, start assignment */
-static void fsm_crcx_compl(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct gsm_trans *trans;
- struct ran_conn *conn;
-
- OSMO_ASSERT(mgcp_ctx);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- switch (event) {
- case EV_CRCX_CN_RESP:
- break;
- default:
- handle_error(mgcp_ctx, MGCP_ERR_UNEXP_TEARDOWN, true);
- return;
- }
-
- /* Forward assignment request to A/RANAP */
- if (conn->via_ran == OSMO_RAT_UTRAN_IU) {
-#ifdef BUILD_IU
- /* Assign a voice channel via RANAP on 3G */
- if (iu_rab_act_cs(trans))
- goto error;
-#else
- LOGPFSML(fi, LOGL_ERROR, "Cannot send Iu RAB Assignment: built without Iu support\n");
- goto error;
-#endif
- } else if (conn->via_ran == OSMO_RAT_GERAN_A) {
- /* Assign a voice channel via A on 2G */
- if (a_iface_tx_assignment(trans))
- goto error;
- } else {
- /* Unset or unimplemented new RAN type */
- LOGPFSML(fi, LOGL_ERROR, "Unknown RAN type: %d\n", conn->via_ran);
- return;
- }
-
- /* Respond back to MNCC (if requested) */
- if (trans->tch_rtp_create) {
- if (gsm48_tch_rtp_create(trans))
- goto error;
- }
-
- /* Note: When we reach this point then the situation is basically that
- * we have two sides connected, both are in loopback. The local ports
- * of the side pointing towards the BSS should be already communicated
- * and we are waiting now the other end to pick up. */
- osmo_fsm_inst_state_chg(fi, ST_MDCX_CN, MGCP_RAN_TIMEOUT, MGCP_RAN_TIMEOUT_TIMER_NR);
- return;
-
-error:
- handle_error(mgcp_ctx, MGCP_ERR_ASSGMNT_FAIL, true);
-}
-
-static void mgw_mdcx_cn_resp_cb(struct mgcp_response *r, void *priv);
-
-/* Callback for ST_MDCX_CN: send MDCX for RAN side to MGW */
-static void fsm_mdcx_cn_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct mgcp_client *mgcp;
- struct gsm_trans *trans;
- struct ran_conn *conn;
- struct mgcp_msg mgcp_msg;
- struct msgb *msg;
- int rc;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- switch (event) {
- case EV_CONNECT:
- break;
- default:
- handle_error(mgcp_ctx, MGCP_ERR_UNEXP_TEARDOWN, true);
- return;
- }
-
- LOGPFSML(fi, LOGL_DEBUG,
- "MDCX/CN: completing connection for the CN side on MGW endpoint:%p, remote leg expects RTP input on address %s:%u\n",
- mgcp_ctx->rtp_endpoint, conn->rtp.remote_addr_cn, conn->rtp.remote_port_cn);
-
- /* Generate MGCP message string */
- mgcp_msg = (struct mgcp_msg) {
- .verb = MGCP_VERB_MDCX,
- .presence = (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID | MGCP_MSG_PRESENCE_CONN_ID |
- MGCP_MSG_PRESENCE_CONN_MODE | MGCP_MSG_PRESENCE_AUDIO_IP |
- MGCP_MSG_PRESENCE_AUDIO_PORT),
- .call_id = mgcp_ctx->call_id,
- .conn_id = mgcp_ctx->conn_id_cn,
- .conn_mode = MGCP_CONN_RECV_SEND,
- .audio_ip = conn->rtp.remote_addr_cn,
- .audio_port = conn->rtp.remote_port_cn,
- .codecs[0] = conn->rtp.codec_cn,
- .codecs_len = 1
- };
- if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_ctx->rtp_endpoint, sizeof(mgcp_msg.endpoint)) >=
- MGCP_ENDPOINT_MAXLEN) {
- handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, true);
- return;
- }
-
- msg = mgcp_msg_gen(mgcp, &mgcp_msg);
- OSMO_ASSERT(msg);
-
- /* Transmit MGCP message to MGW */
- mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg);
- rc = mgcp_client_tx(mgcp, msg, mgw_mdcx_cn_resp_cb, mgcp_ctx);
- if (rc < 0) {
- handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, true);
- return;
- }
-
- osmo_fsm_inst_state_chg(fi, ST_MDCX_CN_COMPL, MGCP_MGW_TIMEOUT, MGCP_MGW_TIMEOUT_TIMER_NR);
-}
-
-/* Callback for MGCP-Client: handle response for CN associated CRCX */
-static void mgw_mdcx_cn_resp_cb(struct mgcp_response *r, void *priv)
-{
- struct mgcp_ctx *mgcp_ctx = priv;
-
- OSMO_ASSERT(mgcp_ctx);
-
- if (r->head.response_code != 200) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR,
- "MDCX/CN: response yields error: %d %s\n", r->head.response_code, r->head.comment);
- handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, true);
- return;
- }
-
- /* Notify the FSM that we got the response. */
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_MDCX_CN_RESP, mgcp_ctx);
-}
-
-/* Callback for ST_MDCX_CN_COMPL: wait for mgw response, move on with the MDCX
- * for the RAN side if we already have valid IP/Port data for the RAN sided
- * RTP stream. */
-static void fsm_mdcx_cn_compl_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct ran_conn *conn;
- struct gsm_trans *trans;
-
- OSMO_ASSERT(mgcp_ctx);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- switch (event) {
- case EV_MDCX_CN_RESP:
- break;
- default:
- handle_error(mgcp_ctx, MGCP_ERR_UNEXP_TEARDOWN, true);
- return;
- }
-
- /* Enter MDCX phase, but we must be sure that the Assigmnet on the A or
- * IuCS interface is complete (IP-Address and Port are valid) */
- osmo_fsm_inst_state_chg(fi, ST_MDCX_RAN, MGCP_ASS_TIMEOUT, MGCP_ASS_TIMEOUT_TIMER_NR);
-
- /* If we already have a valid remote port and IP-Address from the RAN side
- * call leg, the assignment has been completed before we got here, so we
- * may move on immediately */
- if (conn->rtp.remote_port_ran != 0 || strlen(conn->rtp.remote_addr_ran) > 0)
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_ASSIGN, mgcp_ctx);
-}
-
-static void mgw_mdcx_ran_resp_cb(struct mgcp_response *r, void *priv);
-
-/* Callback for ST_MDCX_RAN: wait for assignment completion, send MDCX for CN side to MGW */
-static void fsm_mdcx_ran_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct mgcp_client *mgcp;
- struct gsm_trans *trans;
- struct ran_conn *conn;
- struct mgcp_msg mgcp_msg;
- struct msgb *msg;
- int rc;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
- trans = mgcp_ctx->trans;
- OSMO_ASSERT(trans);
- conn = trans->conn;
- OSMO_ASSERT(conn);
-
- switch (event) {
- case EV_ASSIGN:
- break;
- default:
- handle_error(mgcp_ctx, MGCP_ERR_UNEXP_TEARDOWN, true);
- return;
- }
-
- LOGPFSML(fi, LOGL_DEBUG,
- "MDCX/RAN: completing connection for the CN side on MGW endpoint:%p, RAN expects RTP input on address %s:%u\n",
- mgcp_ctx->rtp_endpoint, conn->rtp.remote_addr_ran, conn->rtp.remote_port_ran);
-
- /* Generate MGCP message string */
- mgcp_msg = (struct mgcp_msg) {
- .verb = MGCP_VERB_MDCX,
- .presence = (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID | MGCP_MSG_PRESENCE_CONN_ID |
- MGCP_MSG_PRESENCE_CONN_MODE | MGCP_MSG_PRESENCE_AUDIO_IP |
- MGCP_MSG_PRESENCE_AUDIO_PORT),
- .call_id = mgcp_ctx->call_id,
- .conn_id = mgcp_ctx->conn_id_ran,
- .conn_mode = MGCP_CONN_RECV_SEND,
- .audio_ip = conn->rtp.remote_addr_ran,
- .audio_port = conn->rtp.remote_port_ran,
- .codecs[0] = conn->rtp.codec_ran,
- .codecs_len = 1
- };
- if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_ctx->rtp_endpoint, sizeof(mgcp_msg.endpoint)) >=
- MGCP_ENDPOINT_MAXLEN) {
- handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, true);
- return;
- }
-
- msg = mgcp_msg_gen(mgcp, &mgcp_msg);
- OSMO_ASSERT(msg);
-
- /* Transmit MGCP message to MGW */
- mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg);
- rc = mgcp_client_tx(mgcp, msg, mgw_mdcx_ran_resp_cb, mgcp_ctx);
- if (rc < 0) {
- handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, true);
- return;
- }
-
- osmo_fsm_inst_state_chg(fi, ST_MDCX_RAN_COMPL, MGCP_MGW_TIMEOUT, MGCP_MGW_TIMEOUT_TIMER_NR);
-}
-
-/* Callback for MGCP-Client: handle response for CN associated CRCX */
-static void mgw_mdcx_ran_resp_cb(struct mgcp_response *r, void *priv)
-{
- struct mgcp_ctx *mgcp_ctx = priv;
-
- OSMO_ASSERT(mgcp_ctx);
-
- if (r->head.response_code != 200) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR,
- "MDCX/RAN: response yields error: %d %s\n", r->head.response_code, r->head.comment);
- handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, true);
- return;
- }
-
- /* Notify the FSM that we got the response. */
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_MDCX_RAN_RESP, mgcp_ctx);
-}
-
-/* Callback for ST_MDCX_RAN_COMPL: check MGW response */
-static void fsm_mdcx_ran_compl_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- OSMO_ASSERT(mgcp_ctx);
-
- switch (event) {
- case EV_MDCX_RAN_RESP:
- break;
- default:
- handle_error(mgcp_ctx, MGCP_ERR_UNEXP_TEARDOWN, true);
- return;
- }
-
- LOGPFSML(fi, LOGL_DEBUG, "call active, waiting for teardown...\n");
- osmo_fsm_inst_state_chg(fi, ST_CALL, 0, 0);
-}
-
-static void mgw_dlcx_all_resp_cb(struct mgcp_response *r, void *priv);
-
-/* Callback for ST_CALL: call is active, send DLCX for both sides on teardown */
-static void fsm_call_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
-
- struct mgcp_ctx *mgcp_ctx = (struct mgcp_ctx *)data;
- struct mgcp_client *mgcp;
- struct mgcp_msg mgcp_msg;
- struct msgb *msg;
- int rc;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
-
- LOGPFSML(fi, LOGL_DEBUG,
- "DLCX: removing connection for the RAN and CN side on MGW endpoint:%s...\n", mgcp_ctx->rtp_endpoint);
-
- /* Generate MGCP message string */
- mgcp_msg = (struct mgcp_msg) {
- .verb = MGCP_VERB_DLCX,
- .presence = (MGCP_MSG_PRESENCE_ENDPOINT | MGCP_MSG_PRESENCE_CALL_ID),
- .call_id = mgcp_ctx->call_id
- };
- if (osmo_strlcpy(mgcp_msg.endpoint, mgcp_ctx->rtp_endpoint, sizeof(mgcp_msg.endpoint)) >=
- MGCP_ENDPOINT_MAXLEN) {
- handle_error(mgcp_ctx, MGCP_ERR_TOOLONG, true);
- return;
- }
-
- msg = mgcp_msg_gen(mgcp, &mgcp_msg);
- OSMO_ASSERT(msg);
-
- /* Transmit MGCP message to MGW */
- mgcp_ctx->mgw_pending_trans = mgcp_msg_trans_id(msg);
- rc = mgcp_client_tx(mgcp, msg, mgw_dlcx_all_resp_cb, mgcp_ctx);
- if (rc < 0) {
- handle_error(mgcp_ctx, MGCP_ERR_MGW_TX_FAIL, true);
- return;
- }
-
- osmo_fsm_inst_state_chg(fi, ST_HALT, MGCP_MGW_TIMEOUT, MGCP_MGW_TIMEOUT_TIMER_NR);
-}
-
-/* Callback for MGCP-Client: handle response for CN associated CRCX */
-static void mgw_dlcx_all_resp_cb(struct mgcp_response *r, void *priv)
-{
- struct mgcp_ctx *mgcp_ctx = priv;
-
- OSMO_ASSERT(mgcp_ctx);
-
- /* DLCX is the only command where 250 is permitted as positive result */
- if (r->head.response_code != 200 && r->head.response_code != 250) {
- LOGPFSML(mgcp_ctx->fsm, LOGL_ERROR,
- "DLCX: response yields error: %d %s\n", r->head.response_code, r->head.comment);
- handle_error(mgcp_ctx, MGCP_ERR_MGW_FAIL, true);
- return;
- }
-
- /* Notify the FSM that we got the response. */
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_DLCX_ALL_RESP, mgcp_ctx);
-}
-
-/* Callback for ST_HALT: Terminate the state machine */
-static void fsm_halt_cb(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct mgcp_ctx *mgcp_ctx = data;
- struct mgcp_client *mgcp;
-
- OSMO_ASSERT(mgcp_ctx);
- mgcp = mgcp_ctx->mgcp;
- OSMO_ASSERT(mgcp);
-
- /* NOTE: We must not free the context information now, we have to
- * wait until msc_mgcp_call_release() is called. Then we are sure
- * that the logic controlling us is fully aware that the context
- * information is freed. If we would free early now the controlling
- * logic might mistakenly think that the context info is still alive,
- * so lets keep the context info until we are explicitly asked for
- * throwing it away. */
- if (mgcp_ctx->free_ctx) {
- /* Be sure that there is no pending MGW transaction */
- mgcp_client_cancel(mgcp, mgcp_ctx->mgw_pending_trans);
-
- /* Free FSM and its context information */
- osmo_fsm_inst_free(mgcp_ctx->fsm);
- talloc_free(mgcp_ctx);
- return;
- }
-
- osmo_fsm_inst_state_chg(fi, ST_HALT, MGCP_REL_TIMEOUT, MGCP_REL_TIMEOUT_TIMER_NR);
-}
-
-static struct osmo_fsm_state fsm_msc_mgcp_states[] = {
-
- /* Startup state machine, send CRCX for RAN side. */
- [ST_CRCX_RAN] = {
- .in_event_mask = S(EV_INIT),
- .out_state_mask = S(ST_HALT) | S(ST_CALL) | S(ST_CRCX_CN),
- .name = OSMO_STRINGIFY(ST_CRCX_RAN),
- .action = fsm_crcx_ran_cb,
- },
- /* When the response to the RAN CRCX is received, then proceed with
- sending the CRCX for CN side */
- [ST_CRCX_CN] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR) | S(EV_CRCX_RAN_RESP),
- .out_state_mask = S(ST_HALT) | S(ST_CALL) | S(ST_CRCX_COMPL),
- .name = OSMO_STRINGIFY(ST_CRCX_CN),
- .action = fsm_crcx_cn_cb,
- },
- /* Complete the CRCX phase by starting the assignment. Depending on the
- * RAT (Radio Access Technology), this will either trigger an
- * Assignment Request on the A-Interface or an RAB-Assignment on the
- * IU-interface */
- [ST_CRCX_COMPL] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR) | S(EV_CRCX_CN_RESP),
- .out_state_mask = S(ST_HALT) | S(ST_CALL) | S(ST_MDCX_CN),
- .name = OSMO_STRINGIFY(ST_CRCX_COMPL),
- .action = fsm_crcx_compl,
- },
- /* Wait for MSC to complete the assignment request, when complete, we
- * will enter the MDCX phase by sending an MDCX for the CN side to the
- * MGW */
- [ST_MDCX_CN] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR) | S(EV_CONNECT),
- .out_state_mask = S(ST_HALT) | S(ST_CALL) | S(ST_MDCX_CN_COMPL),
- .name = OSMO_STRINGIFY(ST_MDCX_CN),
- .action = fsm_mdcx_cn_cb,
- },
- /* We arrive in this state when the MDCX phase for the CN side has
- * completed we will check the IP/Port of the RAN connection. If this
- * data is valid we may continue with the MDCX phase for the RAN side.
- * If not we wait until the assinment completes on the A or on the IuCS
- * interface. The completion of the assignment will fill in the port and
- * IP-Address of the RAN side and way may continue then. */
- [ST_MDCX_CN_COMPL] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_MDCX_CN_RESP),
- .out_state_mask = S(ST_HALT) | S(ST_CALL) | S(ST_MDCX_RAN),
- .name = OSMO_STRINGIFY(ST_MDCX_CN_COMPL),
- .action = fsm_mdcx_cn_compl_cb,
- },
- /* When the response for the CN MDCX is received, send the MDCX for the
- * RAN side to the MGW */
- [ST_MDCX_RAN] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR) | S(EV_ASSIGN),
- .out_state_mask = S(ST_HALT) | S(ST_CALL) | S(ST_MDCX_RAN_COMPL),
- .name = OSMO_STRINGIFY(ST_MDCX_RAN),
- .action = fsm_mdcx_ran_cb,
- },
- /* The RAN side MDCX phase is complete when the response is received
- * from the MGW. The call is then active, we change to ST_CALL and wait
- * there until the call ends. */
- [ST_MDCX_RAN_COMPL] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR) | S(EV_MDCX_RAN_RESP),
- .out_state_mask = S(ST_HALT) | S(ST_CALL),
- .name = OSMO_STRINGIFY(ST_MDCX_RAN_COMPL),
- .action = fsm_mdcx_ran_compl_cb,
- },
- /* We are now in the active call phase, wait until the call is done
- * and send a DLCX then to remove all connections from the MGW */
- [ST_CALL] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR),
- .out_state_mask = S(ST_HALT),
- .name = OSMO_STRINGIFY(ST_CALL),
- .action = fsm_call_cb,
- },
- /* When the MGW confirms that the connections are terminated, then halt
- * the state machine. */
- [ST_HALT] = {
- .in_event_mask = S(EV_TEARDOWN) | S(EV_TEARDOWN_ERROR) | S(EV_DLCX_ALL_RESP),
- .out_state_mask = S(ST_HALT),
- .name = OSMO_STRINGIFY(ST_HALT),
- .action = fsm_halt_cb,
- },
-};
-
-/* State machine definition */
-static struct osmo_fsm fsm_msc_mgcp = {
- .name = "msc-mgcp",
- .states = fsm_msc_mgcp_states,
- .num_states = ARRAY_SIZE(fsm_msc_mgcp_states),
- .log_subsys = DMGCP,
- .timer_cb = fsm_timeout_cb,
- .event_names = msc_mgcp_fsm_evt_names,
-};
-
-/* Try to invoke call assignment and set trans->cc.assignment_started flag if invoked.
- * This is relevant for already ongoing calls -- scenario:
- * - subscriber is in an active voice call,
- * - another call is coming in.
- * For the second call coming in, we must wait to establish RTP and assignment until the first call is CC-Disconnected.
- */
-int msc_mgcp_try_call_assignment(struct gsm_trans *trans)
-{
- struct ran_conn *conn = trans->conn;
- if (trans->cc.assignment_started)
- return 0;
- if (conn->rtp.mgcp_ctx) {
- LOGPFSMSL(conn->fi, DMGCP, LOGL_INFO, "Another call is already ongoing, not assigning yet\n");
- return 0;
- }
- LOGPFSMSL(conn->fi, DMGCP, LOGL_INFO, "Starting call assignment\n");
- trans->cc.assignment_started = true;
- return msc_mgcp_call_assignment(trans);
-}
-
-/* Notify that a new call begins. This will create a connection for the
- * RAN and the CN on the MGW.
- * Parameter:
- * trans: transaction context.
- * Returns -EINVAL on error, 0 on success. */
-int msc_mgcp_call_assignment(struct gsm_trans *trans)
-{
- struct mgcp_ctx *mgcp_ctx;
- static bool fsm_registered = false;
- struct ran_conn *conn;
- struct mgcp_client *mgcp;
-
- OSMO_ASSERT(trans);
-
- if (!trans->conn) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid conn, call assignment failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
-
- conn = trans->conn;
- mgcp = conn->network->mgw.client;
- OSMO_ASSERT(mgcp);
-
- if (conn->rtp.mgcp_ctx) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) double assignment detected, dropping...\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
-
-#ifdef BUILD_IU
- /* FIXME: HACK. where to scope the RAB Id? At the conn / subscriber / ranap_ue_conn_ctx? */
- static uint8_t next_iu_rab_id = 1;
- if (conn->via_ran == OSMO_RAT_UTRAN_IU)
- conn->iu.rab_id = next_iu_rab_id++;
-#endif
-
- /* Register the fsm description (if not already done) */
- if (fsm_registered == false) {
- osmo_fsm_register(&fsm_msc_mgcp);
- fsm_registered = true;
- }
-
- /* Allocate and configure a new fsm instance */
- mgcp_ctx = talloc_zero(NULL, struct mgcp_ctx);
- OSMO_ASSERT(mgcp_ctx);
-
- if (osmo_strlcpy(mgcp_ctx->rtp_endpoint, mgcp_client_rtpbridge_wildcard(mgcp), sizeof(mgcp_ctx->rtp_endpoint))
- >= sizeof(mgcp_ctx->rtp_endpoint)) {
- talloc_free(mgcp_ctx);
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) endpoint identifier exceeds maximum length: %s\n",
- vlr_subscr_name(trans->vsub), osmo_quote_str(mgcp_client_rtpbridge_wildcard(mgcp), -1));
- return -EINVAL;
- }
- mgcp_ctx->fsm = osmo_fsm_inst_alloc(&fsm_msc_mgcp, NULL, NULL, LOGL_DEBUG, NULL);
- OSMO_ASSERT(mgcp_ctx->fsm);
- osmo_fsm_inst_update_id_f(mgcp_ctx->fsm, "%s_%s_trans%d",
- vlr_subscr_name(trans->vsub), ran_conn_get_conn_id(conn), trans->transaction_id);
- mgcp_ctx->fsm->priv = mgcp_ctx;
- mgcp_ctx->mgcp = mgcp;
- mgcp_ctx->trans = trans;
- mgcp_ctx->call_id = trans->callref;
-
- /* start state machine */
- OSMO_ASSERT(mgcp_ctx->fsm->state == ST_CRCX_RAN);
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_INIT, mgcp_ctx);
-
- conn->rtp.mgcp_ctx = mgcp_ctx;
-
- LOGP(DMGCP, LOGL_DEBUG, "(subscriber:%s) call assignment initiated\n",
- vlr_subscr_name(conn->vsub));
-
- return 0;
-}
-
-/* Inform the FSM that the assignment (RAN connection) is now complete.
- * Parameter:
- * conn: RAN connection context.
- * port: port number of the remote leg.
- * addr: IP-address of the remote leg.
- * Returns -EINVAL on error, 0 on success. */
-int msc_mgcp_ass_complete(struct ran_conn *conn, uint16_t port, char *addr)
-{
- struct mgcp_ctx *mgcp_ctx;
-
- OSMO_ASSERT(conn);
-
- if (port == 0) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid remote call leg port, assignment completion failed\n",
- vlr_subscr_name(conn->vsub));
- return -EINVAL;
- }
- if (!addr || strlen(addr) <= 0) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) missing remote call leg address, assignment completion failed\n",
- vlr_subscr_name(conn->vsub));
- return -EINVAL;
- }
-
- mgcp_ctx = conn->rtp.mgcp_ctx;
- if (!mgcp_ctx) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid mgcp context, assignment completion failed.\n",
- vlr_subscr_name(conn->vsub));
- return -EINVAL;
- }
-
- /* Memorize port and IP-Address of the remote RAN call leg. We need this
- * information at latest when we enter the MDCX phase for the RAN side. */
- conn->rtp.remote_port_ran = port;
- osmo_strlcpy(conn->rtp.remote_addr_ran, addr, sizeof(conn->rtp.remote_addr_ran));
-
- LOGP(DMGCP, LOGL_DEBUG, "(subscriber:%s) assignment completed, rtp %s:%d.\n",
- vlr_subscr_name(conn->vsub), conn->rtp.remote_addr_ran, port);
-
- /* Note: We only dispatch the event if we are really waiting for the
- * assignment, if we are not yet waiting, there is no need to loudly
- * broadcast an event that the all other states do not understand anyway */
- if (mgcp_ctx->fsm->state == ST_MDCX_RAN)
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_ASSIGN, mgcp_ctx);
-
- return 0;
-}
-
-/* Notify the MGCP context that Assignment failed.
- * This will end the "ringing" on the other call leg, and will usually result in L3 and conn release (i.e. when no other
- * transactions are still pending, which is usually the case). */
-int msc_mgcp_ass_fail(struct ran_conn *conn)
-{
- struct mgcp_ctx *mgcp_ctx;
-
- OSMO_ASSERT(conn);
-
- mgcp_ctx = conn->rtp.mgcp_ctx;
- if (!mgcp_ctx)
- return -EINVAL;
-
- LOGPFSMSL(conn->fi, DMGCP, LOGL_ERROR, "Assignment failed\n");
-
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_TEARDOWN_ERROR, mgcp_ctx);
- return 0;
-}
-
-/* Make the connection of a previously assigned call complete
- * Parameter:
- * trans: transaction context.
- * port: port number of the remote leg.
- * addr: IP-address of the remote leg.
- * Returns -EINVAL on error, 0 on success. */
-int msc_mgcp_call_complete(struct gsm_trans *trans, uint16_t port, char *addr)
-{
- struct mgcp_ctx *mgcp_ctx;
- struct ran_conn *conn;
-
- OSMO_ASSERT(trans);
- OSMO_ASSERT(addr);
-
- if (port == 0) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid remote call leg port, call completion failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
- if (!addr || strlen(addr) <= 0) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) missing remote call leg address, call completion failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
- if (!trans->conn) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid conn, call completion failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
- if (!trans->conn->rtp.mgcp_ctx) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid mgcp context, call completion failed.\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
- if (!trans->conn->rtp.mgcp_ctx->fsm) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) no FSM, call completion failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
-
- mgcp_ctx = trans->conn->rtp.mgcp_ctx;
-
- /* The FSM should already have passed all CRCX phases and be ready to move
- * on with the MDCX phases. */
- if (mgcp_ctx->fsm->state != ST_MDCX_CN) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid call state, call completion failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
-
- conn = trans->conn;
- osmo_strlcpy(conn->rtp.remote_addr_cn, addr, sizeof(conn->rtp.remote_addr_cn));
- conn->rtp.remote_port_cn = port;
-
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_CONNECT, mgcp_ctx);
-
- LOGP(DMGCP, LOGL_DEBUG, "(subscriber:%s) call completion initiated\n",
- vlr_subscr_name(conn->vsub));
-
- return 0;
-}
-
-static struct gsm_trans *find_waiting_call(struct ran_conn *conn)
-{
- struct gsm_trans *trans;
- struct gsm_network *net = conn->network;
-
- llist_for_each_entry(trans, &net->trans_list, entry) {
- if (trans->conn != conn)
- continue;
- if (trans->protocol != GSM48_PDISC_CC)
- continue;
- if (trans->cc.assignment_started)
- continue;
- return trans;
- }
- return NULL;
-}
-
-/* Release ongoing call.
- * Parameter:
- * trans: connection context.
- * Returns -EINVAL on error, 0 on success. */
-int msc_mgcp_call_release(struct gsm_trans *trans)
-{
- struct mgcp_ctx *mgcp_ctx;
- struct ran_conn *conn = trans->conn;
- struct gsm_trans *waiting_trans;
-
- OSMO_ASSERT(trans);
-
- if (!conn) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid conn, call release failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
- mgcp_ctx = conn->rtp.mgcp_ctx;
- if (!mgcp_ctx) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) invalid mgcp context, call release failed.\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
- if (!mgcp_ctx->fsm) {
- LOGP(DMGCP, LOGL_ERROR, "(subscriber:%s) no FSM, call release failed\n",
- vlr_subscr_name(trans->vsub));
- return -EINVAL;
- }
-
- if (mgcp_ctx->trans != trans) {
- LOGP(DMGCP, LOGL_DEBUG, "(ti %02x %s) call release for background CC transaction\n",
- trans->transaction_id, vlr_subscr_name(trans->vsub));
- return 0;
- }
-
- LOGP(DMGCP, LOGL_DEBUG, "(ti %02x %s) Call release: tearing down MGW endpoint\n",
- trans->transaction_id, vlr_subscr_name(trans->vsub));
-
- /* Inform the FSM that as soon as it reaches ST_HALT it may free
- * all context information immediately */
- mgcp_ctx->free_ctx = true;
-
- /* Initaite teardown, regardless of which state we are currently
- * in */
- osmo_fsm_inst_dispatch(mgcp_ctx->fsm, EV_TEARDOWN, mgcp_ctx);
-
- /* Prevent any further operation that is triggered from outside by
- * overwriting the context pointer with NULL. The FSM will now
- * take care for a graceful shutdown and when done it will free
- * all related context information */
- conn->rtp.mgcp_ctx = NULL;
-
- /* If there is another call still waiting to be activated, this is the time when the mgcp_ctx is available again
- * and the other call can start assigning. */
- waiting_trans = find_waiting_call(conn);
- if (waiting_trans) {
- LOGP(DMGCP, LOGL_DEBUG, "(ti %02x %s) Call waiting: starting Assignment\n",
- waiting_trans->transaction_id, vlr_subscr_name(trans->vsub));
- msc_mgcp_try_call_assignment(waiting_trans);
- }
-
- return 0;
-}
diff --git a/src/libmsc/msc_net_init.c b/src/libmsc/msc_net_init.c
new file mode 100644
index 000000000..51e859595
--- /dev/null
+++ b/src/libmsc/msc_net_init.c
@@ -0,0 +1,126 @@
+/* main MSC management code... */
+
+/*
+ * (C) 2010,2013 by Holger Hans Peter Freyther <zecke@selfish.org>
+ * (C) 2010 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/>.
+ *
+ */
+
+#include "bscconfig.h"
+
+#include <osmocom/core/tdef.h>
+
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/gsup_client_mux.h>
+#include <osmocom/msc/gsm_04_11_gsup.h>
+#include <osmocom/msc/gsm_09_11.h>
+
+struct osmo_tdef mncc_tdefs[] = {
+ {}
+};
+
+struct gsm_network *gsm_network_init(void *ctx, mncc_recv_cb_t mncc_recv)
+{
+ struct gsm_network *net;
+
+ net = talloc_zero(ctx, struct gsm_network);
+ if (!net)
+ return NULL;
+
+ net->plmn = (struct osmo_plmn_id){ .mcc=1, .mnc=1 };
+
+ /* Permit a compile-time default of A5/3 and A5/1 */
+ net->a5_encryption_mask = (1 << 3) | (1 << 1);
+
+ /* Use 30 min periodic update interval as sane default */
+ net->t3212 = 5;
+
+ net->mncc_guard_timeout = 180;
+ net->ncss_guard_timeout = 30;
+
+ net->paging_response_timer = MSC_PAGING_RESPONSE_TIMER_DEFAULT;
+
+ INIT_LLIST_HEAD(&net->trans_list);
+ INIT_LLIST_HEAD(&net->upqueue);
+ INIT_LLIST_HEAD(&net->neighbor_ident_list);
+
+ /* init statistics */
+ net->msc_ctrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
+ if (!net->msc_ctrs) {
+ talloc_free(net);
+ return NULL;
+ }
+ net->active_calls = osmo_counter_alloc("msc.active_calls");
+ net->active_nc_ss = osmo_counter_alloc("msc.active_nc_ss");
+
+ net->mncc_tdefs = mncc_tdefs;
+ net->mncc_recv = mncc_recv;
+
+ return net;
+}
+
+void gsm_network_set_mncc_sock_path(struct gsm_network *net, const char *mncc_sock_path)
+{
+ if (net->mncc_sock_path)
+ talloc_free(net->mncc_sock_path);
+ net->mncc_sock_path = mncc_sock_path ? talloc_strdup(net, mncc_sock_path) : NULL;
+}
+
+/* Allocate net->vlr so that the VTY may configure the VLR's data structures */
+int msc_vlr_alloc(struct gsm_network *net)
+{
+ net->vlr = vlr_alloc(net, &msc_vlr_ops);
+ if (!net->vlr)
+ return -ENOMEM;
+ net->vlr->user_ctx = net;
+ return 0;
+}
+
+/* Launch the VLR, i.e. its GSUP connection */
+int msc_vlr_start(struct gsm_network *net)
+{
+ OSMO_ASSERT(net->vlr);
+ OSMO_ASSERT(net->gcm);
+
+ return vlr_start(net->vlr, net->gcm);
+}
+
+int msc_gsup_client_start(struct gsm_network *net)
+{
+ struct ipaccess_unit *ipa_dev;
+
+ net->gcm = gsup_client_mux_alloc(net);
+ OSMO_ASSERT(net->gcm);
+
+ ipa_dev = talloc_zero(net->gcm, struct ipaccess_unit);
+ ipa_dev->unit_name = "MSC";
+ ipa_dev->serno = net->msc_ipa_name; /* NULL unless configured via VTY */
+ ipa_dev->swversion = PACKAGE_NAME "-" PACKAGE_VERSION;
+
+ *net->gcm = (struct gsup_client_mux){
+ .rx_cb = {
+ /* vlr.c sets up its own cb and data */
+ /* MSC-A and MSC-B set up their own cb and data */
+ [OSMO_GSUP_MESSAGE_CLASS_SMS] = { .func = gsm411_gsup_rx, .data = net->vlr },
+ [OSMO_GSUP_MESSAGE_CLASS_USSD] = { .func = gsm0911_gsup_rx, .data = net->vlr },
+ },
+ };
+
+ return gsup_client_mux_start(net->gcm, net->gsup_server_addr_str, net->gsup_server_port, ipa_dev);
+}
diff --git a/src/libmsc/msc_t.c b/src/libmsc/msc_t.c
new file mode 100644
index 000000000..ec5531fc2
--- /dev/null
+++ b/src/libmsc/msc_t.c
@@ -0,0 +1,962 @@
+/* The MSC-T role, a transitional RAN connection during Handover. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <inttypes.h>
+
+#include <osmocom/gsm/gsm48_ie.h>
+
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_a_remote.h>
+#include <osmocom/msc/ran_infra.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/ran_conn.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
+#include <osmocom/msc/ran_infra.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/gsm_data.h>
+
+static struct osmo_fsm msc_t_fsm;
+
+static struct msc_t *msc_t_find_by_handover_number(const char *handover_number)
+{
+ struct msub *msub;
+
+ llist_for_each_entry(msub, &msub_list, entry) {
+ struct msc_t *msc_t = msub_msc_t(msub);
+ if (!msc_t)
+ continue;
+ if (!*msc_t->inter_msc.handover_number)
+ continue;
+ if (strcmp(msc_t->inter_msc.handover_number, handover_number))
+ continue;
+ /* Found the assigned Handover Number */
+ return msc_t;
+ }
+ return NULL;
+}
+
+static uint64_t net_handover_number_next(struct gsm_network *net)
+{
+ uint64_t nr;
+ if (net->handover_number.next < net->handover_number.range_start
+ || net->handover_number.next > net->handover_number.range_end)
+ net->handover_number.next = net->handover_number.range_start;
+ nr = net->handover_number.next;
+ net->handover_number.next++;
+ return nr;
+}
+
+static int msc_t_assign_handover_number(struct msc_t *msc_t)
+{
+ int rc;
+ uint64_t started_at;
+ uint64_t ho_nr;
+ char ho_nr_str[VLR_MSISDN_LENGTH+1];
+ struct gsm_network *net = msc_t_net(msc_t);
+ bool usable = false;
+
+ started_at = ho_nr = net_handover_number_next(net);
+
+ if (!ho_nr) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "No Handover Number range defined in MSC config\n");
+ return -ENOENT;
+ }
+
+ do {
+ rc = snprintf(ho_nr_str, sizeof(ho_nr_str), "%"PRIu64, ho_nr);
+ if (rc <= 0 || rc >= sizeof(ho_nr_str)) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Cannot compose Handover Number string (rc=%d)\n", rc);
+ return -EINVAL;
+ }
+
+ if (!msc_t_find_by_handover_number(ho_nr_str)) {
+ usable = true;
+ break;
+ }
+
+ ho_nr = net_handover_number_next(net);
+ } while(ho_nr != started_at);
+
+ if (!usable) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "No Handover Number available\n");
+ return -EINVAL;
+ }
+
+ LOG_MSC_T(msc_t, LOGL_INFO, "Assigning Handover Number %s\n", ho_nr_str);
+ OSMO_STRLCPY_ARRAY(msc_t->inter_msc.handover_number, ho_nr_str);
+ return 0;
+}
+
+
+static struct msc_t *msc_t_priv(struct osmo_fsm_inst *fi)
+{
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(fi->fsm == &msc_t_fsm);
+ OSMO_ASSERT(fi->priv);
+ return fi->priv;
+}
+
+/* As a macro to log the caller's source file and line.
+ * Assumes presence of local msc_t variable. */
+#define msc_t_error(fmt, args...) do { \
+ msc_t->ho_success = false; \
+ LOG_MSC_T(msc_t, LOGL_ERROR, fmt, ##args); \
+ msc_t_clear(msc_t); \
+ } while(0)
+
+static void msc_t_send_handover_failure(struct msc_t *msc_t, enum gsm0808_cause cause)
+{
+ struct ran_msg ran_enc_msg = {
+ .msg_type = RAN_MSG_HANDOVER_FAILURE,
+ .handover_failure = {
+ .cause = cause,
+ },
+ };
+ struct an_apdu an_apdu = {
+ .an_proto = msc_t->c.ran->an_proto,
+ .msg = msc_role_ran_encode(msc_t->c.fi, &ran_enc_msg),
+ };
+ msc_t->ho_fail_sent = true;
+ if (!an_apdu.msg)
+ return;
+
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE, &an_apdu);
+ msgb_free(an_apdu.msg);
+}
+
+static int msc_t_ho_request_decode_and_store_cb(struct osmo_fsm_inst *msc_t_fi, void *data,
+ const struct ran_msg *ran_dec)
+{
+ struct msc_t *msc_t = msc_t_priv(msc_t_fi);
+
+ if (ran_dec->msg_type != RAN_MSG_HANDOVER_REQUEST) {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "Expected %s in incoming inter-MSC Handover message, got %s\n",
+ ran_msg_type_name(RAN_MSG_HANDOVER_REQUEST), ran_msg_type_name(ran_dec->msg_type));
+ return -EINVAL;
+ }
+
+ msc_t->inter_msc.cell_id_target = ran_dec->handover_request.cell_id_target;
+ msc_t->inter_msc.callref = ran_dec->handover_request.call_id;
+
+ /* TODO other parameters...?
+ * Global Call Reference
+ */
+ return 0;
+}
+
+/* On an icoming Handover Request from a remote MSC, we first need to set up an MGW endpoint, because the BSC needs to
+ * know our AoIP Transport Layer Address in the Handover Request message (which obviously the remote MSC doesn't send,
+ * it needs to be our local RTP address). Creating the MGW endpoint this is asynchronous, so we need to store the
+ * Handover Request data to forward to the BSC once the MGW endpoint is known.
+ */
+static int msc_t_decode_and_store_ho_request(struct msc_t *msc_t, const struct an_apdu *an_apdu)
+{
+ if (msc_role_ran_decode(msc_t->c.fi, an_apdu, msc_t_ho_request_decode_and_store_cb, NULL)) {
+ msc_t_error("Failed to decode Handover Request\n");
+ return -ENOTSUP;
+ }
+ /* Ok, decoding done, and above msc_t_ho_request_decode_and_store_cb() has retrieved what info we need at this
+ * point and stored it in msc_t->inter_msc.* */
+
+ /* We're storing this for use after async events, so need to make sure that each and every bit of data is copied
+ * and no longer references some msgb that might be deallocated when this returns, nor remains in a local stack
+ * variable of some ran_decode implementation. The simplest is to store the entire msgb. */
+ msc_t->inter_msc.ho_request = (struct an_apdu) {
+ .an_proto = an_apdu->an_proto,
+ .msg = msgb_copy(an_apdu->msg, "saved inter-MSC Handover Request"),
+ /* A decoded osmo_gsup_message often still references memory of within the msgb the GSUP was received
+ * in. So, any info from an_apdu->e_info that would be needed would have to be copied separately.
+ * Omit e_info completely. */
+ };
+ return 0;
+}
+
+/* On an incoming Handover Request from a remote MSC, the target cell was transmitted in the Handover Request message.
+ * Find the RAN peer and assign from the cell id decoded above in msc_t_decode_and_store_ho_request(). */
+static int msc_t_find_ran_peer_from_ho_request(struct msc_t *msc_t)
+{
+ struct msc_a *msc_a = msub_msc_a(msc_t->c.msub);
+ const struct neighbor_ident_entry *nie;
+ struct ran_peer *rp_from_neighbor_ident;
+ struct ran_peer *rp;
+
+ switch (msc_ho_find_target_cell(msc_a, &msc_t->inter_msc.cell_id_target,
+ &nie, &rp_from_neighbor_ident, &rp)) {
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ msc_t_error("Incoming Handover Request indicated target cell that belongs to a remote MSC:"
+ " Cell ID: %s; remote MSC: %s\n",
+ gsm0808_cell_id_name(&msc_t->inter_msc.cell_id_target),
+ neighbor_ident_addr_name(&nie->addr));
+ return -EINVAL;
+
+ case MSC_NEIGHBOR_TYPE_NONE:
+ msc_t_error("Incoming Handover Request for unknown cell %s\n",
+ gsm0808_cell_id_name(&msc_t->inter_msc.cell_id_target));
+ return -EINVAL;
+
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ /* That's what is expected: a local RAN peer, e.g. BSC, or a remote BSC from neighbor cfg. */
+ if (!rp)
+ rp = rp_from_neighbor_ident;
+ break;
+ }
+
+ OSMO_ASSERT(rp);
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "Incoming Handover Request indicates target cell %s,"
+ " which belongs to RAN peer %s\n",
+ gsm0808_cell_id_name(&msc_t->inter_msc.cell_id_target), rp->fi->id);
+
+ /* Finally we know where to direct the Handover */
+ msc_t_set_ran_peer(msc_t, rp);
+ return 0;
+}
+
+static int msc_t_send_stored_ho_request__decode_cb(struct osmo_fsm_inst *msc_t_fi, void *data,
+ const struct ran_msg *ran_dec)
+{
+ int rc;
+ struct an_apdu an_apdu;
+ struct msc_t *msc_t = msc_t_priv(msc_t_fi);
+ struct osmo_sockaddr_str *rtp_ran_local = data;
+
+ /* Copy ran_dec message to un-const so we can add the AoIP Transport Layer Address. All pointer references still
+ * remain on the same memory as ran_dec, which is fine. We're just going to encode it again right away. */
+ struct ran_msg ran_enc = *ran_dec;
+
+ if (ran_dec->msg_type != RAN_MSG_HANDOVER_REQUEST) {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "Expected %s in incoming inter-MSC Handover message, got %s\n",
+ ran_msg_type_name(RAN_MSG_HANDOVER_REQUEST), ran_msg_type_name(ran_dec->msg_type));
+ return -EINVAL;
+ }
+
+ /* Insert AoIP Transport Layer Address */
+ ran_enc.handover_request.rtp_ran_local = rtp_ran_local;
+
+ /* Finally ready to forward to BSC: encode and send out. */
+ an_apdu = (struct an_apdu){
+ .an_proto = msc_t->inter_msc.ho_request.an_proto,
+ .msg = msc_role_ran_encode(msc_t->c.fi, &ran_enc),
+ };
+ if (!an_apdu.msg)
+ return -EIO;
+ rc = msc_t_down_l2_co(msc_t, &an_apdu, true);
+ msgb_free(an_apdu.msg);
+ return rc;
+}
+
+/* The MGW endpoint is created, we know our AoIP Transport Layer Address and can send the Handover Request to the RAN
+ * peer. */
+static int msc_t_send_stored_ho_request(struct msc_t *msc_t)
+{
+ struct osmo_sockaddr_str *rtp_ran_local = call_leg_local_ip(msc_t->inter_msc.call_leg, RTP_TO_RAN);
+ if (!rtp_ran_local) {
+ msc_t_error("Local RTP address towards RAN is not set up properly, cannot send Handover Request\n");
+ return -EINVAL;
+ }
+
+ /* The Handover Request received from the remote MSC is fed through, except we need to insert our local AoIP
+ * Transport Layer Address, i.e. the RTP IP:port of the MGW towards the RAN side. So we actually need to decode,
+ * add the AoIP and re-encode. By nature of decoding, it goes through the decode callback. */
+ return msc_role_ran_decode(msc_t->c.fi, &msc_t->inter_msc.ho_request,
+ msc_t_send_stored_ho_request__decode_cb, rtp_ran_local);
+}
+
+static void msc_t_fsm_pending_first_co_initial_msg(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_t *msc_t = msc_t_priv(fi);
+ struct msc_a *msc_a = msub_msc_a(msc_t->c.msub);
+ struct an_apdu *an_apdu;
+
+ OSMO_ASSERT(msc_a);
+
+ switch (event) {
+
+ case MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST:
+ /* For an inter-MSC Handover coming in from a remote MSC, we do not yet know the RAN peer and AoIP
+ * Transport Layer Address.
+ * - RAN peer is found by decoding the actual Handover Request message and looking for the Cell
+ * Identifier (Target).
+ * - To be able to tell the BSC about an AoIP Transport Layer Address, we first need to create an MGW
+ * endpoint.
+ * For mere inter-BSC Handover, we know all of the above already. Find out which one this is.
+ */
+ an_apdu = data;
+ if (!msc_a->c.remote_to) {
+ /* Inter-BSC */
+
+ osmo_fsm_inst_state_chg(msc_t->c.fi, MSC_T_ST_WAIT_HO_REQUEST_ACK, 0, 0);
+ /* Inter-BSC. All should be set up, just forward the message. */
+ if (msc_t_down_l2_co(msc_t, an_apdu, true))
+ msc_t_error("Failed to send AN-APDU to RAN peer\n");
+ } else {
+ /* Inter-MSC */
+
+ if (msc_t->ran_conn) {
+ msc_t_error("Unexpected state for inter-MSC Handover: RAN peer is already set up\n");
+ return;
+ }
+
+ if (msc_t_decode_and_store_ho_request(msc_t, an_apdu))
+ return;
+
+ if (msc_t_find_ran_peer_from_ho_request(msc_t))
+ return;
+
+ /* Relying on timeout of the MGW operations, see onenter() for this state. */
+ osmo_fsm_inst_state_chg(msc_t->c.fi, MSC_T_ST_WAIT_LOCAL_RTP, 0, 0);
+ }
+ return;
+
+ case MSC_T_EV_CN_CLOSE:
+ msc_t_clear(msc_t);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+void msc_t_fsm_wait_local_rtp_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct msc_t *msc_t = msc_t_priv(fi);
+ struct msc_a *msc_a = msub_msc_a(msc_t->c.msub);
+
+ /* This only happens on inter-MSC HO incoming from a remote MSC */
+ if (!msc_a->c.remote_to) {
+ msc_t_error("Unexpected state: this is not an inter-MSC Handover\n");
+ return;
+ }
+
+ if (msc_t->inter_msc.call_leg) {
+ msc_t_error("Unexpected state: call leg already set up\n");
+ return;
+ }
+
+ msc_t->inter_msc.call_leg = call_leg_alloc(msc_t->c.fi,
+ MSC_EV_CALL_LEG_TERM,
+ MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,
+ MSC_EV_CALL_LEG_RTP_COMPLETE,
+ MSC_EV_CALL_LEG_RTP_RELEASED);
+ if (!msc_t->inter_msc.call_leg
+ || call_leg_ensure_ci(msc_t->inter_msc.call_leg, RTP_TO_RAN, msc_t->inter_msc.callref, NULL, NULL, NULL)
+ || call_leg_ensure_ci(msc_t->inter_msc.call_leg, RTP_TO_CN, msc_t->inter_msc.callref, NULL, NULL, NULL)) {
+ msc_t_error("Failed to set up call leg\n");
+ return;
+ }
+ /* Now wait for two MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE, one per RTP connection */
+}
+
+void msc_t_fsm_wait_local_rtp(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_t *msc_t = msc_t_priv(fi);
+ struct rtp_stream *rtps;
+
+ switch (event) {
+ case MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE:
+ rtps = data;
+ if (!rtps) {
+ msc_t_error("Invalid data for MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE\n");
+ return;
+ }
+ /* If both to-RAN and to-CN sides have a CI set up, we can continue. */
+ if (!call_leg_local_ip(msc_t->inter_msc.call_leg, RTP_TO_RAN)
+ || !call_leg_local_ip(msc_t->inter_msc.call_leg, RTP_TO_CN))
+ return;
+
+ osmo_fsm_inst_state_chg(msc_t->c.fi, MSC_T_ST_WAIT_HO_REQUEST_ACK, 0, 0);
+ msc_t_send_stored_ho_request(msc_t);
+ return;
+
+ case MSC_EV_CALL_LEG_RTP_RELEASED:
+ case MSC_EV_CALL_LEG_TERM:
+ msc_t->inter_msc.call_leg = NULL;
+ msc_t_error("Failed to set up MGW endpoint\n");
+ return;
+
+ case MSC_MNCC_EV_CALL_ENDED:
+ msc_t->inter_msc.mncc_forwarding_to_remote_cn = NULL;
+ return;
+
+ case MSC_T_EV_CN_CLOSE:
+ case MSC_T_EV_MO_CLOSE:
+ msc_t_clear(msc_t);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static int msc_t_patch_and_send_ho_request_ack(struct msc_t *msc_t, const struct an_apdu *incoming_an_apdu,
+ const struct ran_msg *ran_dec)
+{
+ int rc;
+ struct rtp_stream *rtp_ran = msc_t->inter_msc.call_leg? msc_t->inter_msc.call_leg->rtp[RTP_TO_RAN] : NULL;
+ struct rtp_stream *rtp_cn = msc_t->inter_msc.call_leg? msc_t->inter_msc.call_leg->rtp[RTP_TO_CN] : NULL;
+ /* Since it's BCD, it needs rounded-up half the char* length of an MSISDN plus a type byte.
+ * But no need to introduce obscure math to save a few stack bytes, just have more. */
+ uint8_t msisdn_enc_buf[VLR_MSISDN_LENGTH + 1];
+ /* Copy an_apdu and an_apdu->e_info in "copy-on-write" method, because they are const and we
+ * need to add the Handover Number to e_info. */
+ const struct ran_handover_request_ack *r = &ran_dec->handover_request_ack;
+ struct ran_msg ran_enc = *ran_dec;
+ struct osmo_gsup_message e_info = {};
+ struct an_apdu an_apdu = {
+ .an_proto = incoming_an_apdu->an_proto,
+ .e_info = &e_info,
+ };
+ if (incoming_an_apdu->e_info)
+ e_info = *incoming_an_apdu->e_info;
+
+ rc = msc_t_assign_handover_number(msc_t);
+ if (rc)
+ return rc;
+
+ rc = gsm48_encode_bcd_number(msisdn_enc_buf, sizeof(msisdn_enc_buf), 0,
+ msc_t->inter_msc.handover_number);
+ if (rc <= 0)
+ return -EINVAL;
+
+ e_info.msisdn_enc = msisdn_enc_buf;
+ e_info.msisdn_enc_len = rc;
+
+ /* Also need to fetch the RTP IP:port from AoIP Transport Address IE to tell the MGW about it */
+ if (rtp_ran) {
+ if (osmo_sockaddr_str_is_set(&r->remote_rtp)) {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "From Handover Request Ack, got " OSMO_SOCKADDR_STR_FMT "\n",
+ OSMO_SOCKADDR_STR_FMT_ARGS(&r->remote_rtp));
+ rtp_stream_set_remote_addr(rtp_ran, &r->remote_rtp);
+ } else {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "No RTP IP:port in Handover Request Ack\n");
+ }
+ if (r->codec_present) {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "From Handover Request Ack, got %s\n",
+ osmo_mgcpc_codec_name(r->codec));
+ rtp_stream_set_codec(rtp_ran, r->codec);
+ if (rtp_cn)
+ rtp_stream_set_codec(rtp_cn, r->codec);
+ } else {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "No codec in Handover Request Ack\n");
+ }
+ rtp_stream_commit(rtp_ran);
+ } else {
+ LOG_MSC_T(msc_t, LOGL_DEBUG, "No RTP to RAN set up yet\n");
+ }
+
+ /* Remove that AoIP Transport Layer IE so it doesn't get sent to the remote MSC */
+ ran_enc.handover_request_ack.remote_rtp = (struct osmo_sockaddr_str){};
+
+ an_apdu.msg = msc_role_ran_encode(msc_t->c.fi, &ran_enc);
+ if (!an_apdu.msg)
+ return -EIO;
+ /* Send to remote MSC via msc_a_remote role */
+ rc = msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE, &an_apdu);
+ msgb_free(an_apdu.msg);
+ return rc;
+}
+
+static int msc_t_wait_ho_request_ack_decode_cb(struct osmo_fsm_inst *msc_t_fi, void *data,
+ const struct ran_msg *ran_dec)
+{
+ int rc;
+ struct msc_t *msc_t = msc_t_priv(msc_t_fi);
+ struct msc_a *msc_a = msub_msc_a(msc_t->c.msub);
+ const struct an_apdu *an_apdu = data;
+
+ switch (ran_dec->msg_type) {
+ case RAN_MSG_HANDOVER_REQUEST_ACK:
+ if (msc_a->c.remote_to) {
+ /* inter-MSC. Add Handover Number, remove AoIP Transport Layer Address. */
+ rc = msc_t_patch_and_send_ho_request_ack(msc_t, an_apdu, ran_dec);
+ } else {
+ /* inter-BSC. Just send as-is, with correct event. */
+ rc = msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE,
+ an_apdu);
+ }
+ if (rc)
+ msc_t_error("Failed to send HO Request Ack\n");
+ else
+ osmo_fsm_inst_state_chg(msc_t->c.fi, MSC_T_ST_WAIT_HO_COMPLETE, 0, 0);
+ return 0;
+
+ case RAN_MSG_HANDOVER_FAILURE:
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE, an_apdu);
+ return 0;
+
+ case RAN_MSG_CLEAR_REQUEST:
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST,
+ an_apdu);
+ return 0;
+
+ default:
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Unexpected message during Prepare Handover procedure: %s\n",
+ ran_msg_type_name(ran_dec->msg_type));
+ /* Let's just forward anyway. */
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST,
+ an_apdu);
+ return 0;
+ }
+}
+
+static void msc_t_fsm_wait_ho_request_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_t *msc_t = msc_t_priv(fi);
+ struct an_apdu *an_apdu;
+
+ switch (event) {
+
+ case MSC_EV_FROM_RAN_UP_L2:
+ an_apdu = data;
+ /* For inter-MSC Handover, we need to examine the message type. Depending on the response, we must
+ * dispatch MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE or MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE, which
+ * ensures the correct E-interface message type. And we need to include the Handover Number.
+ * For mere inter-BSC Handover, we know that our osmo-msc internals don't care much about which event
+ * dispatches a Handover Failure or Handover Request Ack, so we could skip the decoding. But it is a
+ * premature optimization that complicates comparing an inter-BSC with an inter-MSC HO. */
+ msc_role_ran_decode(msc_t->c.fi, an_apdu, msc_t_wait_ho_request_ack_decode_cb, an_apdu);
+ /* Action continues in msc_t_wait_ho_request_ack_decode_cb() */
+ return;
+
+ case MSC_EV_FROM_RAN_CONN_RELEASED:
+ msc_t_clear(msc_t);
+ return;
+
+ case MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ an_apdu = data;
+ msc_t_down_l2_co(msc_t, an_apdu, false);
+ return;
+
+ case MSC_EV_CALL_LEG_RTP_RELEASED:
+ case MSC_EV_CALL_LEG_TERM:
+ msc_t->inter_msc.call_leg = NULL;
+ msc_t_error("Failed to set up MGW endpoint\n");
+ return;
+
+ case MSC_MNCC_EV_CALL_ENDED:
+ msc_t->inter_msc.mncc_forwarding_to_remote_cn = NULL;
+ return;
+
+ case MSC_T_EV_CN_CLOSE:
+ case MSC_T_EV_MO_CLOSE:
+ msc_t_clear(msc_t);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static int msc_t_wait_ho_complete_decode_cb(struct osmo_fsm_inst *msc_t_fi, void *data,
+ const struct ran_msg *ran_dec)
+{
+ struct msc_t *msc_t = msc_t_priv(msc_t_fi);
+ struct msc_a *msc_a = msub_msc_a(msc_t->c.msub);
+ struct msc_i *msc_i;
+ const struct an_apdu *an_apdu = data;
+
+ switch (ran_dec->msg_type) {
+ case RAN_MSG_HANDOVER_COMPLETE:
+ msc_t->ho_success = true;
+
+ /* For both inter-BSC local to this MSC and inter-MSC Handover for a remote MSC-A, forward the Handover
+ * Complete message so that the MSC-A can change the MSC-T (transitional) to a proper MSC-I role. */
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST, an_apdu);
+
+ /* For inter-BSC Handover, the Handover Complete event has already cleaned up this msc_t, and it is
+ * already gone and deallocated. */
+ if (!msc_a->c.remote_to)
+ return 0;
+
+ /* For inter-MSC Handover, the remote MSC-A only turns its msc_t_remote into an msc_i_remote on
+ * the same GSUP link. We are here on the MSC-B side of the GSUP link and have to take care of
+ * creating an MSC-I over here to match the msc_i_remote at MSC-A. */
+ msc_i = msc_i_alloc(msc_t->c.msub, msc_t->c.ran);
+ if (!msc_i) {
+ msc_t_error("Failed to create MSC-I role\n");
+ return -1;
+ }
+
+ msc_i->inter_msc.mncc_forwarding_to_remote_cn = msc_t->inter_msc.mncc_forwarding_to_remote_cn;
+ mncc_call_reparent(msc_i->inter_msc.mncc_forwarding_to_remote_cn,
+ msc_i->c.fi, -1, MSC_MNCC_EV_CALL_ENDED, NULL, NULL);
+
+ msc_i->inter_msc.call_leg = msc_t->inter_msc.call_leg;
+ call_leg_reparent(msc_i->inter_msc.call_leg,
+ msc_i->c.fi,
+ MSC_EV_CALL_LEG_TERM,
+ MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE,
+ MSC_EV_CALL_LEG_RTP_COMPLETE,
+ MSC_EV_CALL_LEG_RTP_RELEASED);
+
+ /* msc_i_set_ran_conn() properly "steals" the ran_conn from msc_t */
+ msc_i_set_ran_conn(msc_i, msc_t->ran_conn);
+
+ /* Nicked everything worth keeping from MSC-T, discard now. */
+ msc_t_clear(msc_t);
+ return 0;
+
+ case RAN_MSG_HANDOVER_FAILURE:
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PREPARE_HANDOVER_FAILURE, an_apdu);
+ return 0;
+
+ default:
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Unexpected message during Prepare Handover procedure: %s\n",
+ ran_msg_type_name(ran_dec->msg_type));
+ /* Let's just forward anyway. Fall thru */
+ case RAN_MSG_HANDOVER_DETECT:
+ case RAN_MSG_CLEAR_REQUEST:
+ msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST,
+ an_apdu);
+ return 0;
+ }
+}
+
+static void msc_t_fsm_wait_ho_complete(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_t *msc_t = msc_t_priv(fi);
+ struct an_apdu *an_apdu;
+
+ switch (event) {
+
+ case MSC_EV_FROM_RAN_UP_L2:
+ an_apdu = data;
+ /* We need to catch the Handover Complete message in order to send it as a SendEndSignal Request */
+ msc_role_ran_decode(msc_t->c.fi, an_apdu, msc_t_wait_ho_complete_decode_cb, an_apdu);
+ return;
+
+ case MSC_EV_FROM_RAN_CONN_RELEASED:
+ msc_t_clear(msc_t);
+ return;
+
+ case MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ an_apdu = data;
+ msc_t_down_l2_co(msc_t, an_apdu, false);
+ return;
+
+ case MSC_EV_CALL_LEG_RTP_RELEASED:
+ case MSC_EV_CALL_LEG_TERM:
+ msc_t->inter_msc.call_leg = NULL;
+ msc_t_error("Failed to set up MGW endpoint\n");
+ return;
+
+ case MSC_MNCC_EV_CALL_ENDED:
+ msc_t->inter_msc.mncc_forwarding_to_remote_cn = NULL;
+ return;
+
+ case MSC_T_EV_CN_CLOSE:
+ case MSC_T_EV_MO_CLOSE:
+ msc_t_clear(msc_t);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+void msc_t_mncc_cb(struct mncc_call *mncc_call, const union mncc_msg *mncc_msg, void *data)
+{
+ struct msc_t *msc_t = data;
+ struct gsm_mncc_number nr = {
+ .plan = 1,
+ };
+ OSMO_STRLCPY_ARRAY(nr.number, msc_t->inter_msc.handover_number);
+
+ switch (mncc_msg->msg_type) {
+ case MNCC_RTP_CREATE:
+ mncc_call_incoming_tx_setup_cnf(mncc_call, &nr);
+ return;
+ default:
+ return;
+ }
+}
+
+struct mncc_call *msc_t_check_call_to_handover_number(const struct gsm_mncc *msg)
+{
+ struct msc_t *msc_t;
+ const char *handover_number;
+ struct mncc_call_incoming_req req;
+ struct mncc_call *mncc_call;
+
+ if (!(msg->fields & MNCC_F_CALLED))
+ return NULL;
+
+ handover_number = msg->called.number;
+ msc_t = msc_t_find_by_handover_number(handover_number);
+
+ if (!msc_t)
+ return NULL;
+
+ if (msc_t->inter_msc.mncc_forwarding_to_remote_cn) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Incoming call for inter-MSC call forwarding,"
+ " but this MSC-T role already has an MNCC FSM set up\n");
+ return NULL;
+ }
+
+ if (!msc_t->inter_msc.call_leg
+ || !msc_t->inter_msc.call_leg->rtp[RTP_TO_CN]) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Incoming call for inter-MSC call forwarding,"
+ " but this MSC-T has no RTP stream ready for MNCC\n");
+ return NULL;
+ }
+
+ mncc_call = mncc_call_alloc(msc_t_vsub(msc_t),
+ msc_t->c.fi,
+ MSC_MNCC_EV_CALL_COMPLETE,
+ MSC_MNCC_EV_CALL_ENDED,
+ msc_t_mncc_cb, msc_t);
+ if (!mncc_call) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Failed to set up call forwarding from remote MSC\n");
+ return NULL;
+ }
+ msc_t->inter_msc.mncc_forwarding_to_remote_cn = mncc_call;
+
+ if (mncc_call_set_rtp_stream(mncc_call, msc_t->inter_msc.call_leg->rtp[RTP_TO_CN])) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Failed to set up call forwarding from remote MSC\n");
+ osmo_fsm_inst_term(mncc_call->fi, OSMO_FSM_TERM_REGULAR, NULL);
+ return NULL;
+ }
+
+ req = (struct mncc_call_incoming_req){
+ .setup_req_msg = *msg,
+ .bearer_cap_present = true,
+ .bearer_cap = {
+ /* TODO derive values from actual config */
+ /* FIXME are there no defines or enums for these numbers!? */
+ /* Table 10.5.102/3GPP TS 24.008: Bearer capability information element:
+ * octet 3 of bearer cap for speech says 3 = "1 1 dual rate support MS/full rate speech version
+ * 1 preferred, half rate speech version 1 also supported" */
+ .radio = 3,
+ /* Table 10.5.103/3GPP TS 24.008 Bearer capability information element:
+ * 0: FR1, 2: FR2, 4: FR3, 1: HR1, 5: HR3, actually in this order. -1 marks the end of the list. */
+ .speech_ver = { 0, 2, 4, 1, 5, -1 },
+ },
+ };
+ if (mncc_call_incoming_start(mncc_call, &req)) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Failed to set up call forwarding from remote MSC\n");
+ osmo_fsm_inst_term(mncc_call->fi, OSMO_FSM_TERM_REGULAR, NULL);
+ return NULL;
+ }
+ return mncc_call;
+}
+
+static void msc_t_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_t *msc_t = msc_t_priv(fi);
+
+ if (!msc_t->ho_success && !msc_t->ho_fail_sent)
+ msc_t_send_handover_failure(msc_t, GSM0808_CAUSE_EQUIPMENT_FAILURE);
+
+ if (msc_t->ran_conn)
+ ran_conn_msc_role_gone(msc_t->ran_conn, msc_t->c.fi);
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msc_t_fsm_states[] = {
+ [MSC_T_ST_PENDING_FIRST_CO_INITIAL_MSG] = {
+ .name = "PENDING_FIRST_CO_INITIAL_MSG",
+ .action = msc_t_fsm_pending_first_co_initial_msg,
+ .in_event_mask = 0
+ | S(MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST)
+ | S(MSC_T_EV_CN_CLOSE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_T_ST_WAIT_LOCAL_RTP)
+ | S(MSC_T_ST_WAIT_HO_REQUEST_ACK)
+ ,
+ },
+ [MSC_T_ST_WAIT_LOCAL_RTP] = {
+ .name = "WAIT_LOCAL_RTP",
+ .onenter = msc_t_fsm_wait_local_rtp_onenter,
+ .action = msc_t_fsm_wait_local_rtp,
+ .in_event_mask = 0
+ | S(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE)
+ | S(MSC_EV_CALL_LEG_RTP_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ | S(MSC_T_EV_CN_CLOSE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_T_ST_WAIT_HO_REQUEST_ACK)
+ ,
+ },
+ [MSC_T_ST_WAIT_HO_REQUEST_ACK] = {
+ .name = "WAIT_HO_REQUEST_ACK",
+ .action = msc_t_fsm_wait_ho_request_ack,
+ .in_event_mask = 0
+ | S(MSC_EV_FROM_RAN_UP_L2)
+ | S(MSC_EV_FROM_RAN_CONN_RELEASED)
+ | S(MSC_EV_CALL_LEG_RTP_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ | S(MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_T_EV_CN_CLOSE)
+ | S(MSC_T_EV_MO_CLOSE)
+ ,
+ .out_state_mask = 0
+ | S(MSC_T_ST_WAIT_HO_COMPLETE)
+ ,
+ },
+ [MSC_T_ST_WAIT_HO_COMPLETE] = {
+ .name = "WAIT_HO_COMPLETE",
+ .action = msc_t_fsm_wait_ho_complete,
+ .in_event_mask = 0
+ | S(MSC_EV_FROM_RAN_UP_L2)
+ | S(MSC_EV_FROM_RAN_CONN_RELEASED)
+ | S(MSC_EV_CALL_LEG_RTP_RELEASED)
+ | S(MSC_EV_CALL_LEG_TERM)
+ | S(MSC_MNCC_EV_CALL_ENDED)
+ | S(MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)
+ | S(MSC_T_EV_CN_CLOSE)
+ | S(MSC_T_EV_MO_CLOSE)
+ ,
+ },
+};
+
+const struct value_string msc_t_fsm_event_names[] = {
+ OSMO_VALUE_STRING(MSC_REMOTE_EV_RX_GSUP),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_LOCAL_ADDR_AVAILABLE),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_COMPLETE),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_RTP_RELEASED),
+ OSMO_VALUE_STRING(MSC_EV_CALL_LEG_TERM),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_NEED_LOCAL_RTP),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_PROCEEDING),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_COMPLETE),
+ OSMO_VALUE_STRING(MSC_MNCC_EV_CALL_ENDED),
+
+ OSMO_VALUE_STRING(MSC_EV_FROM_RAN_COMPLETE_LAYER_3),
+ OSMO_VALUE_STRING(MSC_EV_FROM_RAN_UP_L2),
+ OSMO_VALUE_STRING(MSC_EV_FROM_RAN_CONN_RELEASED),
+
+ OSMO_VALUE_STRING(MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST),
+ OSMO_VALUE_STRING(MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST),
+ OSMO_VALUE_STRING(MSC_T_EV_CN_CLOSE),
+ OSMO_VALUE_STRING(MSC_T_EV_MO_CLOSE),
+ OSMO_VALUE_STRING(MSC_T_EV_CLEAR_COMPLETE),
+ {}
+};
+
+static struct osmo_fsm msc_t_fsm = {
+ .name = "msc_t",
+ .states = msc_t_fsm_states,
+ .num_states = ARRAY_SIZE(msc_t_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msc_t_fsm_event_names,
+ .cleanup = msc_t_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msc_t_fsm_init(void)
+{
+ OSMO_ASSERT(osmo_fsm_register(&msc_t_fsm) == 0);
+}
+
+/* Send connection-oriented L3 message to RAN peer (MSC->[BSC|RNC]) */
+int msc_t_down_l2_co(struct msc_t *msc_t, const struct an_apdu *an_apdu, bool initial)
+{
+ int rc;
+ if (!msc_t->ran_conn) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Cannot Tx L2 message: no RAN conn\n");
+ return -EIO;
+ }
+
+ if (an_apdu->an_proto != msc_t->c.ran->an_proto) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Mismatching AN-APDU proto: %s -- Dropping message\n",
+ an_proto_name(an_apdu->an_proto));
+ return -EIO;
+ }
+
+ rc = ran_conn_down_l2_co(msc_t->ran_conn, an_apdu->msg, initial);
+ if (rc)
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Failed to transfer message down to new RAN peer (rc=%d)\n", rc);
+ return rc;
+}
+
+struct gsm_network *msc_t_net(const struct msc_t *msc_t)
+{
+ return msub_net(msc_t->c.msub);
+}
+
+struct vlr_subscr *msc_t_vsub(const struct msc_t *msc_t)
+{
+ return msub_vsub(msc_t->c.msub);
+}
+
+struct msc_t *msc_t_alloc_without_ran_peer(struct msub *msub, struct ran_infra *ran)
+{
+ struct msc_t *msc_t;
+
+ msub_role_alloc(msub, MSC_ROLE_T, &msc_t_fsm, struct msc_t, ran);
+ msc_t = msub_msc_t(msub);
+ if (!msc_t)
+ return NULL;
+
+ return msc_t;
+}
+
+int msc_t_set_ran_peer(struct msc_t *msc_t, struct ran_peer *ran_peer)
+{
+ if (!ran_peer || !ran_peer->sri || !ran_peer->sri->ran) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Invalid RAN peer: %s\n", ran_peer ? ran_peer->fi->id : "NULL");
+ return -EINVAL;
+ }
+
+ if (ran_peer->sri->ran != msc_t->c.ran) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "This MSC-T was set up for %s, cannot assign RAN peer for %s\n",
+ osmo_rat_type_name(msc_t->c.ran->type), osmo_rat_type_name(ran_peer->sri->ran->type));
+ return -EINVAL;
+ }
+
+ /* Create a new ran_conn with a fresh conn_id for the outgoing initial message. The msc_t FSM definition ensures
+ * that the first message sent or received is a Connection-Oriented Initial message. */
+ msc_t->ran_conn = ran_conn_create_outgoing(ran_peer);
+ if (!msc_t->ran_conn) {
+ LOG_MSC_T(msc_t, LOGL_ERROR, "Failed to create outgoing RAN conn\n");
+ return -EINVAL;
+ }
+ msc_t->ran_conn->msc_role = msc_t->c.fi;
+ msub_update_id(msc_t->c.msub);
+ return 0;
+}
+
+struct msc_t *msc_t_alloc(struct msub *msub, struct ran_peer *ran_peer)
+{
+ struct msc_t *msc_t = msc_t_alloc_without_ran_peer(msub, ran_peer->sri->ran);
+ if (!msc_t)
+ return NULL;
+ if (msc_t_set_ran_peer(msc_t, ran_peer)) {
+ msc_t_clear(msc_t);
+ return NULL;
+ }
+ return msc_t;
+}
+
+void msc_t_clear(struct msc_t *msc_t)
+{
+ if (!msc_t)
+ return;
+ osmo_fsm_inst_term(msc_t->c.fi, OSMO_FSM_TERM_REGULAR, msc_t->c.fi);
+}
diff --git a/src/libmsc/msc_t_remote.c b/src/libmsc/msc_t_remote.c
new file mode 100644
index 000000000..4019cc30c
--- /dev/null
+++ b/src/libmsc/msc_t_remote.c
@@ -0,0 +1,226 @@
+/* The MSC-T role implementation variant that forwards requests to/from a remote MSC. */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/fsm.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/msc_t_remote.h>
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/e_link.h>
+
+static struct osmo_fsm msc_t_remote_fsm;
+
+static struct msc_t *msc_t_remote_priv(struct osmo_fsm_inst *fi)
+{
+ OSMO_ASSERT(fi);
+ OSMO_ASSERT(fi->fsm == &msc_t_remote_fsm);
+ OSMO_ASSERT(fi->priv);
+ return fi->priv;
+}
+
+/* The idea is that this msc_t role is event-compatible to the "real" msc_t.c FSM, but instead of acting on the events
+ * directly, it forwards the events to a remote MSC-T role, via E-over-GSUP.
+ *
+ * [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_t_remote ----GSUP---> msc_a_remote --> msc_t ---BSSMAP--> [BSS]
+ * you are here^
+ */
+static int msc_t_remote_msg_down_to_remote_msc(struct msc_t *msc_t,
+ enum osmo_gsup_message_type message_type,
+ struct an_apdu *an_apdu)
+{
+ struct osmo_gsup_message m;
+ struct e_link *e = msc_t->c.remote_to;
+
+ if (!e) {
+ LOG_MSC_T_REMOTE(msc_t, LOGL_ERROR, "No E link to remote MSC, cannot send AN-APDU\n");
+ return -1;
+ }
+
+ if (e_prep_gsup_msg(e, MSC_ROLE_A, &m)) {
+ LOG_MSC_T_REMOTE(msc_t, LOGL_ERROR, "Error composing E-interface GSUP message\n");
+ return -1;
+ }
+ m.message_type = message_type;
+ if (an_apdu) {
+ if (gsup_msg_assign_an_apdu(&m, an_apdu)) {
+ LOG_MSC_T_REMOTE(msc_t, LOGL_ERROR, "Error composing E-interface GSUP message\n");
+ return -1;
+ }
+ }
+
+ return e_tx(e, &m);
+}
+
+/* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-- msc_t_remote <---GSUP---- msc_a_remote <-- msc_t <--BSSMAP--- [BSS]
+ * you are here^
+ */
+static int msc_t_remote_rx_gsup(struct msc_t *msc_t, const struct osmo_gsup_message *gsup_msg)
+{
+ uint32_t event;
+ struct an_apdu an_apdu;
+ int rc;
+
+ switch (gsup_msg->message_type) {
+ case OSMO_GSUP_MSGT_E_PROCESS_ACCESS_SIGNALLING_REQUEST:
+ event = MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_ERROR:
+ case OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_RESULT:
+ event = MSC_A_EV_FROM_T_PREPARE_HANDOVER_RESPONSE;
+ break;
+
+ case OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST:
+ event = MSC_A_EV_FROM_T_SEND_END_SIGNAL_REQUEST;
+ break;
+
+ case OSMO_GSUP_MSGT_E_CLOSE:
+ case OSMO_GSUP_MSGT_E_ABORT:
+ case OSMO_GSUP_MSGT_E_ROUTING_ERROR:
+ msc_t_clear(msc_t);
+ return 0;
+
+ default:
+ LOG_MSC_T_REMOTE(msc_t, LOGL_ERROR, "Unhandled GSUP message type: %s\n",
+ osmo_gsup_message_type_name(gsup_msg->message_type));
+ return -1;
+ };
+
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-- msc_t_remote <---GSUP---- msc_a_remote <-- msc_t <--BSSMAP--- [BSS]
+ * ^you are here
+ */
+ gsup_msg_to_an_apdu(&an_apdu, gsup_msg);
+ rc = msub_role_dispatch(msc_t->c.msub, MSC_ROLE_A, event, &an_apdu);
+ if (an_apdu.msg)
+ msgb_free(an_apdu.msg);
+ return rc;
+}
+
+static void msc_t_remote_fsm_ready(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msc_t *msc_t = msc_t_remote_priv(fi);
+ struct an_apdu *an_apdu;
+
+ switch (event) {
+
+ case MSC_REMOTE_EV_RX_GSUP:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a <-- msc_t_remote <---GSUP---- msc_a_remote <-- msc_t <--BSSMAP--- [BSS]
+ * you are here^
+ */
+ msc_t_remote_rx_gsup(msc_t, (const struct osmo_gsup_message*)data);
+ return;
+
+ case MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_t_remote ----GSUP---> going to create an msc_t if the request succeeds
+ * ^you are here
+ */
+ an_apdu = data;
+ msc_t_remote_msg_down_to_remote_msc(msc_t, OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST, an_apdu);
+ return;
+
+ case MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST:
+ /* [MSC-A-----------------] [MSC-B-----------------]
+ * msc_a --> msc_t_remote ----GSUP---> msc_a_remote --> msc_t ---BSSMAP--> [BSS]
+ * ^you are here
+ */
+ an_apdu = data;
+ msc_t_remote_msg_down_to_remote_msc(msc_t, OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST, an_apdu);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void msc_t_remote_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msc_t *msc_t = msc_t_remote_priv(fi);
+ if (msc_t->c.remote_to)
+ msc_t_remote_msg_down_to_remote_msc(msc_t, OSMO_GSUP_MSGT_E_CLOSE, NULL);
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msc_t_remote_fsm_states[] = {
+ /* An FSM instance always starts in state 0. Define one just to be able to state_chg out of it. Root reason is
+ * that we're using MSC_T_ST_* enum values from msc_t.c, but don't need the first
+ * MSC_T_ST_PENDING_FIRST_CO_INITIAL_MSG. */
+ [0] = {
+ .name = "0",
+ .out_state_mask = 0
+ | S(MSC_T_ST_WAIT_HO_COMPLETE)
+ ,
+ },
+ [MSC_T_ST_WAIT_HO_COMPLETE] = {
+ .name = "WAIT_HO_COMPLETE",
+ .action = msc_t_remote_fsm_ready,
+ .in_event_mask = 0
+ | S(MSC_REMOTE_EV_RX_GSUP)
+ | S(MSC_T_EV_FROM_A_PREPARE_HANDOVER_REQUEST)
+ | S(MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST)
+ ,
+ },
+};
+
+static struct osmo_fsm msc_t_remote_fsm = {
+ .name = "msc_t_remote",
+ .states = msc_t_remote_fsm_states,
+ .num_states = ARRAY_SIZE(msc_t_remote_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msc_t_fsm_event_names,
+ .cleanup = msc_t_remote_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msc_t_remote_fsm_init(void)
+{
+ OSMO_ASSERT(osmo_fsm_register(&msc_t_remote_fsm) == 0);
+}
+
+struct msc_t *msc_t_remote_alloc(struct msub *msub, struct ran_infra *ran,
+ const uint8_t *remote_msc_name, size_t remote_msc_name_len)
+{
+ struct msc_t *msc_t;
+
+ msub_role_alloc(msub, MSC_ROLE_T, &msc_t_remote_fsm, struct msc_t, ran);
+ msc_t = msub_msc_t(msub);
+ if (!msc_t)
+ return NULL;
+
+ msc_t->c.remote_to = e_link_alloc(msub_net(msub)->gcm, msc_t->c.fi, remote_msc_name, remote_msc_name_len);
+ if (!msc_t->c.remote_to) {
+ LOG_MSC_T_REMOTE(msc_t, LOGL_ERROR, "Failed to set up E link over GSUP to remote MSC\n");
+ msc_t_clear(msc_t);
+ return NULL;
+ }
+
+ osmo_fsm_inst_state_chg(msc_t->c.fi, MSC_T_ST_WAIT_HO_COMPLETE, 0, 0);
+ return msc_t;
+}
diff --git a/src/libmsc/msc_vty.c b/src/libmsc/msc_vty.c
index 9bc8f3aae..f1e2aa107 100644
--- a/src/libmsc/msc_vty.c
+++ b/src/libmsc/msc_vty.c
@@ -28,6 +28,8 @@
#include <inttypes.h>
#include <limits.h>
+#include <osmocom/core/use_count.h>
+
#include <osmocom/gsm/protocol/gsm_08_58.h>
#include <osmocom/gsm/protocol/gsm_04_14.h>
#include <osmocom/gsm/protocol/gsm_08_08.h>
@@ -46,10 +48,11 @@
#include <osmocom/msc/vty.h>
#include <osmocom/msc/gsm_data.h>
#include <osmocom/msc/gsm_subscriber.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
#include <osmocom/msc/vlr.h>
#include <osmocom/msc/transaction.h>
#include <osmocom/msc/db.h>
-#include <osmocom/msc/a_iface.h>
#include <osmocom/msc/sms_queue.h>
#include <osmocom/msc/silent_call.h>
#include <osmocom/msc/gsm_04_80.h>
@@ -59,6 +62,8 @@
#include <osmocom/msc/rrlp.h>
#include <osmocom/msc/vlr_sgs.h>
#include <osmocom/msc/sgs_vty.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/ran_peer.h>
static struct gsm_network *gsmnet = NULL;
@@ -504,6 +509,45 @@ DEFUN(cfg_msc_no_sms_over_gsup, cfg_msc_no_sms_over_gsup_cmd,
return CMD_SUCCESS;
}
+DEFUN(cfg_msc_handover_number_range, cfg_msc_handover_number_range_cmd,
+ "handover-number range MSISDN_FIRST MSISDN_LAST",
+ "Configure a range of MSISDN to be assigned to incoming inter-MSC Handovers for call forwarding.\n"
+ "First Handover Number MSISDN\n"
+ "Last Handover Number MSISDN\n")
+{
+ char *endp;
+ uint64_t range_start;
+ uint64_t range_end;
+
+ /* FIXME leading zeros?? */
+
+ errno = 0;
+ range_start = strtoull(argv[0], &endp, 10);
+ if (errno || *endp != '\0') {
+ vty_out(vty, "%% Error parsing handover-number range start: %s%s",
+ argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ errno = 0;
+ range_end = strtoull(argv[1], &endp, 10);
+ if (errno || *endp != '\0') {
+ vty_out(vty, "%% Error parsing handover-number range end: %s%s",
+ argv[1], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ if (range_start > range_end) {
+ vty_out(vty, "%% Error: handover-number range end must be > than the range start, but"
+ " %"PRIu64" > %"PRIu64"%s", range_start, range_end, VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ gsmnet->handover_number.range_start = range_start;
+ gsmnet->handover_number.range_end = range_end;
+ return CMD_SUCCESS;
+}
+
static int config_write_msc(struct vty *vty)
{
vty_out(vty, "msc%s", VTY_NEWLINE);
@@ -546,6 +590,11 @@ static int config_write_msc(struct vty *vty)
if (gsmnet->sms_over_gsup)
vty_out(vty, " sms-over-gsup%s", VTY_NEWLINE);
+ if (gsmnet->handover_number.range_start || gsmnet->handover_number.range_end)
+ vty_out(vty, " handover-number range %"PRIu64" %"PRIu64"%s",
+ gsmnet->handover_number.range_start, gsmnet->handover_number.range_end,
+ VTY_NEWLINE);
+
mgcp_client_config_write(vty, " ");
#ifdef BUILD_IU
ranap_iu_vty_config_write(vty, " ");
@@ -557,81 +606,81 @@ static int config_write_msc(struct vty *vty)
DEFUN(show_bsc, show_bsc_cmd,
"show bsc", SHOW_STR "BSC\n")
{
- struct bsc_context *bsc_ctx;
- struct osmo_ss7_instance *ss7 = osmo_ss7_instance_find(gsmnet->a.cs7_instance);
-
- llist_for_each_entry(bsc_ctx, &gsmnet->a.bscs, list) {
- vty_out(vty, "BSC %s%s", osmo_sccp_addr_name(ss7, &bsc_ctx->bsc_addr), VTY_NEWLINE);
+ struct ran_peer *rp;
+ llist_for_each_entry(rp, &gsmnet->a.sri->ran_peers, entry) {
+ vty_out(vty, "BSC %s %s%s",
+ osmo_sccp_inst_addr_name(gsmnet->a.sri->sccp, &rp->peer_addr),
+ osmo_fsm_inst_state_name(rp->fi),
+ VTY_NEWLINE);
}
return CMD_SUCCESS;
}
-static void vty_conn_hdr(struct vty *vty)
+/*
+_Subscriber_______________________________________ _LAC_ _RAN___________________ _MSC-A_state_________ _MSC-A_use_
+IMSI-123456789012345:MSISDN-12345:TMSI-0x12345678 1 GERAN-A-4294967295:A5-3 WAIT_CLASSMARK_UPDATE 2=cm_service,trans_cc
+IMSI-123456789012356:MSISDN-234567:TMSI-0x123ABC78 65535 UTRAN-Iu-4294967295 COMMUNICATING 2=cm_service,trans_sms
+IMSI-123456789012367:MSISDN-98712345890:TMSI-0xF.. - EUTRAN-SGs RELEASING 0=none
+IMSI-123456789012378:HONR-12345432101 2 MSC-901-700-423:9876 REMOTE_MSC_A 1=inter_msc
+*/
+static void vty_dump_one_conn(struct vty *vty, const struct msub *msub, int *idx)
{
- unsigned lnum = 0;
- struct ran_conn *conn;
-
- llist_for_each_entry(conn, &gsmnet->ran_conns, entry)
- lnum++;
+ struct msc_a *msc_a = msub_msc_a(msub);
+ struct vlr_subscr *vsub = msub_vsub(msub);
+ char buf[128];
- if (lnum)
- vty_out(vty, "--ConnId RAN --LAC Use --Tokens C A5 State ------------ Subscriber%s",
+ if (!(*idx))
+ vty_out(vty,
+ "_Subscriber_______________________________________ _LAC_ _RAN___________________"
+ " _MSC-A_state_________ _MSC-A_use_%s",
VTY_NEWLINE);
-}
-
-static void vty_dump_one_conn(struct vty *vty, const struct ran_conn *conn)
-{
- vty_out(vty, "%08x %3s %5u %3u %08x %c /%1u %27s %22s%s",
- conn->a.conn_id,
- osmo_rat_type_name(conn->via_ran),
- conn->lac,
- conn->use_count,
- conn->use_tokens,
- conn->received_cm_service_request ? 'C' : '-',
- conn->geran_encr.alg_id,
- conn->fi ? osmo_fsm_inst_state_name(conn->fi) : "-",
- conn->vsub ? vlr_subscr_name(conn->vsub) : "-",
+ (*idx)++;
+
+ vty_out(vty, "%50s %5u %23s %20s %d=%s%s",
+ vlr_subscr_short_name(msub_vsub(msub), 50),
+ vsub ? vsub->cgi.lai.lac : 0,
+ msub_ran_conn_name(msub),
+ osmo_fsm_inst_state_name(msc_a->c.fi),
+ osmo_use_count_total(&msc_a->use_count),
+ osmo_use_count_name_buf(buf, sizeof(buf), &msc_a->use_count),
VTY_NEWLINE);
}
DEFUN(show_msc_conn, show_msc_conn_cmd,
"show connection", SHOW_STR "Subscriber Connections\n")
{
- struct ran_conn *conn;
-
- vty_conn_hdr(vty);
- llist_for_each_entry(conn, &gsmnet->ran_conns, entry)
- vty_dump_one_conn(vty, conn);
-
+ struct msub *msub;
+ int idx = 0;
+ llist_for_each_entry(msub, &msub_list, entry) {
+ vty_dump_one_conn(vty, msub, &idx);
+ }
return CMD_SUCCESS;
}
static void vty_trans_hdr(struct vty *vty)
{
- unsigned lnum = 0;
- struct gsm_trans *trans;
+ if (llist_empty(&gsmnet->trans_list))
+ return;
- llist_for_each_entry(trans, &gsmnet->trans_list, entry)
- lnum++;
-
- if (lnum)
- vty_out(vty, "--ConnId -P TI -CallRef [--- Proto ---] ------------ Subscriber%s",
- VTY_NEWLINE);
+ vty_out(vty,
+ "_Subscriber_______________________________________ _RAN___________________"
+ " _P__ TI CallRef_ _state_%s",
+ VTY_NEWLINE);
}
static const char *get_trans_proto_str(const struct gsm_trans *trans)
{
static char buf[256];
- switch (trans->protocol) {
- case GSM48_PDISC_CC:
+ switch (trans->type) {
+ case TRANS_CC:
snprintf(buf, sizeof(buf), "%s %4u %4u",
gsm48_cc_state_name(trans->cc.state),
trans->cc.Tcurrent,
trans->cc.T308_second);
break;
- case GSM48_PDISC_SMS:
+ case TRANS_SMS:
snprintf(buf, sizeof(buf), "%s %s",
gsm411_cp_state_name(trans->sms.smc_inst.cp_state),
gsm411_rp_state_name(trans->sms.smr_inst.rp_state));
@@ -646,13 +695,13 @@ static const char *get_trans_proto_str(const struct gsm_trans *trans)
static void vty_dump_one_trans(struct vty *vty, const struct gsm_trans *trans)
{
- vty_out(vty, "%08x %s %02u %08x [%s] %22s%s",
- trans->conn ? trans->conn->a.conn_id : 0,
- gsm48_pdisc_name(trans->protocol),
+ vty_out(vty, "%50s %23s %4s %02u %08x %s%s",
+ vlr_subscr_short_name(msc_a_vsub(trans->msc_a), 50),
+ msub_ran_conn_name(trans->msc_a->c.msub),
+ trans_type_name(trans->type),
trans->transaction_id,
trans->callref,
get_trans_proto_str(trans),
- trans->vsub ? vlr_subscr_name(trans->vsub) : "-",
VTY_NEWLINE);
}
@@ -715,18 +764,6 @@ static void subscr_dump_full_vty(struct vty *vty, struct vlr_subscr *vsub)
vty_out(vty, " LA allowed: %s%s",
vsub->la_allowed ? "true" : "false", VTY_NEWLINE);
-#if 0
- /* TODO: add this to vlr_subscr? */
- if (vsub->auth_info.auth_algo != AUTH_ALGO_NONE) {
- struct gsm_auth_info *i = &vsub->auth_info;
- vty_out(vty, " A3A8 algorithm id: %d%s",
- i->auth_algo, VTY_NEWLINE);
- vty_out(vty, " A3A8 Ki: %s%s",
- osmo_hexdump(i->a3a8_ki, i->a3a8_ki_len),
- VTY_NEWLINE);
- }
-#endif
-
if (vsub->last_tuple) {
struct vlr_auth_tuple *t = vsub->last_tuple;
vty_out(vty, " A3A8 last tuple (used %d times):%s",
@@ -762,9 +799,11 @@ static void subscr_dump_full_vty(struct vty *vty, struct vlr_subscr *vsub)
/* Connection */
if (vsub->msc_conn_ref) {
- struct ran_conn *conn = vsub->msc_conn_ref;
- vty_conn_hdr(vty);
- vty_dump_one_conn(vty, conn);
+ struct msub *msub = vsub->msc_conn_ref;
+ int idx = 0;
+ if (msub) {
+ vty_dump_one_conn(vty, msub, &idx);
+ }
}
/* Transactions */
@@ -1214,7 +1253,7 @@ DEFUN(subscriber_ussd_notify,
"Text of USSD message to send\n")
{
char *text;
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
int level;
@@ -1231,19 +1270,19 @@ DEFUN(subscriber_ussd_notify,
return CMD_WARNING;
}
- conn = connection_for_subscr(vsub);
- if (!conn) {
- vty_out(vty, "%% An active connection is required for %s %s%s",
+ msc_a = msc_a_for_vsub(vsub, true);
+ if (!msc_a || msc_a->c.remote_to) {
+ vty_out(vty, "%% An active connection and local MSC-A role is required for %s %s%s",
argv[0], argv[1], VTY_NEWLINE);
vlr_subscr_put(vsub, VSUB_USE_VTY);
talloc_free(text);
return CMD_WARNING;
}
- msc_send_ussd_notify(conn, level, text);
+ msc_send_ussd_notify(msc_a, level, text);
/* FIXME: since we don't allocate a transaction here,
* we use dummy GSM 04.07 transaction ID. */
- msc_send_ussd_release_complete(conn, 0x00);
+ msc_send_ussd_release_complete(msc_a, 0x00);
vlr_subscr_put(vsub, VSUB_USE_VTY);
talloc_free(text);
@@ -1256,7 +1295,7 @@ DEFUN(subscriber_paging,
SUBSCR_HELP "Issue an empty Paging for the subscriber (for debugging)\n")
{
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
- struct subscr_request *req;
+ struct paging_request *req;
if (!vsub) {
vty_out(vty, "%% No subscriber found for %s %s%s",
@@ -1264,7 +1303,8 @@ DEFUN(subscriber_paging,
return CMD_WARNING;
}
- req = subscr_request_conn(vsub, NULL, NULL, "manual Paging from VTY", SGSAP_SERV_IND_CS_CALL);
+ req = paging_request_start(vsub, PAGING_CAUSE_CALL_CONVERSATIONAL,
+ NULL, NULL, "manual Paging from VTY");
if (req)
vty_out(vty, "%% paging subscriber%s", VTY_NEWLINE);
else
@@ -1308,7 +1348,7 @@ DEFUN(subscriber_mstest_close,
"Loop Type F\n"
"Loop Type I\n")
{
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
const char *loop_str;
int loop_mode;
@@ -1322,15 +1362,15 @@ DEFUN(subscriber_mstest_close,
loop_str = argv[2];
loop_mode = loop_by_char(loop_str[0]);
- conn = connection_for_subscr(vsub);
- if (!conn) {
+ msc_a = msc_a_for_vsub(vsub, true);
+ if (!msc_a) {
vty_out(vty, "%% An active connection is required for %s %s%s",
argv[0], argv[1], VTY_NEWLINE);
vlr_subscr_put(vsub, VSUB_USE_VTY);
return CMD_WARNING;
}
- gsm0414_tx_close_tch_loop_cmd(conn, loop_mode);
+ gsm0414_tx_close_tch_loop_cmd(msc_a, loop_mode);
return CMD_SUCCESS;
}
@@ -1341,7 +1381,7 @@ DEFUN(subscriber_mstest_open,
SUBSCR_HELP "Send a TS 04.14 MS Test Command to subscriber\n"
"Open a TCH Loop inside the MS\n")
{
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct vlr_subscr *vsub = get_vsub_by_argv(gsmnet, argv[0], argv[1]);
if (!vsub) {
@@ -1350,15 +1390,15 @@ DEFUN(subscriber_mstest_open,
return CMD_WARNING;
}
- conn = connection_for_subscr(vsub);
- if (!conn) {
+ msc_a = msc_a_for_vsub(vsub, true);
+ if (!msc_a) {
vty_out(vty, "%% An active connection is required for %s %s%s",
argv[0], argv[1], VTY_NEWLINE);
vlr_subscr_put(vsub, VSUB_USE_VTY);
return CMD_WARNING;
}
- gsm0414_tx_open_loop_cmd(conn);
+ gsm0414_tx_open_loop_cmd(msc_a);
return CMD_SUCCESS;
}
@@ -1394,14 +1434,20 @@ static int scall_cbfn(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct scall_signal_data *sigdata = signal_data;
- struct vty *vty = sigdata->data;
+ struct vty *vty = sigdata->vty;
+
+ if (!vty_is_active(vty))
+ return 0;
switch (signal) {
case S_SCALL_SUCCESS:
- vty_out(vty, "%% silent call success%s", VTY_NEWLINE);
+ vty_out(vty, "%% Silent call success%s", VTY_NEWLINE);
+ break;
+ case S_SCALL_FAILED:
+ vty_out(vty, "%% Silent call failed%s", VTY_NEWLINE);
break;
- case S_SCALL_EXPIRED:
- vty_out(vty, "%% silent call expired paging%s", VTY_NEWLINE);
+ case S_SCALL_DETACHED:
+ vty_out(vty, "%% Silent call ended%s", VTY_NEWLINE);
break;
}
return 0;
@@ -1692,12 +1738,16 @@ void msc_vty_init(struct gsm_network *msc_network)
install_element(MSC_NODE, &cfg_msc_emergency_msisdn_cmd);
install_element(MSC_NODE, &cfg_msc_sms_over_gsup_cmd);
install_element(MSC_NODE, &cfg_msc_no_sms_over_gsup_cmd);
+ install_element(MSC_NODE, &cfg_msc_handover_number_range_cmd);
+
+ neighbor_ident_vty_init(msc_network);
mgcp_client_vty_init(msc_network, MSC_NODE, &msc_network->mgw.conf);
#ifdef BUILD_IU
- ranap_iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc);
+ ranap_iu_vty_init(MSC_NODE, (enum ranap_nsap_addr_enc*)&msc_network->iu.rab_assign_addr_enc);
#endif
sgs_vty_init();
+
osmo_fsm_vty_add_cmds();
osmo_signal_register_handler(SS_SCALL, scall_cbfn, NULL);
diff --git a/src/libmsc/msub.c b/src/libmsc/msub.c
new file mode 100644
index 000000000..fd8c7ea6e
--- /dev/null
+++ b/src/libmsc/msub.c
@@ -0,0 +1,587 @@
+/* Manage all MSC roles of a connected subscriber (MSC-A, MSC-I, MSC-T) */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/gsm/gsm48.h>
+
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_roles.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/e_link.h>
+
+const struct value_string msc_role_names[] = {
+ { MSC_ROLE_A, "MSC-A" },
+ { MSC_ROLE_I, "MSC-I" },
+ { MSC_ROLE_T, "MSC-T" },
+ {}
+};
+
+LLIST_HEAD(msub_list);
+
+#define for_each_msub_role(msub, role_idx) \
+ for ((role_idx) = 0; (role_idx) < ARRAY_SIZE((msub)->role); (role_idx)++) \
+ if ((msub)->role[role_idx])
+
+enum msub_fsm_state {
+ MSUB_ST_ACTIVE,
+ MSUB_ST_TERMINATING,
+};
+
+enum msub_fsm_event {
+ MSUB_EV_ROLE_TERMINATED,
+};
+
+static void msub_check_for_release(struct osmo_fsm_inst *fi)
+{
+ struct msub *msub = fi->priv;
+ enum msc_role role_idx;
+ int role_present[MSC_ROLES_COUNT] = {};
+ struct osmo_fsm_inst *child;
+
+ /* See what child FSMs are still present. A caller might exchange roles by first allocating a new one as child
+ * of this FSM, and then exchanging the msub->role[] pointer. Even though the currently active role is removing
+ * itself from msub, we can still see whether another one is pending as a child of this msub. */
+ llist_for_each_entry(child, &fi->proc.children, proc.child) {
+ struct msc_role_common *c = child->priv;
+ role_present[c->role]++;
+ }
+
+ /* Log. */
+ for (role_idx = 0; role_idx < ARRAY_SIZE(role_present); role_idx++) {
+ if (!role_present[role_idx])
+ continue;
+ LOG_MSUB(msub, LOGL_DEBUG, "%d %s still active\n", role_present[role_idx], msc_role_name(role_idx));
+ }
+
+ /* To remain valid, there must be both an MSC-A role and one of MSC-I or MSC-T;
+ * except, SGs connections need no MSC-I or MSC-T. */
+ if (role_present[MSC_ROLE_A]
+ && (role_present[MSC_ROLE_I] || role_present[MSC_ROLE_T]
+ || msub_msc_a(msub)->c.ran->type == OSMO_RAT_EUTRAN_SGS))
+ return;
+
+ /* The subscriber has become invalid. Go to terminating state to clearly signal that this msub is definitely
+ * going now. */
+ osmo_fsm_inst_state_chg(fi, MSUB_ST_TERMINATING, 0, 0);
+}
+
+void msub_fsm_active(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct msub *msub = fi->priv;
+ struct osmo_fsm_inst *role_fi;
+
+ switch (event) {
+ case MSUB_EV_ROLE_TERMINATED:
+ role_fi = data;
+ /* Role implementations are required to pass their own osmo_fsm_inst pointer to osmo_fsm_inst_term(). */
+ msub_remove_role(msub, role_fi);
+ msub_check_for_release(fi);
+ return;
+ default:
+ return;
+ }
+}
+
+void msub_fsm_terminating_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
+}
+
+void msub_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct msub *msub = fi->priv;
+ LOG_MSUB(msub, LOGL_DEBUG, "Free\n");
+ msub_set_vsub(msub, NULL);
+ llist_del(&msub->entry);
+}
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state msub_fsm_states[] = {
+ [MSUB_ST_ACTIVE] = {
+ .name = "active",
+ .in_event_mask = S(MSUB_EV_ROLE_TERMINATED),
+ .out_state_mask = S(MSUB_ST_TERMINATING),
+ .action = msub_fsm_active,
+ },
+ [MSUB_ST_TERMINATING] = {
+ .name = "terminating",
+ .onenter = msub_fsm_terminating_onenter,
+ },
+};
+
+static const struct value_string msub_fsm_event_names[] = {
+ OSMO_VALUE_STRING(MSUB_EV_ROLE_TERMINATED),
+ {}
+};
+
+struct osmo_fsm msub_fsm = {
+ .name = "msub_fsm",
+ .states = msub_fsm_states,
+ .num_states = ARRAY_SIZE(msub_fsm_states),
+ .log_subsys = DMSC,
+ .event_names = msub_fsm_event_names,
+ .cleanup = msub_fsm_cleanup,
+};
+
+static __attribute__((constructor)) void msub_fsm_init()
+{
+ OSMO_ASSERT(osmo_fsm_register(&msub_fsm) == 0);
+}
+
+struct msc_role_common *_msub_role_alloc(struct msub *msub, enum msc_role role, struct osmo_fsm *role_fsm,
+ size_t struct_size, const char *struct_name, struct ran_infra *ran)
+{
+ struct osmo_fsm_inst *fi;
+ struct msc_role_common *c;
+
+ fi = osmo_fsm_inst_alloc_child(role_fsm, msub->fi, MSUB_EV_ROLE_TERMINATED);
+ OSMO_ASSERT(fi);
+
+ c = (struct msc_role_common*)talloc_named_const(fi, struct_size, struct_name);
+ OSMO_ASSERT(c);
+ memset(c, 0, struct_size);
+ fi->priv = c;
+
+ *c = (struct msc_role_common){
+ .role = role,
+ .fi = fi,
+ .ran = ran,
+ };
+
+ msub_set_role(msub, fi);
+ return c;
+}
+
+struct msub *msub_alloc(struct gsm_network *net)
+{
+ struct msub *msub;
+ struct osmo_fsm_inst *msub_fi = osmo_fsm_inst_alloc(&msub_fsm, net, NULL, LOGL_DEBUG, NULL);
+ OSMO_ASSERT(msub_fi);
+
+ msub = talloc_zero(msub_fi, struct msub);
+ OSMO_ASSERT(msub);
+ msub_fi->priv = msub;
+ *msub = (struct msub){
+ .net = net,
+ .fi = msub_fi,
+ };
+
+ llist_add_tail(&msub->entry, &msub_list);
+ return msub;
+}
+
+/* Careful: the subscriber may not yet be authenticated, or may already be in release. Better use
+ * msc_a_for_vsub(for_vsub, true) to make sure you don't use an invalid conn. */
+struct msub *msub_for_vsub(const struct vlr_subscr *for_vsub)
+{
+ struct msub *msub;
+ if (!for_vsub)
+ return NULL;
+
+ llist_for_each_entry(msub, &msub_list, entry) {
+ if (msub->vsub == for_vsub)
+ return msub;
+ }
+
+ return NULL;
+}
+
+const char *msub_name(const struct msub *msub)
+{
+ return vlr_subscr_name(msub? msub->vsub : NULL);
+}
+
+void msub_set_role(struct msub *msub, struct osmo_fsm_inst *msc_role)
+{
+ struct osmo_fsm_inst *prev_role;
+ struct msc_role_common *c;
+
+ OSMO_ASSERT(msc_role);
+ c = msc_role->priv;
+
+ prev_role = msub->role[c->role];
+ if (prev_role)
+ LOGPFSML(prev_role, LOGL_DEBUG, "Replaced by another %s\n", msc_role_name(c->role));
+
+ c->msub = msub;
+ msub->role[c->role] = msc_role;
+ msub_update_id(msub);
+
+ if (prev_role) {
+ struct msc_role_common *prev_c = prev_role->priv;
+ switch (prev_c->role) {
+ case MSC_ROLE_I:
+ msc_i_clear(prev_role->priv);
+ break;
+ case MSC_ROLE_T:
+ msc_t_clear(prev_role->priv);
+ break;
+ default:
+ osmo_fsm_inst_term(prev_role, OSMO_FSM_TERM_REQUEST, prev_role);
+ break;
+ }
+ }
+}
+
+void msub_remove_role(struct msub *msub, struct osmo_fsm_inst *fi)
+{
+ enum msc_role idx;
+ struct msc_role_common *c;
+ if (!msub || !fi)
+ return;
+
+ c = fi->priv;
+ LOG_MSUB(msub, LOGL_DEBUG, "%s terminated\n", msc_role_name(c->role));
+
+ for_each_msub_role(msub, idx) {
+ if (msub->role[idx] == fi)
+ msub->role[idx] = NULL;
+ }
+}
+
+struct msc_a *msub_msc_a(const struct msub *msub)
+{
+ struct osmo_fsm_inst *fi;
+ if (!msub)
+ return NULL;
+ fi = msub->role[MSC_ROLE_A];
+ if (!fi)
+ return NULL;
+ return (struct msc_a*)fi->priv;
+}
+
+struct msc_i *msub_msc_i(const struct msub *msub)
+{
+ struct osmo_fsm_inst *fi;
+ if (!msub)
+ return NULL;
+ fi = msub->role[MSC_ROLE_I];
+ if (!fi)
+ return NULL;
+ return (struct msc_i*)fi->priv;
+}
+
+struct msc_t *msub_msc_t(const struct msub *msub)
+{
+ struct osmo_fsm_inst *fi;
+ if (!msub)
+ return NULL;
+ fi = msub->role[MSC_ROLE_T];
+ if (!fi)
+ return NULL;
+ return (struct msc_t*)fi->priv;
+}
+
+/* Return the ran_conn of the MSC-I role, if available. If the MSC-I role is handled by a remote MSC, return NULL. */
+struct ran_conn *msub_ran_conn(const struct msub *msub)
+{
+ struct msc_i *msc_i = msub_msc_i(msub);
+ if (!msc_i)
+ return NULL;
+ return msc_i->ran_conn;
+}
+
+static struct ran_infra *msub_ran(const struct msub *msub)
+{
+ int i;
+ struct msc_role_common *c;
+
+ for (i = 0; i < MSC_ROLES_COUNT; i++) {
+ if (!msub->role[i])
+ continue;
+ c = msub->role[i]->priv;
+ if (!c->ran)
+ continue;
+ return c->ran;
+ }
+
+ return &msc_ran_infra[OSMO_RAT_UNKNOWN];
+}
+
+const char *msub_ran_conn_name(const struct msub *msub)
+{
+ struct msc_i *msc_i = msub_msc_i(msub);
+ struct msc_t *msc_t = msub_msc_t(msub);
+ if (msc_i && msc_i->c.remote_to)
+ return e_link_name(msc_i->c.remote_to);
+ if (msc_i && msc_i->ran_conn)
+ return ran_conn_name(msc_i->ran_conn);
+ if (msc_t && msc_t->c.remote_to)
+ return e_link_name(msc_t->c.remote_to);
+ if (msc_t && msc_t->ran_conn)
+ return ran_conn_name(msc_t->ran_conn);
+ return osmo_rat_type_name(msub_ran(msub)->type);
+}
+
+int msub_set_vsub(struct msub *msub, struct vlr_subscr *vsub)
+{
+ OSMO_ASSERT(msub);
+ if (msub->vsub == vsub)
+ return 0;
+ if (msub->vsub && vsub) {
+ LOG_MSUB(msub, LOGL_ERROR,
+ "Changing a connection's VLR Subscriber is not allowed: not changing to %s\n",
+ vlr_subscr_name(vsub));
+ return -ENOTSUP;
+ }
+ if (vsub) {
+ struct msub *other_msub = msub_for_vsub(vsub);
+ if (other_msub) {
+ struct msc_a *msc_a = msub_msc_a(msub);
+ struct msc_a *other_msc_a = msub_msc_a(other_msub);
+ LOG_MSC_A(msc_a, LOGL_ERROR,
+ "Cannot associate with VLR subscr, another connection is already active%s%s\n",
+ other_msc_a ? " at " : "", other_msc_a ? other_msc_a->c.fi->id : "");
+ LOG_MSC_A(other_msc_a, LOGL_ERROR, "Attempt to associate a second subscriber connection%s%s\n",
+ msc_a ? " at " : "", msc_a ? msc_a->c.fi->id : "");
+ if (other_msc_a && msc_a_in_release(other_msc_a)) {
+ LOG_MSC_A(other_msc_a, LOGL_ERROR,
+ "Another connection for this subscriber is coming up, since this"
+ " is already in release, forcefully discarding it\n");
+ osmo_fsm_inst_term(other_msc_a->c.fi, OSMO_FSM_TERM_ERROR, other_msc_a->c.fi);
+ /* Count this as "recovered from duplicate connection" error and do associate. */
+ } else
+ return -EINVAL;
+ }
+ }
+ if (msub->vsub) {
+ vlr_subscr_put(msub->vsub, VSUB_USE_MSUB);
+ msub->vsub = NULL;
+ }
+ if (vsub) {
+ vlr_subscr_get(vsub, VSUB_USE_MSUB);
+ msub->vsub = vsub;
+ vsub->cs.attached_via_ran = msub_ran(msub)->type;
+ msub_update_id(msub);
+ }
+ return 0;
+}
+
+struct vlr_subscr *msub_vsub(const struct msub *msub)
+{
+ return msub ? msub->vsub : NULL;
+}
+
+struct gsm_network *msub_net(const struct msub *msub)
+{
+ OSMO_ASSERT(msub->net);
+ return msub->net;
+}
+
+int msub_role_to_role_event(struct msub *msub, enum msc_role from_role, enum msc_role to_role)
+{
+ switch (from_role) {
+ case MSC_ROLE_A:
+ switch (to_role) {
+ case MSC_ROLE_I:
+ return MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST;
+ case MSC_ROLE_T:
+ return MSC_T_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST;
+ default:
+ break;
+ }
+ break;
+
+ case MSC_ROLE_I:
+ switch (to_role) {
+ case MSC_ROLE_A:
+ return MSC_A_EV_FROM_I_PROCESS_ACCESS_SIGNALLING_REQUEST;
+ default:
+ break;
+ }
+ break;
+
+ case MSC_ROLE_T:
+ switch (to_role) {
+ case MSC_ROLE_A:
+ return MSC_A_EV_FROM_T_PROCESS_ACCESS_SIGNALLING_REQUEST;
+ default:
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ LOG_MSUB(msub, LOGL_ERROR, "Cannot tx DTAP from %s to %s\n", msc_role_name(from_role), msc_role_name(to_role));
+ return -1;
+}
+
+/* The caller retains ownership of the an_apdu_msg -- don't forget to msgb_free() it. */
+int _msub_role_dispatch(struct msub *msub, enum msc_role to_role, uint32_t to_role_event, const struct an_apdu *an_apdu,
+ const char *file, int line)
+{
+ struct osmo_fsm_inst *to_fi = msub->role[to_role];
+
+ if (!to_fi) {
+ LOG_MSUB_CAT_SRC(msub, DMSC, LOGL_ERROR, file, line,
+ "Cannot tx event to %s, no such role defined\n", msc_role_name(to_role));
+ return -EINVAL;
+ }
+
+ return _osmo_fsm_inst_dispatch(to_fi, to_role_event, (void*)an_apdu, file, line);
+}
+
+/* The caller retains ownership of the an_apdu_msg -- don't forget to msgb_free() it. */
+int msub_tx_an_apdu(struct msub *msub, enum msc_role from_role, enum msc_role to_role, struct an_apdu *an_apdu)
+{
+ int event = msub_role_to_role_event(msub, from_role, to_role);
+ if (event < 0)
+ return event;
+ return msub_role_dispatch(msub, to_role, event, an_apdu);
+}
+
+static void _msub_update_id(struct msub *msub, const char *subscr_name)
+{
+ enum msc_role idx;
+ struct msc_a *msc_a = msub_msc_a(msub);
+ struct vlr_subscr *vsub = msub_vsub(msub);
+ const char *compl_l3_name = NULL;
+ char id[128];
+
+ if (msc_a)
+ compl_l3_name = get_value_string_or_null(complete_layer3_type_names, msc_a->complete_layer3_type);
+ if (!compl_l3_name)
+ compl_l3_name = "no-compl-l3";
+
+ snprintf(id, sizeof(id), "%s:%s:%s", subscr_name, msub_ran_conn_name(msub), compl_l3_name);
+ osmo_identifier_sanitize_buf(id, NULL, '-');
+
+ for_each_msub_role(msub, idx) {
+ osmo_fsm_inst_update_id(msub->role[idx], id);
+ }
+ if (vsub) {
+ if (vsub->lu_fsm)
+ osmo_fsm_inst_update_id(vsub->lu_fsm, id);
+ if (vsub->auth_fsm)
+ osmo_fsm_inst_update_id(vsub->auth_fsm, id);
+ if (vsub->proc_arq_fsm)
+ osmo_fsm_inst_update_id(vsub->proc_arq_fsm, id);
+ }
+}
+
+/* Compose an ID almost like gsm48_mi_to_string(), but print the MI type along, and print a TMSI as hex. */
+void msub_update_id_from_mi(struct msub *msub, const uint8_t mi[], uint8_t mi_len)
+{
+ _msub_update_id(msub, osmo_mi_name(mi, mi_len));
+}
+
+/* Update msub->fi id string from current msub->vsub and msub->complete_layer3_type. */
+void msub_update_id(struct msub *msub)
+{
+ if (!msub)
+ return;
+ _msub_update_id(msub, vlr_subscr_name(msub->vsub));
+}
+
+/* Iterate all msub instances that are relevant for this subscriber, and update FSM ID strings for all of the FSM
+ * instances. */
+void msub_update_id_for_vsub(struct vlr_subscr *for_vsub)
+{
+ struct msub *msub;
+ if (!for_vsub)
+ return;
+
+ llist_for_each_entry(msub, &msub_list, entry) {
+ if (msub->vsub == for_vsub)
+ msub_update_id(msub);
+ }
+}
+
+void msc_role_forget_conn(struct osmo_fsm_inst *role, struct ran_conn *conn)
+{
+ struct msc_i *old_i = role->priv;
+ struct msc_t *old_t = role->priv;
+ struct msc_role_common *c = role->priv;
+ struct ran_conn **conn_p = NULL;
+
+ switch (c->role) {
+ case MSC_ROLE_I:
+ conn_p = &old_i->ran_conn;
+ break;
+
+ case MSC_ROLE_T:
+ conn_p = &old_t->ran_conn;
+ break;
+ default:
+ break;
+ }
+
+ if (!conn_p)
+ return;
+
+ if (*conn_p != conn)
+ return;
+
+ (*conn_p)->msc_role = NULL;
+ *conn_p = NULL;
+}
+
+struct msgb *msc_role_ran_encode(struct osmo_fsm_inst *fi, const struct ran_msg *ran_msg)
+{
+ struct msc_role_common *c = fi->priv;
+ struct msgb *msg;
+ if (!c->ran->ran_encode) {
+ LOGPFSML(fi, LOGL_ERROR, "Cannot encode %s: no NAS encoding function defined for RAN type %s\n",
+ ran_msg_type_name(ran_msg->msg_type), osmo_rat_type_name(c->ran->type));
+ return NULL;
+ }
+ msg = c->ran->ran_encode(fi, ran_msg);
+ if (!msg)
+ LOGPFSML(fi, LOGL_ERROR, "Failed to encode %s\n", ran_msg_type_name(ran_msg->msg_type));
+ return msg;
+}
+
+int msc_role_ran_decode(struct osmo_fsm_inst *fi, const struct an_apdu *an_apdu,
+ ran_decode_cb_t decode_cb, void *decode_cb_data)
+{
+ struct ran_dec ran_dec;
+ struct msc_role_common *c = fi->priv;
+ if (!an_apdu) {
+ LOGPFSML(fi, LOGL_ERROR, "NULL AN-APDU\n");
+ return -EINVAL;
+ }
+ if (an_apdu->an_proto != c->ran->an_proto) {
+ LOGPFSML(fi, LOGL_ERROR, "Unexpected AN-APDU protocol: %s\n", an_proto_name(an_apdu->an_proto));
+ return -EINVAL;
+ }
+ if (!an_apdu->msg) {
+ LOGPFSML(fi, LOGL_DEBUG, "No PDU in this AN-APDU\n");
+ return 0;
+ }
+ ran_dec = (struct ran_dec) {
+ .caller_fi = fi,
+ .caller_data = decode_cb_data,
+ .decode_cb = decode_cb,
+ };
+ if (!c->ran->ran_dec_l2) {
+ LOGPFSML(fi, LOGL_ERROR, "No ran_dec_l2() defined for RAN type %s\n",
+ osmo_rat_type_name(c->ran->type));
+ return -ENOTSUP;
+ }
+ return c->ran->ran_dec_l2(&ran_dec, an_apdu->msg);
+}
diff --git a/src/libmsc/neighbor_ident.c b/src/libmsc/neighbor_ident.c
new file mode 100644
index 000000000..5120e168e
--- /dev/null
+++ b/src/libmsc/neighbor_ident.c
@@ -0,0 +1,191 @@
+/* Manage identity of neighboring BSS cells for inter-MSC handover. */
+/*
+ * (C) 2018-2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * Author: Neels Hofmeyr
+ * Author: Stefan Sperling <ssperling@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 <errno.h>
+
+#include <osmocom/core/linuxlist.h>
+#include <osmocom/core/utils.h>
+#include <osmocom/gsm/gsm0808.h>
+#include <osmocom/sigtran/osmo_ss7.h>
+#include <osmocom/sigtran/sccp_helpers.h>
+
+#include <osmocom/msc/neighbor_ident.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/cell_id_list.h>
+
+/* XXX greater than or equal to IPA_STRING_MAX (libosmocore) and MAX_PC_STR_LEN (libosmo-sccp). */
+#define NEIGHBOR_IDENT_ADDR_STRING_MAX 64
+
+static struct gsm_network *gsmnet;
+
+void neighbor_ident_init(struct gsm_network *net)
+{
+ gsmnet = net;
+ INIT_LLIST_HEAD(&gsmnet->neighbor_ident_list);
+}
+
+int msc_ipa_name_from_str(struct msc_ipa_name *min, const char *name)
+{
+ int rc = osmo_strlcpy(min->buf, name, sizeof(min->buf));
+ if (rc >= sizeof(min->buf)) {
+ min->len = 0;
+ return -1;
+ }
+ min->len = rc;
+ return 0;
+}
+
+int msc_ipa_name_cmp(const struct msc_ipa_name *a, const struct msc_ipa_name *b)
+{
+ size_t cmp_len;
+ int rc;
+ if (a == b)
+ return 0;
+ if (!a || !b)
+ return a ? 1 : -1;
+ cmp_len = OSMO_MIN(sizeof(a->buf), OSMO_MIN(a->len, b->len));
+ if (!cmp_len)
+ rc = 0;
+ else
+ rc = memcmp(a->buf, b->buf, cmp_len);
+ if (rc)
+ return rc;
+ if (a->len < b->len)
+ return -1;
+ if (a->len > b->len)
+ return 1;
+ return 0;
+}
+
+const char *neighbor_ident_addr_name(const struct neighbor_ident_addr *nia)
+{
+ static char buf[128];
+ struct osmo_strbuf sb = { .buf = buf, .len = sizeof(buf) };
+
+ OSMO_STRBUF_PRINTF(sb, "%s-", osmo_rat_type_name(nia->ran_type));
+
+ switch (nia->type) {
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ OSMO_STRBUF_PRINTF(sb, "localRAN-%s", nia->local_ran_peer_pc_str);
+ break;
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ OSMO_STRBUF_PRINTF(sb, "remoteMSC-");
+ OSMO_STRBUF_APPEND_NOLEN(sb, osmo_escape_str_buf2, nia->remote_msc_ipa_name.buf,
+ nia->remote_msc_ipa_name.len);
+ break;
+ default:
+ return NULL;
+ }
+
+ return buf;
+}
+
+const struct neighbor_ident_entry *neighbor_ident_add(struct llist_head *ni_list,
+ const struct neighbor_ident_addr *nia,
+ const struct gsm0808_cell_id *cid)
+{
+ struct neighbor_ident_entry *nie;
+
+ if (!ni_list)
+ return NULL;
+
+ nie = (struct neighbor_ident_entry*)neighbor_ident_find_by_addr(ni_list, nia);
+ if (!nie) {
+ nie = talloc_zero(gsmnet, struct neighbor_ident_entry);
+ OSMO_ASSERT(nie);
+ *nie = (struct neighbor_ident_entry){
+ .addr = *nia,
+ };
+ INIT_LLIST_HEAD(&nie->cell_ids);
+ llist_add_tail(&nie->entry, ni_list);
+ }
+
+ cell_id_list_add_cell(nie, &nie->cell_ids, cid);
+ return nie;
+}
+
+const struct neighbor_ident_entry *neighbor_ident_find_by_cell(const struct llist_head *ni_list,
+ enum osmo_rat_type ran_type,
+ const struct gsm0808_cell_id *cell_id)
+{
+ struct neighbor_ident_entry *e;
+ llist_for_each_entry(e, ni_list, entry) {
+ if (ran_type != OSMO_RAT_UNKNOWN) {
+ if (e->addr.ran_type != ran_type)
+ continue;
+ }
+
+ if (!cell_id_list_find(&e->cell_ids, cell_id, 0, false))
+ continue;
+ return e;
+ }
+ return NULL;
+}
+
+const struct neighbor_ident_entry *neighbor_ident_find_by_addr(const struct llist_head *ni_list,
+ const struct neighbor_ident_addr *nia)
+{
+ struct neighbor_ident_entry *e;
+
+ llist_for_each_entry(e, ni_list, entry) {
+ if (nia->ran_type != OSMO_RAT_UNKNOWN
+ && e->addr.ran_type != nia->ran_type)
+ continue;
+
+ if (e->addr.type != nia->type)
+ continue;
+
+ switch (e->addr.type) {
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ if (strcmp(e->addr.local_ran_peer_pc_str, nia->local_ran_peer_pc_str))
+ continue;
+ break;
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ if (msc_ipa_name_cmp(&e->addr.remote_msc_ipa_name, &nia->remote_msc_ipa_name))
+ continue;
+ break;
+ default:
+ continue;
+ }
+
+ return e;
+ }
+
+ return NULL;
+}
+
+void neighbor_ident_del(const struct neighbor_ident_entry *nie)
+{
+ struct neighbor_ident_entry *e = (struct neighbor_ident_entry*)nie;
+ llist_del(&e->entry);
+ talloc_free(e);
+}
+
+void neighbor_ident_clear(struct llist_head *ni_list)
+{
+ struct neighbor_ident_entry *nie;
+ while ((nie = llist_first_entry_or_null(ni_list, struct neighbor_ident_entry, entry)))
+ neighbor_ident_del(nie);
+}
diff --git a/src/libmsc/neighbor_ident_vty.c b/src/libmsc/neighbor_ident_vty.c
new file mode 100644
index 000000000..a73010632
--- /dev/null
+++ b/src/libmsc/neighbor_ident_vty.c
@@ -0,0 +1,421 @@
+/* Quagga VTY implementation to manage identity of neighboring BSS cells for inter-BSC handover. */
+/* (C) 2018 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+ *
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
+ * Author: Stefan Sperling <ssperling@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 <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include <osmocom/vty/command.h>
+#include <osmocom/gsm/gsm0808.h>
+#include <osmocom/sigtran/osmo_ss7.h>
+#include <osmocom/sigtran/sccp_helpers.h>
+
+#include <osmocom/msc/vty.h>
+#include <osmocom/msc/neighbor_ident.h>
+#include <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/ran_infra.h>
+#include <osmocom/msc/cell_id_list.h>
+
+#define NEIGHBOR_ADD_CMD "neighbor"
+#define NEIGHBOR_ADD_DOC "Add Handover target configuration\n"
+
+#define NEIGHBOR_DEL_CMD "no neighbor"
+#define NEIGHBOR_DEL_DOC NO_STR "Remove Handover target\n"
+
+#define NEIGHBOR_SHOW_CMD "show neighbor"
+#define NEIGHBOR_SHOW_DOC SHOW_STR "Show Handover targets\n"
+
+#define RAN_TYPE_PARAMS "(a|iu)"
+#define RAN_TYPE_DOC "Neighbor on GERAN-A\n" "Neighbor on UTRAN-Iu\n"
+
+#define RAN_PC_TOKEN "ran-pc"
+#define MSC_IPA_NAME_TOKEN "msc-ipa-name"
+#define HO_TARGET_PARAMS "("RAN_PC_TOKEN"|"MSC_IPA_NAME_TOKEN") RAN_PC_OR_MSC_IPA_NAME"
+#define HO_TARGET_DOC "SCCP point code of RAN peer\n" "GSUP IPA name of target MSC\n" "Point code or MSC IPA name value\n"
+
+#define LAC_PARAMS "lac <0-65535>"
+#define LAC_ARGC 1
+#define LAC_DOC "Handover target cell by LAC\n" "LAC\n"
+
+#define LAC_CI_PARAMS "lac-ci <0-65535> <0-65535>"
+#define LAC_CI_ARGC 2
+#define LAC_CI_DOC "Handover target cell by LAC and CI\n" "LAC\n" "CI\n"
+
+#define CGI_PARAMS "cgi <0-999> <0-999> <0-65535> <0-65535>"
+#define CGI_ARGC 4
+#define CGI_DOC "Handover target cell by Cell-Global Identifier (MCC, MNC, LAC, CI)\n" "MCC\n" "MNC\n" "LAC\n" "CI\n"
+
+static struct gsm_network *gsmnet = NULL;
+
+static void write_neighbor_ident_cell(struct vty *vty, const struct neighbor_ident_entry *e,
+ const struct gsm0808_cell_id *cid)
+{
+ vty_out(vty, " " NEIGHBOR_ADD_CMD " ");
+
+ switch (e->addr.ran_type) {
+ case OSMO_RAT_GERAN_A:
+ vty_out(vty, "a");
+ break;
+ case OSMO_RAT_UTRAN_IU:
+ vty_out(vty, "iu");
+ break;
+ default:
+ vty_out(vty, "<Unsupported-RAN-type>");
+ break;
+ }
+
+ vty_out(vty, " ");
+
+ switch (cid->id_discr) {
+ case CELL_IDENT_LAC:
+ vty_out(vty, "lac %u", cid->id.lac);
+ break;
+ case CELL_IDENT_LAC_AND_CI:
+ vty_out(vty, "lac-ci %u %u",
+ cid->id.lac_and_ci.lac,
+ cid->id.lac_and_ci.ci);
+ break;
+ case CELL_IDENT_WHOLE_GLOBAL:
+ vty_out(vty, "cgi %s %s %u %u",
+ osmo_mcc_name(cid->id.global.lai.plmn.mcc),
+ osmo_mnc_name(cid->id.global.lai.plmn.mnc, cid->id.global.lai.plmn.mnc_3_digits),
+ cid->id.global.lai.lac,
+ cid->id.global.cell_identity);
+ break;
+ default:
+ vty_out(vty, "<Unsupported-Cell-Identity>");
+ break;
+ }
+
+ vty_out(vty, " ");
+
+ switch (e->addr.type) {
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ vty_out(vty, RAN_PC_TOKEN " %s", e->addr.local_ran_peer_pc_str);
+ break;
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ vty_out(vty, MSC_IPA_NAME_TOKEN " %s", osmo_escape_str(e->addr.remote_msc_ipa_name.buf,
+ e->addr.remote_msc_ipa_name.len));
+ break;
+ default:
+ vty_out(vty, "<Unsupported-target-type>");
+ break;
+ }
+
+ vty_out(vty, "%s", VTY_NEWLINE);
+}
+
+static void write_neighbor_ident_entry(struct vty *vty, const struct neighbor_ident_entry *e)
+{
+ struct cell_id_list_entry *le;
+
+ llist_for_each_entry(le, &e->cell_ids, entry) {
+ write_neighbor_ident_cell(vty, e, &le->cell_id);
+ }
+
+}
+
+static void write_neighbor_ident_entry_by_cell(struct vty *vty, const struct neighbor_ident_entry *e,
+ const struct gsm0808_cell_id *cid)
+{
+ struct cell_id_list_entry *le;
+
+ llist_for_each_entry(le, &e->cell_ids, entry) {
+ if (!gsm0808_cell_ids_match(&le->cell_id, cid, false))
+ continue;
+ write_neighbor_ident_cell(vty, e, &le->cell_id);
+ }
+
+}
+
+void neighbor_ident_vty_write(struct vty *vty)
+{
+ const struct neighbor_ident_entry *e;
+
+ llist_for_each_entry(e, &gsmnet->neighbor_ident_list, entry) {
+ write_neighbor_ident_entry(vty, e);
+ }
+}
+
+void neighbor_ident_vty_write_by_ran_type(struct vty *vty, enum osmo_rat_type ran_type)
+{
+ const struct neighbor_ident_entry *e;
+
+ llist_for_each_entry(e, &gsmnet->neighbor_ident_list, entry) {
+ if (e->addr.ran_type != ran_type)
+ continue;
+ write_neighbor_ident_entry(vty, e);
+ }
+}
+
+void neighbor_ident_vty_write_by_cell(struct vty *vty, enum osmo_rat_type ran_type, const struct gsm0808_cell_id *cid)
+{
+ struct neighbor_ident_entry *e;
+
+ llist_for_each_entry(e, &gsmnet->neighbor_ident_list, entry) {
+ if (ran_type != OSMO_RAT_UNKNOWN
+ && e->addr.ran_type != ran_type)
+ continue;
+ write_neighbor_ident_entry_by_cell(vty, e, cid);
+ }
+}
+
+static struct gsm0808_cell_id *parse_lac(struct vty *vty, const char **argv)
+{
+ static struct gsm0808_cell_id cell_id;
+ cell_id = (struct gsm0808_cell_id){
+ .id_discr = CELL_IDENT_LAC,
+ .id.lac = atoi(argv[0]),
+ };
+ return &cell_id;
+}
+
+static struct gsm0808_cell_id *parse_lac_ci(struct vty *vty, const char **argv)
+{
+ static struct gsm0808_cell_id cell_id;
+ cell_id = (struct gsm0808_cell_id){
+ .id_discr = CELL_IDENT_LAC_AND_CI,
+ .id.lac_and_ci = {
+ .lac = atoi(argv[0]),
+ .ci = atoi(argv[1]),
+ },
+ };
+ return &cell_id;
+}
+
+static struct gsm0808_cell_id *parse_cgi(struct vty *vty, const char **argv)
+{
+ static struct gsm0808_cell_id cell_id;
+ cell_id = (struct gsm0808_cell_id){
+ .id_discr = CELL_IDENT_WHOLE_GLOBAL,
+ };
+ struct osmo_cell_global_id *cgi = &cell_id.id.global;
+ const char *mcc = argv[0];
+ const char *mnc = argv[1];
+ const char *lac = argv[2];
+ const char *ci = argv[3];
+
+ if (osmo_mcc_from_str(mcc, &cgi->lai.plmn.mcc)) {
+ vty_out(vty, "%% Error decoding MCC: %s%s", mcc, VTY_NEWLINE);
+ return NULL;
+ }
+
+ if (osmo_mnc_from_str(mnc, &cgi->lai.plmn.mnc, &cgi->lai.plmn.mnc_3_digits)) {
+ vty_out(vty, "%% Error decoding MNC: %s%s", mnc, VTY_NEWLINE);
+ return NULL;
+ }
+
+ cgi->lai.lac = atoi(lac);
+ cgi->cell_identity = atoi(ci);
+ return &cell_id;
+}
+
+static int add_neighbor(struct vty *vty, struct neighbor_ident_addr *addr, const struct gsm0808_cell_id *cell_id)
+{
+ if (!neighbor_ident_add(&gsmnet->neighbor_ident_list, addr, cell_id)) {
+ vty_out(vty, "%% Error: cannot add cell %s to neighbor %s%s",
+ gsm0808_cell_id_name(cell_id), neighbor_ident_addr_name(addr),
+ VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ return CMD_SUCCESS;
+}
+
+static enum osmo_rat_type parse_ran_type(struct vty *vty, const char *ran_type_str)
+{
+ if (!strcmp(ran_type_str, "a"))
+ return OSMO_RAT_GERAN_A;
+ else if (!strcmp(ran_type_str, "iu"))
+ return OSMO_RAT_UTRAN_IU;
+ vty_out(vty, "%% Error: cannot parse RAN type argument %s%s",
+ osmo_quote_str(ran_type_str, -1), VTY_NEWLINE);
+ return OSMO_RAT_UNKNOWN;
+}
+
+static enum msc_neighbor_type parse_target_type(struct vty *vty, const char *target_type_str)
+{
+ if (osmo_str_startswith(RAN_PC_TOKEN, target_type_str))
+ return MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER;
+ if (osmo_str_startswith(MSC_IPA_NAME_TOKEN, target_type_str))
+ return MSC_NEIGHBOR_TYPE_REMOTE_MSC;
+ vty_out(vty, "%% Unknown Handover target type: %s%s\n",
+ osmo_quote_str(target_type_str, -1), VTY_NEWLINE);
+ return MSC_NEIGHBOR_TYPE_NONE;
+}
+
+static int parse_ho_target_addr(struct vty *vty,
+ struct neighbor_ident_addr *nia,
+ enum osmo_rat_type ran_type,
+ const char **argv)
+{
+ const char *target_type_str = argv[0];
+ const char *arg_str = argv[1];
+ int rc;
+
+ *nia = (struct neighbor_ident_addr){
+ .type = parse_target_type(vty, target_type_str),
+ .ran_type = ran_type,
+ };
+ if (nia->ran_type == OSMO_RAT_UNKNOWN)
+ return -1;
+
+ switch (nia->type) {
+ case MSC_NEIGHBOR_TYPE_LOCAL_RAN_PEER:
+ rc = osmo_strlcpy(nia->local_ran_peer_pc_str, arg_str, sizeof(nia->local_ran_peer_pc_str));
+ if (rc < 1 || rc >= sizeof(nia->local_ran_peer_pc_str)) {
+ vty_out(vty, "%% Invalid RAN peer point-code string: %s%s", osmo_quote_str(arg_str, -1), VTY_NEWLINE);
+ return -1;
+ }
+ return 0;
+ case MSC_NEIGHBOR_TYPE_REMOTE_MSC:
+ if (msc_ipa_name_from_str(&nia->remote_msc_ipa_name, arg_str)) {
+ vty_out(vty, "%% Invalid MSC IPA name: %s%s", osmo_quote_str(arg_str, -1), VTY_NEWLINE);
+ return -1;
+ }
+ return 0;
+ default:
+ return -1;
+ }
+}
+
+#define DEFUN_CELL(id_name, ID_NAME) \
+ \
+DEFUN(cfg_neighbor_add_##id_name, cfg_neighbor_add_##id_name##_cmd, \
+ NEIGHBOR_ADD_CMD " "RAN_TYPE_PARAMS " " ID_NAME##_PARAMS " " HO_TARGET_PARAMS, \
+ NEIGHBOR_ADD_DOC RAN_TYPE_DOC ID_NAME##_DOC HO_TARGET_DOC) \
+{ \
+ struct neighbor_ident_addr addr; \
+ if (parse_ho_target_addr(vty, &addr, \
+ parse_ran_type(vty, argv[0]), \
+ argv + 1 + ID_NAME##_ARGC)) \
+ return CMD_WARNING; \
+ return add_neighbor(vty, &addr, parse_##id_name(vty, argv + 1)); \
+} \
+ \
+DEFUN(show_neighbor_ran_##id_name, show_neighbor_ran_##id_name##_cmd, \
+ NEIGHBOR_SHOW_CMD " " RAN_TYPE_PARAMS " " ID_NAME##_PARAMS, \
+ NEIGHBOR_SHOW_DOC RAN_TYPE_DOC ID_NAME##_DOC RAN_TYPE_DOC) \
+{ \
+ neighbor_ident_vty_write_by_cell(vty, \
+ parse_ran_type(vty, argv[0]), \
+ parse_##id_name(vty, argv + 1)); \
+ return CMD_SUCCESS; \
+} \
+ \
+DEFUN(show_neighbor_##id_name, show_neighbor_##id_name##_cmd, \
+ NEIGHBOR_SHOW_CMD " "ID_NAME##_PARAMS, \
+ NEIGHBOR_SHOW_DOC ID_NAME##_DOC) \
+{ \
+ neighbor_ident_vty_write_by_cell(vty, OSMO_RAT_UNKNOWN, parse_##id_name(vty, argv)); \
+ return CMD_SUCCESS; \
+}
+
+DEFUN_CELL(lac, LAC)
+DEFUN_CELL(lac_ci, LAC_CI)
+DEFUN_CELL(cgi, CGI)
+
+static int del_by_addr(struct vty *vty, const struct neighbor_ident_addr *addr)
+{
+ const struct neighbor_ident_entry *e = neighbor_ident_find_by_addr(&gsmnet->neighbor_ident_list, addr);
+
+ if (!e) {
+ vty_out(vty, "%% Cannot remove, no such neighbor: %s%s",
+ neighbor_ident_addr_name(addr), VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ neighbor_ident_del(e);
+ vty_out(vty, "%% Removed neighbor %s%s", neighbor_ident_addr_name(addr), VTY_NEWLINE);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_del_neighbor, cfg_del_neighbor_cmd,
+ NEIGHBOR_DEL_CMD " " RAN_TYPE_PARAMS " "HO_TARGET_PARAMS,
+ NEIGHBOR_DEL_DOC RAN_TYPE_DOC HO_TARGET_DOC)
+{
+ struct neighbor_ident_addr addr;
+ if (parse_ho_target_addr(vty, &addr,
+ parse_ran_type(vty, argv[0]),
+ argv + 1))
+ return CMD_WARNING;
+
+ return del_by_addr(vty, &addr);
+}
+
+DEFUN(show_neighbor_all, show_neighbor_all_cmd,
+ NEIGHBOR_SHOW_CMD,
+ NEIGHBOR_SHOW_DOC)
+{
+ neighbor_ident_vty_write(vty);
+ return CMD_SUCCESS;
+}
+
+DEFUN(show_neighbor_ran, show_neighbor_ran_cmd,
+ NEIGHBOR_SHOW_CMD " " RAN_TYPE_PARAMS,
+ NEIGHBOR_SHOW_DOC RAN_TYPE_DOC)
+{
+ neighbor_ident_vty_write_by_ran_type(vty, parse_ran_type(vty, argv[0]));
+ return CMD_SUCCESS;
+}
+
+DEFUN(show_neighbor, show_neighbor_cmd,
+ NEIGHBOR_SHOW_CMD " "RAN_TYPE_PARAMS " " HO_TARGET_PARAMS,
+ NEIGHBOR_SHOW_DOC RAN_TYPE_DOC HO_TARGET_DOC)
+{
+ const struct neighbor_ident_entry *e;
+ struct neighbor_ident_addr addr;
+ if (parse_ho_target_addr(vty, &addr,
+ parse_ran_type(vty, argv[0]),
+ argv + 1))
+ return CMD_WARNING;
+
+ e = neighbor_ident_find_by_addr(&gsmnet->neighbor_ident_list, &addr);
+ if (e)
+ write_neighbor_ident_entry(vty, e);
+ else
+ vty_out(vty, "%% No such neighbor target%s", VTY_NEWLINE);
+
+ return CMD_SUCCESS;
+}
+
+void neighbor_ident_vty_init(struct gsm_network *net)
+{
+ gsmnet = net;
+
+ install_element(MSC_NODE, &cfg_neighbor_add_lac_cmd);
+ install_element(MSC_NODE, &cfg_neighbor_add_lac_ci_cmd);
+ install_element(MSC_NODE, &cfg_neighbor_add_cgi_cmd);
+ install_element(MSC_NODE, &cfg_del_neighbor_cmd);
+ install_element_ve(&show_neighbor_all_cmd);
+ install_element_ve(&show_neighbor_cmd);
+ install_element_ve(&show_neighbor_ran_cmd);
+
+ install_element_ve(&show_neighbor_ran_lac_cmd);
+ install_element_ve(&show_neighbor_ran_lac_ci_cmd);
+ install_element_ve(&show_neighbor_ran_cgi_cmd);
+
+ install_element_ve(&show_neighbor_lac_cmd);
+ install_element_ve(&show_neighbor_lac_ci_cmd);
+ install_element_ve(&show_neighbor_cgi_cmd);
+}
diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c
deleted file mode 100644
index 5c6f0aa2e..000000000
--- a/src/libmsc/osmo_msc.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/* main MSC management code... */
-
-/*
- * (C) 2010,2013 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2010 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/>.
- *
- */
-
-#include <osmocom/msc/debug.h>
-#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/db.h>
-#include <osmocom/msc/vlr.h>
-#include <osmocom/msc/a_iface.h>
-#include <osmocom/msc/gsm_04_08.h>
-#include <osmocom/msc/gsm_04_11.h>
-#include <osmocom/msc/msc_mgcp.h>
-
-#include "../../bscconfig.h"
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#else
-#include <osmocom/msc/iu_dummy.h>
-#endif
-
-struct gsm_network *gsm_network_init(void *ctx, mncc_recv_cb_t mncc_recv)
-{
- struct gsm_network *net;
-
- net = talloc_zero(ctx, struct gsm_network);
- if (!net)
- return NULL;
-
- net->plmn = (struct osmo_plmn_id){ .mcc=1, .mnc=1 };
-
- /* Permit a compile-time default of A5/3 and A5/1 */
- net->a5_encryption_mask = (1 << 3) | (1 << 1);
-
- /* Use 30 min periodic update interval as sane default */
- net->t3212 = 5;
-
- net->mncc_guard_timeout = 180;
- net->ncss_guard_timeout = 30;
-
- net->paging_response_timer = MSC_PAGING_RESPONSE_TIMER_DEFAULT;
-
- INIT_LLIST_HEAD(&net->trans_list);
- INIT_LLIST_HEAD(&net->upqueue);
- INIT_LLIST_HEAD(&net->ran_conns);
-
- /* init statistics */
- net->msc_ctrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
- if (!net->msc_ctrs) {
- talloc_free(net);
- return NULL;
- }
- net->active_calls = osmo_counter_alloc("msc.active_calls");
- net->active_nc_ss = osmo_counter_alloc("msc.active_nc_ss");
-
- net->mncc_recv = mncc_recv;
-
- INIT_LLIST_HEAD(&net->a.bscs);
-
- return net;
-}
-
-void gsm_network_set_mncc_sock_path(struct gsm_network *net, const char *mncc_sock_path)
-{
- if (net->mncc_sock_path)
- talloc_free(net->mncc_sock_path);
- net->mncc_sock_path = mncc_sock_path ? talloc_strdup(net, mncc_sock_path) : NULL;
-}
-
-/* Receive a SAPI-N-REJECT from BSC */
-void ran_conn_sapi_n_reject(struct ran_conn *conn, int dlci)
-{
- int sapi = dlci & 0x7;
-
- if (sapi == UM_SAPI_SMS)
- gsm411_sapi_n_reject(conn);
-}
-
-/* receive a Level 3 Complete message.
- * Ownership of the conn is completely passed to the conn FSM, i.e. for both acceptance and rejection,
- * the conn FSM shall decide when to release this conn. It may already be discarded before this exits. */
-void ran_conn_compl_l3(struct ran_conn *conn,
- struct msgb *msg, uint16_t chosen_channel)
-{
- ran_conn_get(conn, RAN_CONN_USE_COMPL_L3);
- gsm0408_dispatch(conn, msg);
- ran_conn_put(conn, RAN_CONN_USE_COMPL_L3);
-}
-
-/* Receive a DTAP message from BSC */
-void ran_conn_dtap(struct ran_conn *conn, struct msgb *msg)
-{
- ran_conn_get(conn, RAN_CONN_USE_DTAP);
- gsm0408_dispatch(conn, msg);
-
- ran_conn_put(conn, RAN_CONN_USE_DTAP);
-}
-
-/* Receive an ASSIGNMENT COMPLETE from BSC */
-void msc_assign_compl(struct ran_conn *conn,
- uint8_t rr_cause, uint8_t chosen_channel,
- uint8_t encr_alg_id, uint8_t speec)
-{
- LOGP(DRR, LOGL_DEBUG, "MSC assign complete (do nothing).\n");
-}
-
-/* Receive an ASSIGNMENT FAILURE from BSC */
-void ran_conn_assign_fail(struct ran_conn *conn, uint8_t cause, uint8_t *rr_cause)
-{
- LOGPFSMSL(conn->fi, DRR, LOGL_ERROR, "Assignment Failure: cause=%u rr_cause=%u.\n",
- cause, rr_cause ? *rr_cause : 0);
- msc_mgcp_ass_fail(conn);
-}
-
-/* Receive a CLASSMARK CHANGE from BSC */
-void ran_conn_classmark_chg(struct ran_conn *conn,
- const uint8_t *cm2, uint8_t cm2_len,
- const uint8_t *cm3, uint8_t cm3_len)
-{
- struct gsm_classmark *cm;
-
- if (!conn->vsub)
- cm = &conn->temporary_classmark;
- else
- cm = &conn->vsub->classmark;
-
- if (cm2 && cm2_len) {
- if (cm2_len > sizeof(cm->classmark2)) {
- LOGP(DRR, LOGL_NOTICE, "%s: classmark2 is %u bytes, truncating at %zu bytes\n",
- vlr_subscr_name(conn->vsub), cm2_len, sizeof(cm->classmark2));
- cm2_len = sizeof(cm->classmark2);
- }
- cm->classmark2_len = cm2_len;
- memcpy(cm->classmark2, cm2, cm2_len);
- }
- if (cm3 && cm3_len) {
- if (cm3_len > sizeof(cm->classmark3)) {
- LOGP(DRR, LOGL_NOTICE, "%s: classmark3 is %u bytes, truncating at %zu bytes\n",
- vlr_subscr_name(conn->vsub), cm3_len, sizeof(cm->classmark3));
- cm3_len = sizeof(cm->classmark3);
- }
- cm->classmark3_len = cm3_len;
- memcpy(cm->classmark3, cm3, cm3_len);
- }
-
- /* bump subscr conn FSM in case it is waiting for a Classmark Update */
- if (conn->fi->state == RAN_CONN_S_WAIT_CLASSMARK_UPDATE)
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_CLASSMARK_UPDATE, NULL);
-}
-
-/* Receive a CIPHERING MODE COMPLETE from BSC */
-void ran_conn_cipher_mode_compl(struct ran_conn *conn, struct msgb *msg, uint8_t alg_id)
-{
- struct vlr_ciph_result ciph_res = { .cause = VLR_CIPH_REJECT };
-
- if (!conn) {
- LOGP(DRR, LOGL_ERROR, "invalid: rx Ciphering Mode Complete on NULL conn\n");
- return;
- }
- if (!conn->vsub) {
- LOGP(DRR, LOGL_ERROR, "invalid: rx Ciphering Mode Complete for NULL subscr\n");
- return;
- }
-
- DEBUGP(DRR, "%s: CIPHERING MODE COMPLETE\n", vlr_subscr_name(conn->vsub));
-
- if (msg) {
- struct gsm48_hdr *gh = msgb_l3(msg);
- unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
- struct tlv_parsed tp;
- uint8_t mi_type;
-
- if (!gh) {
- LOGP(DRR, LOGL_ERROR, "invalid: msgb without l3 header\n");
- return;
- }
-
- tlv_parse(&tp, &gsm48_att_tlvdef, gh->data, payload_len, 0, 0);
-
- /* bearer capability */
- if (TLVP_PRESENT(&tp, GSM48_IE_MOBILE_ID)) {
- mi_type = TLVP_VAL(&tp, GSM48_IE_MOBILE_ID)[0] & GSM_MI_TYPE_MASK;
- if (mi_type == GSM_MI_TYPE_IMEISV
- && TLVP_LEN(&tp, GSM48_IE_MOBILE_ID) > 0) {
- gsm48_mi_to_string(ciph_res.imeisv, sizeof(ciph_res.imeisv),
- TLVP_VAL(&tp, GSM48_IE_MOBILE_ID),
- TLVP_LEN(&tp, GSM48_IE_MOBILE_ID));
- }
- }
- }
-
- conn->geran_encr.alg_id = alg_id;
-
- ciph_res.cause = VLR_CIPH_COMPL;
- vlr_subscr_rx_ciph_res(conn->vsub, &ciph_res);
-}
-
-/* Receive a CLEAR REQUEST from BSC */
-int ran_conn_clear_request(struct ran_conn *conn, uint32_t cause)
-{
- ran_conn_close(conn, cause);
- return 1;
-}
-
-void msc_stop_paging(struct vlr_subscr *vsub)
-{
- DEBUGP(DPAG, "Paging can stop for %s\n", vlr_subscr_name(vsub));
- /* tell BSCs and RNCs to stop paging? How? */
-}
diff --git a/src/libmsc/paging.c b/src/libmsc/paging.c
new file mode 100644
index 000000000..5baa0dca0
--- /dev/null
+++ b/src/libmsc/paging.c
@@ -0,0 +1,183 @@
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/msc/gsm_data.h>
+#include <osmocom/msc/paging.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/sgs_iface.h>
+#include <osmocom/msc/signal.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/transaction.h>
+
+#define LOG_PAGING(vsub, paging_request, level, fmt, args ...) \
+ LOGP(DPAG, level, "Paging: %s%s%s: " fmt, \
+ vlr_subscr_name(vsub), paging_request ? " for " : "", paging_request ? (paging_request)->label : "", ## args)
+
+#define VSUB_USE_PAGING "Paging"
+
+const struct value_string paging_cause_names[] = {
+ { PAGING_CAUSE_CALL_CONVERSATIONAL, "CALL_CONVERSATIONAL" },
+ { PAGING_CAUSE_CALL_STREAMING, "CALL_STREAMING" },
+ { PAGING_CAUSE_CALL_INTERACTIVE, "CALL_INTERACTIVE" },
+ { PAGING_CAUSE_CALL_BACKGROUND, "CALL_BACKGROUND" },
+ { PAGING_CAUSE_SIGNALLING_LOW_PRIO, "SIGNALLING_LOW_PRIO" },
+ { PAGING_CAUSE_SIGNALLING_HIGH_PRIO, "SIGNALLING_HIGH_PRIO" },
+ { PAGING_CAUSE_UNSPECIFIED, "UNSPECIFIED" },
+ {}
+};
+
+static void paging_response_timer_cb(void *data)
+{
+ struct vlr_subscr *vsub = data;
+ paging_expired(vsub);
+}
+
+/* Execute a paging on the currently active RAN. Returns the number of
+ * delivered paging requests or -EINVAL in case of failure. */
+static int msc_paging_request(struct paging_request *pr, struct vlr_subscr *vsub)
+{
+ struct gsm_network *net = vsub->vlr->user_ctx;
+
+ /* The subscriber was last seen in subscr->lac. Find out which
+ * BSCs/RNCs are responsible and send them a paging request via open
+ * SCCP connections (if any). */
+ switch (vsub->cs.attached_via_ran) {
+ case OSMO_RAT_GERAN_A:
+ return ran_peers_down_paging(net->a.sri, CELL_IDENT_LAC, vsub, pr->cause);
+ case OSMO_RAT_UTRAN_IU:
+ return ran_peers_down_paging(net->iu.sri, CELL_IDENT_LAC, vsub, pr->cause);
+ case OSMO_RAT_EUTRAN_SGS:
+ return sgs_iface_tx_paging(vsub, sgs_serv_ind_from_paging_cause(pr->cause));
+ default:
+ break;
+ }
+
+ LOG_PAGING(vsub, pr, LOGL_ERROR, " Cannot page, subscriber not attached\n");
+ return -EINVAL;
+}
+
+struct paging_request *paging_request_start(struct vlr_subscr *vsub, enum paging_cause cause,
+ paging_cb_t paging_cb, struct gsm_trans *trans,
+ const char *label)
+{
+ int rc;
+ struct paging_request *pr;
+ struct gsm_network *net = vsub->vlr->user_ctx;
+
+ pr = talloc_zero(vsub, struct paging_request);
+ OSMO_ASSERT(pr);
+ *pr = (struct paging_request){
+ .label = label,
+ .cause = cause,
+ .paging_cb = paging_cb,
+ .trans = trans,
+ };
+
+ if (vsub->cs.is_paging) {
+ LOG_PAGING(vsub, pr, LOGL_DEBUG, "Already paging, not starting another request\n");
+ } else {
+ LOG_PAGING(vsub, pr, LOGL_DEBUG, "Starting paging\n");
+
+ rc = msc_paging_request(pr, vsub);
+ if (rc <= 0) {
+ LOG_PAGING(vsub, pr, LOGL_ERROR, "Starting paging failed (rc=%d)\n", rc);
+ talloc_free(pr);
+ return NULL;
+ }
+
+ /* reduced on the first paging callback */
+ vlr_subscr_get(vsub, VSUB_USE_PAGING);
+ vsub->cs.is_paging = true;
+ osmo_timer_setup(&vsub->cs.paging_response_timer, paging_response_timer_cb, vsub);
+ osmo_timer_schedule(&vsub->cs.paging_response_timer, net->paging_response_timer, 0);
+ }
+
+ llist_add_tail(&pr->entry, &vsub->cs.requests);
+
+ return pr;
+}
+
+void paging_request_remove(struct paging_request *pr)
+{
+ struct gsm_trans *trans = pr->trans;
+ struct vlr_subscr *vsub = trans ? trans->vsub : NULL;
+ LOG_PAGING(vsub, pr, LOGL_DEBUG, "Removing Paging Request\n");
+
+ if (pr->trans && pr->trans->paging_request == pr)
+ pr->trans->paging_request = NULL;
+
+ llist_del(&pr->entry);
+ talloc_free(pr);
+}
+
+static void paging_concludes(struct vlr_subscr *vsub, struct msc_a *msc_a)
+{
+ struct paging_request *pr, *pr_next;
+ struct paging_signal_data sig_data;
+
+ osmo_timer_del(&vsub->cs.paging_response_timer);
+
+ llist_for_each_entry_safe(pr, pr_next, &vsub->cs.requests, entry) {
+ struct gsm_trans *trans = pr->trans;
+ paging_cb_t paging_cb = pr->paging_cb;
+
+ LOG_PAGING(vsub, pr, LOGL_DEBUG, "Paging Response action (%s)%s\n",
+ msc_a ? "success" : "expired",
+ paging_cb ? "" : " (no action defined)");
+
+ /* Remove the paging request before the paging_cb could deallocate e.g. the trans */
+ paging_request_remove(pr);
+ pr = NULL;
+
+ if (paging_cb)
+ paging_cb(msc_a, trans);
+ }
+
+ /* Inform parts of the system we don't know */
+ sig_data = (struct paging_signal_data){
+ .vsub = vsub,
+ .msc_a = msc_a,
+ };
+ osmo_signal_dispatch(SS_PAGING, msc_a ? S_PAGING_SUCCEEDED : S_PAGING_EXPIRED, &sig_data);
+
+ /* balanced with the moment we start paging */
+ if (vsub->cs.is_paging) {
+ vsub->cs.is_paging = false;
+ vlr_subscr_put(vsub, VSUB_USE_PAGING);
+ }
+
+ /* Handling of the paging requests has usually added transactions, which keep the msc_a connection active. If
+ * there are none, then this probably marks release of the connection. */
+ if (msc_a)
+ msc_a_put(msc_a, MSC_A_USE_PAGING_RESPONSE);
+}
+
+void paging_response(struct msc_a *msc_a)
+{
+ paging_concludes(msc_a_vsub(msc_a), msc_a);
+}
+
+void paging_expired(struct vlr_subscr *vsub)
+{
+ paging_concludes(vsub, NULL);
+}
diff --git a/src/libmsc/ran_conn.c b/src/libmsc/ran_conn.c
index 8ad183e0e..6e20403f7 100644
--- a/src/libmsc/ran_conn.c
+++ b/src/libmsc/ran_conn.c
@@ -30,883 +30,139 @@
#include <osmocom/msc/debug.h>
#include <osmocom/msc/transaction.h>
#include <osmocom/msc/signal.h>
-#include <osmocom/msc/a_iface.h>
#include <osmocom/msc/sgs_iface.h>
-#include <osmocom/msc/iucs.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/ran_infra.h>
+#include <osmocom/msc/msub.h>
-#include "../../bscconfig.h"
-#ifdef BUILD_IU
-#include <osmocom/ranap/iu_client.h>
-#else
-#include <osmocom/msc/iu_dummy.h>
-#endif
-
-#define RAN_CONN_TIMEOUT 5 /* seconds */
-
-static const struct value_string ran_conn_fsm_event_names[] = {
- OSMO_VALUE_STRING(RAN_CONN_E_COMPLETE_LAYER_3),
- OSMO_VALUE_STRING(RAN_CONN_E_CLASSMARK_UPDATE),
- OSMO_VALUE_STRING(RAN_CONN_E_ACCEPTED),
- OSMO_VALUE_STRING(RAN_CONN_E_COMMUNICATING),
- OSMO_VALUE_STRING(RAN_CONN_E_RELEASE_WHEN_UNUSED),
- OSMO_VALUE_STRING(RAN_CONN_E_MO_CLOSE),
- OSMO_VALUE_STRING(RAN_CONN_E_CN_CLOSE),
- OSMO_VALUE_STRING(RAN_CONN_E_UNUSED),
- { 0, NULL }
-};
-
-static void update_counters(struct osmo_fsm_inst *fi, bool conn_accepted)
-{
- struct ran_conn *conn = fi->priv;
- switch (conn->complete_layer3_type) {
- case COMPLETE_LAYER3_LU:
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[
- conn_accepted ? MSC_CTR_LOC_UPDATE_COMPLETED
- : MSC_CTR_LOC_UPDATE_FAILED]);
- break;
- case COMPLETE_LAYER3_CM_SERVICE_REQ:
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[
- conn_accepted ? MSC_CTR_CM_SERVICE_REQUEST_ACCEPTED
- : MSC_CTR_CM_SERVICE_REQUEST_REJECTED]);
- break;
- case COMPLETE_LAYER3_PAGING_RESP:
- rate_ctr_inc(&conn->network->msc_ctrs->ctr[
- conn_accepted ? MSC_CTR_PAGING_RESP_ACCEPTED
- : MSC_CTR_PAGING_RESP_REJECTED]);
- break;
- default:
- break;
- }
-}
-
-static void evaluate_acceptance_outcome(struct osmo_fsm_inst *fi, bool conn_accepted)
-{
- struct ran_conn *conn = fi->priv;
-
- update_counters(fi, conn_accepted);
-
- /* Trigger transactions that we paged for */
- if (conn->complete_layer3_type == COMPLETE_LAYER3_PAGING_RESP) {
- subscr_paging_dispatch(GSM_HOOK_RR_PAGING,
- conn_accepted ? GSM_PAGING_SUCCEEDED : GSM_PAGING_EXPIRED,
- NULL, conn, conn->vsub);
- }
-
- if (conn->complete_layer3_type == COMPLETE_LAYER3_CM_SERVICE_REQ
- && conn_accepted) {
- conn->received_cm_service_request = true;
- ran_conn_get(conn, RAN_CONN_USE_CM_SERVICE);
- }
-
- if (conn_accepted)
- osmo_signal_dispatch(SS_SUBSCR, S_SUBSCR_ATTACHED, conn->vsub);
-}
-
-static void log_close_event(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- enum gsm48_reject_value *cause = data;
- /* The close event itself is logged by the FSM. We can only add the cause value, if present. */
- if (!cause || !*cause)
- return;
- LOGPFSML(fi, LOGL_NOTICE, "Close event, cause: %s\n", gsm48_reject_value_name(*cause));
-}
-
-static void ran_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- switch (event) {
- case RAN_CONN_E_COMPLETE_LAYER_3:
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_AUTH_CIPH, RAN_CONN_TIMEOUT, 0);
- return;
-
- case RAN_CONN_E_ACCEPTED:
- evaluate_acceptance_outcome(fi, true);
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_ACCEPTED, RAN_CONN_TIMEOUT, 0);
- return;
-
- case RAN_CONN_E_MO_CLOSE:
- case RAN_CONN_E_CN_CLOSE:
- log_close_event(fi, event, data);
- evaluate_acceptance_outcome(fi, false);
- /* fall through */
- case RAN_CONN_E_UNUSED:
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
- return;
-
- default:
- OSMO_ASSERT(false);
- }
-}
-
-static void ran_conn_fsm_auth_ciph(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- /* If accepted, transition the state, all other cases mean failure. */
- switch (event) {
- case RAN_CONN_E_ACCEPTED:
- evaluate_acceptance_outcome(fi, true);
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_ACCEPTED, RAN_CONN_TIMEOUT, 0);
- return;
-
- case RAN_CONN_E_UNUSED:
- LOGPFSML(fi, LOGL_DEBUG, "Awaiting results for Auth+Ciph, overruling event %s\n",
- osmo_fsm_event_name(fi->fsm, event));
- return;
-
- case RAN_CONN_E_MO_CLOSE:
- case RAN_CONN_E_CN_CLOSE:
- log_close_event(fi, event, data);
- evaluate_acceptance_outcome(fi, false);
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
- return;
-
-
- default:
- OSMO_ASSERT(false);
- }
-}
-
-int ran_conn_classmark_request_then_cipher_mode_cmd(struct ran_conn *conn, bool umts_aka,
- bool retrieve_imeisv)
+struct ran_conn *ran_conn_create_incoming(struct ran_peer *ran_peer, uint32_t sccp_conn_id)
{
- int rc;
- conn->geran_set_cipher_mode.umts_aka = umts_aka;
- conn->geran_set_cipher_mode.retrieve_imeisv = retrieve_imeisv;
-
- rc = a_iface_tx_classmark_request(conn);
- if (rc) {
- LOGP(DMM, LOGL_ERROR, "%s: cannot send BSSMAP Classmark Request\n",
- vlr_subscr_name(conn->vsub));
- return -EIO;
- }
-
- osmo_fsm_inst_state_chg(conn->fi, RAN_CONN_S_WAIT_CLASSMARK_UPDATE, RAN_CONN_TIMEOUT, 0);
- return 0;
-}
-
-static void ran_conn_fsm_wait_classmark_update(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct ran_conn *conn = fi->priv;
- switch (event) {
- case RAN_CONN_E_CLASSMARK_UPDATE:
- /* Theoretically, this event can be used for requesting Classmark in various situations.
- * So far though, the only time we send a Classmark Request is during Ciphering. As soon
- * as more such situations arise, we need to add state to indicate what action should
- * follow after a Classmark Update is received (e.g.
- * ran_conn_classmark_request_then_cipher_mode_cmd() sets an enum value to indicate that
- * Ciphering should continue afterwards). But right now, it is accurate to always
- * continue with Ciphering: */
-
- /* During Ciphering, we needed Classmark information. The Classmark Update has come in,
- * go back into the Set Ciphering Command procedure. */
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_AUTH_CIPH, RAN_CONN_TIMEOUT, 0);
- if (ran_conn_geran_set_cipher_mode(conn, conn->geran_set_cipher_mode.umts_aka,
- conn->geran_set_cipher_mode.retrieve_imeisv)) {
- LOGPFSML(fi, LOGL_ERROR,
- "Sending Cipher Mode Command failed, aborting attach\n");
- vlr_subscr_cancel_attach_fsm(conn->vsub, OSMO_FSM_TERM_ERROR,
- GSM48_REJECT_NETWORK_FAILURE);
- }
- return;
+ struct ran_conn *conn;
- case RAN_CONN_E_UNUSED:
- LOGPFSML(fi, LOGL_DEBUG, "Awaiting results for Auth+Ciph, overruling event %s\n",
- osmo_fsm_event_name(fi->fsm, event));
- return;
+ conn = talloc_zero(ran_peer, struct ran_conn);
+ OSMO_ASSERT(conn);
- case RAN_CONN_E_MO_CLOSE:
- case RAN_CONN_E_CN_CLOSE:
- log_close_event(fi, event, data);
- evaluate_acceptance_outcome(fi, false);
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
- return;
+ *conn = (struct ran_conn){
+ .ran_peer = ran_peer,
+ .sccp_conn_id = sccp_conn_id,
+ };
- default:
- OSMO_ASSERT(false);
- }
+ llist_add(&conn->entry, &ran_peer->sri->ran_conns);
+ return conn;
}
-static bool ran_conn_fsm_has_active_transactions(struct osmo_fsm_inst *fi)
+struct ran_conn *ran_conn_create_outgoing(struct ran_peer *ran_peer)
{
- struct ran_conn *conn = fi->priv;
- struct gsm_trans *trans;
-
- if (conn->silent_call) {
- LOGPFSML(fi, LOGL_DEBUG, "%s: silent call still active\n", __func__);
- return true;
- }
+ /* FIXME use method being developed in gerrit id Ifd55c6b7ed2558ff072042079cf45f5068a971de */
+ static uint32_t next_outgoing_conn_id = 2342;
+ uint32_t conn_id = 0;
+ int attempts = 1000;
+ bool already_used = true;
+ while (attempts--) {
+ struct ran_conn *conn;
- if (conn->received_cm_service_request) {
- LOGPFSML(fi, LOGL_DEBUG, "%s: still awaiting first request after a CM Service Request\n",
- __func__);
- return true;
- }
+ conn_id = next_outgoing_conn_id;
+ next_outgoing_conn_id++;
- if (conn->vsub && !llist_empty(&conn->vsub->cs.requests)) {
- struct subscr_request *sr;
- if (!log_check_level(fi->fsm->log_subsys, LOGL_DEBUG)) {
- llist_for_each_entry(sr, &conn->vsub->cs.requests, entry) {
- LOGPFSML(fi, LOGL_DEBUG, "%s: still active: %s\n",
- __func__, sr->label);
+ already_used = false;
+ llist_for_each_entry(conn, &ran_peer->sri->ran_conns, entry) {
+ if (conn->sccp_conn_id == conn_id) {
+ already_used = true;
+ break;
}
}
- return true;
- }
-
- if ((trans = trans_has_conn(conn))) {
- LOGPFSML(fi, LOGL_DEBUG,
- "%s: connection still has active transaction: %s\n",
- __func__, gsm48_pdisc_name(trans->protocol));
- return true;
- }
-
- return false;
-}
-
-static void ran_conn_fsm_accepted_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)
-{
- struct ran_conn *conn = fi->priv;
-
- /* Stop Location Update expiry for this subscriber. While the subscriber
- * has an open connection the LU expiry timer must remain disabled.
- * Otherwise we would kick the subscriber off the network when the timer
- * expires e.g. during a long phone call.
- * The LU expiry timer will restart once the connection is closed. */
- conn->vsub->expire_lu = VLR_SUBSCRIBER_NO_EXPIRATION;
-
- if (!ran_conn_fsm_has_active_transactions(fi))
- osmo_fsm_inst_dispatch(fi, RAN_CONN_E_UNUSED, NULL);
-}
-
-static void ran_conn_fsm_accepted(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- switch (event) {
- case RAN_CONN_E_COMPLETE_LAYER_3:
- /* When Authentication is off, we may already be in the Accepted state when the code
- * evaluates the Compl L3. Simply ignore. This just cosmetically mutes the error log
- * about the useless event. */
- return;
-
- case RAN_CONN_E_COMMUNICATING:
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_COMMUNICATING, 0, 0);
- return;
-
- case RAN_CONN_E_MO_CLOSE:
- case RAN_CONN_E_CN_CLOSE:
- log_close_event(fi, event, data);
- /* fall through */
- case RAN_CONN_E_UNUSED:
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
- return;
-
- default:
- OSMO_ASSERT(false);
- }
-}
-
-static void ran_conn_fsm_communicating(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- switch (event) {
- case RAN_CONN_E_COMMUNICATING:
- /* no-op */
- return;
-
- case RAN_CONN_E_MO_CLOSE:
- case RAN_CONN_E_CN_CLOSE:
- log_close_event(fi, event, data);
- /* fall through */
- case RAN_CONN_E_UNUSED:
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASING, RAN_CONN_TIMEOUT, 0);
- return;
-
- default:
- OSMO_ASSERT(false);
- }
-}
-
-static int ran_conn_fsm_timeout(struct osmo_fsm_inst *fi)
-{
- struct ran_conn *conn = fi->priv;
- if (ran_conn_in_release(conn)) {
- LOGPFSML(fi, LOGL_ERROR, "Timeout while releasing, discarding right now\n");
- osmo_fsm_inst_term(fi, OSMO_FSM_TERM_TIMEOUT, NULL);
- } else {
- enum gsm48_reject_value cause = GSM48_REJECT_CONGESTION;
- osmo_fsm_inst_dispatch(fi, RAN_CONN_E_CN_CLOSE, &cause);
- }
- return 0;
-}
-
-static void ran_conn_fsm_releasing_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
-{
- struct ran_conn *conn = fi->priv;
-
- /* The SGs interface needs to access vsub struct members to send the
- * release message, however the following release procedures will
- * remove conn->vsub, so we need to send the release right now. */
- if (conn->via_ran == OSMO_RAT_EUTRAN_SGS) {
- sgs_iface_tx_release(conn);
- }
-
- /* Use count for either conn->a.waiting_for_clear_complete or
- * conn->iu.waiting_for_release_complete. 'get' it early, so we don't deallocate after tearing
- * down active transactions. Safeguard against double-get (though it shouldn't happen). */
- if (!ran_conn_used_by(conn, RAN_CONN_USE_RELEASE))
- ran_conn_get(conn, RAN_CONN_USE_RELEASE);
-
- /* Cancel pending CM Service Requests */
- if (conn->received_cm_service_request) {
- conn->received_cm_service_request = false;
- ran_conn_put(conn, RAN_CONN_USE_CM_SERVICE);
- }
-
- /* Cancel all VLR FSMs, if any */
- vlr_subscr_cancel_attach_fsm(conn->vsub, OSMO_FSM_TERM_ERROR, GSM48_REJECT_CONGESTION);
-
- if (conn->vsub) {
- /* The subscriber has no active connection anymore.
- * Restart the periodic Location Update expiry timer for this subscriber. */
- vlr_subscr_enable_expire_lu(conn->vsub);
- }
- /* If we're closing in a middle of a trans, we need to clean up */
- trans_conn_closed(conn);
-
- switch (conn->via_ran) {
- case OSMO_RAT_GERAN_A:
- a_iface_tx_clear_cmd(conn);
- if (conn->a.waiting_for_clear_complete) {
- LOGPFSML(fi, LOGL_ERROR,
- "Unexpected: conn is already waiting for BSSMAP Clear Complete\n");
- break;
- }
- conn->a.waiting_for_clear_complete = true;
- break;
- case OSMO_RAT_UTRAN_IU:
- ranap_iu_tx_release(conn->iu.ue_ctx, NULL);
- if (conn->iu.waiting_for_release_complete) {
- LOGPFSML(fi, LOGL_ERROR,
- "Unexpected: conn is already waiting for Iu Release Complete\n");
+ if (!already_used)
break;
- }
- conn->iu.waiting_for_release_complete = true;
- break;
- case OSMO_RAT_EUTRAN_SGS:
- /* Release message is already sent at the beginning of this
- * functions (see above), but we still need to notify the
- * conn that a release has been sent / is in progress. */
- ran_conn_sgs_release_sent(conn);
- break;
- default:
- LOGP(DMM, LOGL_ERROR, "%s: Unknown RAN type, cannot tx release/clear\n",
- vlr_subscr_name(conn->vsub));
- break;
}
+ if (already_used)
+ return NULL;
+ LOG_RAN_PEER(ran_peer, LOGL_DEBUG, "Outgoing conn id: %u\n", conn_id);
+ return ran_conn_create_incoming(ran_peer, conn_id);
}
-static void ran_conn_fsm_releasing(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- OSMO_ASSERT(event == RAN_CONN_E_UNUSED);
- osmo_fsm_inst_state_chg(fi, RAN_CONN_S_RELEASED, 0, 0);
-}
-
-static void ran_conn_fsm_released(struct osmo_fsm_inst *fi, uint32_t prev_state)
-{
- /* Terminate, deallocate and also deallocate the ran_conn, which is allocated as
- * a talloc child of fi. Also calls the cleanup function. */
- osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
-}
-
-#define S(x) (1 << (x))
-
-static const struct osmo_fsm_state ran_conn_fsm_states[] = {
- [RAN_CONN_S_NEW] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_NEW),
- .in_event_mask = S(RAN_CONN_E_COMPLETE_LAYER_3) |
- S(RAN_CONN_E_ACCEPTED) |
- S(RAN_CONN_E_MO_CLOSE) |
- S(RAN_CONN_E_CN_CLOSE) |
- S(RAN_CONN_E_UNUSED),
- .out_state_mask = S(RAN_CONN_S_AUTH_CIPH) |
- S(RAN_CONN_S_ACCEPTED) |
- S(RAN_CONN_S_RELEASING),
- .action = ran_conn_fsm_new,
- },
- [RAN_CONN_S_AUTH_CIPH] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_AUTH_CIPH),
- .in_event_mask = S(RAN_CONN_E_ACCEPTED) |
- S(RAN_CONN_E_MO_CLOSE) |
- S(RAN_CONN_E_CN_CLOSE) |
- S(RAN_CONN_E_UNUSED),
- .out_state_mask = S(RAN_CONN_S_WAIT_CLASSMARK_UPDATE) |
- S(RAN_CONN_S_ACCEPTED) |
- S(RAN_CONN_S_RELEASING),
- .action = ran_conn_fsm_auth_ciph,
- },
- [RAN_CONN_S_WAIT_CLASSMARK_UPDATE] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_WAIT_CLASSMARK_UPDATE),
- .in_event_mask = S(RAN_CONN_E_CLASSMARK_UPDATE) |
- S(RAN_CONN_E_MO_CLOSE) |
- S(RAN_CONN_E_CN_CLOSE) |
- S(RAN_CONN_E_UNUSED),
- .out_state_mask = S(RAN_CONN_S_AUTH_CIPH) |
- S(RAN_CONN_S_RELEASING),
- .action = ran_conn_fsm_wait_classmark_update,
- },
- [RAN_CONN_S_ACCEPTED] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_ACCEPTED),
- /* allow everything to release for any odd behavior */
- .in_event_mask = S(RAN_CONN_E_COMPLETE_LAYER_3) |
- S(RAN_CONN_E_COMMUNICATING) |
- S(RAN_CONN_E_RELEASE_WHEN_UNUSED) |
- S(RAN_CONN_E_ACCEPTED) |
- S(RAN_CONN_E_MO_CLOSE) |
- S(RAN_CONN_E_CN_CLOSE) |
- S(RAN_CONN_E_UNUSED),
- .out_state_mask = S(RAN_CONN_S_RELEASING) |
- S(RAN_CONN_S_COMMUNICATING),
- .onenter = ran_conn_fsm_accepted_enter,
- .action = ran_conn_fsm_accepted,
- },
- [RAN_CONN_S_COMMUNICATING] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_COMMUNICATING),
- /* allow everything to release for any odd behavior */
- .in_event_mask = S(RAN_CONN_E_RELEASE_WHEN_UNUSED) |
- S(RAN_CONN_E_ACCEPTED) |
- S(RAN_CONN_E_COMMUNICATING) |
- S(RAN_CONN_E_MO_CLOSE) |
- S(RAN_CONN_E_CN_CLOSE) |
- S(RAN_CONN_E_UNUSED),
- .out_state_mask = S(RAN_CONN_S_RELEASING),
- .action = ran_conn_fsm_communicating,
- },
- [RAN_CONN_S_RELEASING] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_RELEASING),
- .in_event_mask = S(RAN_CONN_E_UNUSED),
- .out_state_mask = S(RAN_CONN_S_RELEASED),
- .onenter = ran_conn_fsm_releasing_onenter,
- .action = ran_conn_fsm_releasing,
- },
- [RAN_CONN_S_RELEASED] = {
- .name = OSMO_STRINGIFY(RAN_CONN_S_RELEASED),
- .onenter = ran_conn_fsm_released,
- },
-};
-
-static void ran_conn_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause);
-
-static struct osmo_fsm ran_conn_fsm = {
- .name = "RAN_conn",
- .states = ran_conn_fsm_states,
- .num_states = ARRAY_SIZE(ran_conn_fsm_states),
- .allstate_event_mask = 0,
- .allstate_action = NULL,
- .log_subsys = DMM,
- .event_names = ran_conn_fsm_event_names,
- .cleanup = ran_conn_fsm_cleanup,
- .timer_cb = ran_conn_fsm_timeout,
-};
-
/* Return statically allocated string of the ran_conn RAT type and id. */
-const char *ran_conn_get_conn_id(struct ran_conn *conn)
+const char *ran_conn_name(struct ran_conn *conn)
{
static char id[42];
int rc;
- uint32_t conn_id;
+ const char *ran_peer_name;
- switch (conn->via_ran) {
- case OSMO_RAT_GERAN_A:
- conn_id = conn->a.conn_id;
- break;
- case OSMO_RAT_UTRAN_IU:
- conn_id = iu_get_conn_id(conn->iu.ue_ctx);
- break;
- default:
- return "ran-unknown";
- }
+ if (!conn)
+ return "ran_conn==NULL";
+
+ if (!conn->ran_peer || !conn->ran_peer->sri || !conn->ran_peer->sri->ran)
+ ran_peer_name = "no-RAN-peer";
+ else
+ ran_peer_name = osmo_rat_type_name(conn->ran_peer->sri->ran->type);
- rc = snprintf(id, sizeof(id), "%s-%u", osmo_rat_type_name(conn->via_ran), conn_id);
+ rc = snprintf(id, sizeof(id), "%s-%u", ran_peer_name, conn->sccp_conn_id);
/* < 0 is error, == 0 is empty, >= size means truncation. Not really expecting this to catch on in any practical
* situation. */
- if (rc <= 0 || rc >= sizeof(id)) {
- LOGP(DMM, LOGL_ERROR, "Error with conn id; rc=%d\n", rc);
- return "conn-id-error";
- }
+ if (rc <= 0 || rc >= sizeof(id))
+ return "conn-name-error";
return id;
}
-/* Tidy up before the FSM deallocates */
-static void ran_conn_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+int ran_conn_down_l2_co(struct ran_conn *conn, struct msgb *l3, bool initial)
{
- struct ran_conn *conn = fi->priv;
-
- if (ran_conn_fsm_has_active_transactions(fi)) {
- LOGPFSML(fi, LOGL_ERROR, "Deallocating despite active transactions\n");
- trans_conn_closed(conn);
- }
-
- if (!conn) {
- LOGP(DRLL, LOGL_ERROR, "Freeing NULL RAN connection\n");
- return;
- }
-
- if (conn->vsub) {
- DEBUGP(DRLL, "%s: Freeing RAN connection\n", vlr_subscr_name(conn->vsub));
- conn->vsub->lu_fsm = NULL;
- conn->vsub->msc_conn_ref = NULL;
- vlr_subscr_put(conn->vsub, VSUB_USE_CONN);
- conn->vsub = NULL;
- } else
- DEBUGP(DRLL, "Freeing RAN connection with NULL subscriber\n");
-
- llist_del(&conn->entry);
-}
-
-/* Signal success of Complete Layer 3. Allow to keep the conn open for Auth and Ciph. */
-void ran_conn_complete_layer_3(struct ran_conn *conn)
-{
- if (!conn)
- return;
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_COMPLETE_LAYER_3, NULL);
-}
-
-void ran_conn_release_when_unused(struct ran_conn *conn)
-{
- if (!conn)
- return;
- if (ran_conn_in_release(conn)) {
- DEBUGP(DMM, "%s: %s: conn already in release (%s)\n",
- vlr_subscr_name(conn->vsub), __func__,
- osmo_fsm_inst_state_name(conn->fi));
- return;
- }
- if (conn->fi->state == RAN_CONN_S_NEW) {
- DEBUGP(DMM, "%s: %s: conn still being established (%s)\n",
- vlr_subscr_name(conn->vsub), __func__,
- osmo_fsm_inst_state_name(conn->fi));
- return;
- }
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_RELEASE_WHEN_UNUSED, NULL);
-}
-
-static void conn_close(struct ran_conn *conn, uint32_t cause, uint32_t event)
-{
- if (!conn) {
- LOGP(DMM, LOGL_ERROR, "Cannot release NULL connection\n");
- return;
- }
- if (ran_conn_in_release(conn)) {
- DEBUGP(DMM, "%s(vsub=%s, cause=%u): already in release, ignore.\n",
- __func__, vlr_subscr_name(conn->vsub), cause);
- return;
- }
- osmo_fsm_inst_dispatch(conn->fi, event, &cause);
-}
-
-void ran_conn_close(struct ran_conn *conn, uint32_t cause)
-{
- return conn_close(conn, cause, RAN_CONN_E_CN_CLOSE);
-}
-
-void ran_conn_mo_close(struct ran_conn *conn, uint32_t cause)
-{
- return conn_close(conn, cause, RAN_CONN_E_MO_CLOSE);
-}
-
-bool ran_conn_in_release(struct ran_conn *conn)
-{
- if (!conn || !conn->fi)
- return true;
- if (conn->fi->state == RAN_CONN_S_RELEASING)
- return true;
- if (conn->fi->state == RAN_CONN_S_RELEASED)
- return true;
- return false;
-}
-
-bool ran_conn_is_accepted(const struct ran_conn *conn)
-{
- if (!conn)
- return false;
- if (!conn->vsub)
- return false;
- if (!(conn->fi->state == RAN_CONN_S_ACCEPTED
- || conn->fi->state == RAN_CONN_S_COMMUNICATING))
- return false;
- return true;
-}
-
-/* Indicate that *some* communication is happening with the phone, so that the conn FSM no longer times
- * out to release within a few seconds. */
-void ran_conn_communicating(struct ran_conn *conn)
-{
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_COMMUNICATING, NULL);
-}
-
-void ran_conn_init(void)
-{
- osmo_fsm_register(&ran_conn_fsm);
-}
-
-/* Allocate a new RAN conn and FSM.
- * Deallocation is by ran_conn_put(): when the use count reaches zero, the
- * RAN_CONN_E_RELEASE_COMPLETE event is dispatched, the FSM terminates and deallocates both FSM and
- * conn. As long as the FSM is waiting for responses from the subscriber, it will itself hold a use count
- * on the conn. */
-struct ran_conn *ran_conn_alloc(struct gsm_network *network,
- enum osmo_rat_type via_ran, uint16_t lac)
-{
- struct ran_conn *conn;
- struct osmo_fsm_inst *fi;
-
- fi = osmo_fsm_inst_alloc(&ran_conn_fsm, network, NULL, LOGL_DEBUG, NULL);
- if (!fi) {
- LOGP(DMM, LOGL_ERROR, "Failed to allocate conn FSM\n");
- return NULL;
- }
-
- conn = talloc_zero(fi, struct ran_conn);
- if (!conn) {
- osmo_fsm_inst_free(fi);
- return NULL;
- }
-
- *conn = (struct ran_conn){
- .network = network,
- .via_ran = via_ran,
- .lac = lac,
- .fi = fi,
+ struct ran_peer_ev_ctx co = {
+ .conn_id = conn->sccp_conn_id,
+ .conn = conn,
+ .msg = l3,
};
-
- switch (via_ran) {
- case OSMO_RAT_GERAN_A:
- conn->log_subsys = DBSSAP;
- break;
- case OSMO_RAT_UTRAN_IU:
- conn->log_subsys = DRANAP;
- break;
- case OSMO_RAT_EUTRAN_SGS:
- conn->log_subsys = DSGS;
- break;
- default:
- conn->log_subsys = DMSC;
- break;
- }
-
- fi->priv = conn;
- llist_add_tail(&conn->entry, &network->ran_conns);
- return conn;
+ if (!conn->ran_peer)
+ return -EIO;
+ return osmo_fsm_inst_dispatch(conn->ran_peer->fi,
+ initial ? RAN_PEER_EV_MSG_DOWN_CO_INITIAL : RAN_PEER_EV_MSG_DOWN_CO,
+ &co);
}
-bool ran_conn_is_establishing_auth_ciph(const struct ran_conn *conn)
+void ran_conn_msc_role_gone(struct ran_conn *conn, struct osmo_fsm_inst *msc_role)
{
if (!conn)
- return false;
- return conn->fi->state == RAN_CONN_S_AUTH_CIPH;
-}
-
-
-const struct value_string complete_layer3_type_names[] = {
- { COMPLETE_LAYER3_NONE, "NONE" },
- { COMPLETE_LAYER3_LU, "LU" },
- { COMPLETE_LAYER3_CM_SERVICE_REQ, "CM_SERVICE_REQ" },
- { COMPLETE_LAYER3_PAGING_RESP, "PAGING_RESP" },
- { 0, NULL }
-};
-
-static void _ran_conn_update_id(struct ran_conn *conn, const char *subscr_identity)
-{
- struct vlr_subscr *vsub = conn->vsub;
-
- if (osmo_fsm_inst_update_id_f(conn->fi, "%s:%s:%s",
- subscr_identity,
- ran_conn_get_conn_id(conn),
- complete_layer3_type_name(conn->complete_layer3_type))
- != 0)
- return; /* osmo_fsm_inst_update_id_f() will log an error. */
-
- if (vsub) {
- if (vsub->lu_fsm)
- osmo_fsm_inst_update_id(vsub->lu_fsm, conn->fi->id);
- if (vsub->auth_fsm)
- osmo_fsm_inst_update_id(vsub->auth_fsm, conn->fi->id);
- if (vsub->proc_arq_fsm)
- osmo_fsm_inst_update_id(vsub->proc_arq_fsm, conn->fi->id);
- }
-
- LOGPFSML(conn->fi, LOGL_DEBUG, "Updated ID\n");
-}
-
-/* Compose an ID almost like gsm48_mi_to_string(), but print the MI type along, and print a TMSI as hex. */
-void ran_conn_update_id_from_mi(struct ran_conn *conn, const uint8_t *mi, uint8_t mi_len)
-{
- _ran_conn_update_id(conn, osmo_mi_name(mi, mi_len));
-}
-
-/* Update ran_conn->fi id string from current conn->vsub and conn->complete_layer3_type. */
-void ran_conn_update_id(struct ran_conn *conn)
-{
- _ran_conn_update_id(conn, vlr_subscr_name(conn->vsub));
-}
-
-/* Iterate all ran_conn instances that are relevant for this subscriber, and update FSM ID strings for all of the FSM
- * instances. */
-void ran_conn_update_id_for_vsub(struct vlr_subscr *for_vsub)
-{
- struct gsm_network *network;
- struct ran_conn *conn;
- if (!for_vsub)
return;
- network = for_vsub->vlr->user_ctx;
- OSMO_ASSERT(network);
+ if (conn->msc_role != msc_role)
+ return;
- llist_for_each_entry(conn, &network->ran_conns, entry) {
- if (conn->vsub == for_vsub)
- ran_conn_update_id(conn);
- }
+ conn->msc_role = NULL;
+ ran_conn_close(conn);
}
-static void rx_close_complete(struct ran_conn *conn, const char *label, bool *flag)
+/* Regularly close the conn */
+void ran_conn_close(struct ran_conn *conn)
{
if (!conn)
return;
- if (!ran_conn_in_release(conn)) {
- LOGPFSML(conn->fi, LOGL_ERROR, "Received unexpected %s, discarding right now\n",
- label);
- trans_conn_closed(conn);
- osmo_fsm_inst_term(conn->fi, OSMO_FSM_TERM_ERROR, NULL);
+ if (conn->closing)
return;
- }
- if (*flag) {
- *flag = false;
- ran_conn_put(conn, RAN_CONN_USE_RELEASE);
- }
-}
+ conn->closing = true;
+ LOG_RAN_PEER(conn->ran_peer, LOGL_DEBUG, "Closing %s\n", ran_conn_name(conn));
-void ran_conn_rx_bssmap_clear_complete(struct ran_conn *conn)
-{
- rx_close_complete(conn, "BSSMAP Clear Complete", &conn->a.waiting_for_clear_complete);
-}
-
-void ran_conn_rx_iu_release_complete(struct ran_conn *conn)
-{
- rx_close_complete(conn, "Iu Release Complete", &conn->iu.waiting_for_release_complete);
-}
-
-void ran_conn_sgs_release_sent(struct ran_conn *conn)
-{
- bool dummy_waiting_for_release_complete = true;
-
- /* Note: In SGsAP there is no confirmation of a release. */
- rx_close_complete(conn, "SGs Release Complete", &dummy_waiting_for_release_complete);
-}
-
-const struct value_string ran_conn_use_names[] = {
- { RAN_CONN_USE_UNTRACKED, "UNTRACKED" },
- { RAN_CONN_USE_COMPL_L3, "compl_l3" },
- { RAN_CONN_USE_DTAP, "dtap" },
- { RAN_CONN_USE_AUTH_CIPH, "auth+ciph" },
- { RAN_CONN_USE_CM_SERVICE, "cm_service" },
- { RAN_CONN_USE_TRANS_CC, "trans_cc" },
- { RAN_CONN_USE_TRANS_SMS, "trans_sms" },
- { RAN_CONN_USE_TRANS_NC_SS, "trans_nc_ss" },
- { RAN_CONN_USE_SILENT_CALL, "silent_call" },
- { RAN_CONN_USE_RELEASE, "release" },
- { 0, NULL }
-};
-
-static const char *used_ref_counts_str(struct ran_conn *conn)
-{
- static char buf[256];
- int bit_nr;
- char *pos = buf;
- *pos = '\0';
-
- if (conn->use_tokens < 0)
- return "invalid";
-
-#define APPEND_STR(fmt, args...) do { \
- int remain = sizeof(buf) - (pos - buf) - 1; \
- int l = -1; \
- if (remain > 0) \
- l = snprintf(pos, remain, "%s" fmt, (pos == buf? "" : ","), ##args); \
- if (l < 0 || l > remain) { \
- buf[sizeof(buf) - 1] = '\0'; \
- return buf; \
- } \
- pos += l; \
- } while(0)
-
- for (bit_nr = 0; (1 << bit_nr) <= conn->use_tokens; bit_nr++) {
- if (conn->use_tokens & (1 << bit_nr)) {
- APPEND_STR("%s", get_value_string(ran_conn_use_names, bit_nr));
- }
+ if (conn->msc_role) {
+ osmo_fsm_inst_dispatch(conn->msc_role, MSC_EV_FROM_RAN_CONN_RELEASED, NULL);
+ conn->msc_role = NULL;
}
- return buf;
-#undef APPEND_STR
-}
-
-/* increment the ref-count. Needs to be called by every user */
-struct ran_conn *_ran_conn_get(struct ran_conn *conn, enum ran_conn_use balance_token,
- const char *file, int line)
-{
- OSMO_ASSERT(conn);
- if (balance_token != RAN_CONN_USE_UNTRACKED) {
- uint32_t flag = 1 << balance_token;
- OSMO_ASSERT(balance_token < 32);
- if (conn->use_tokens & flag)
- LOGPSRC(DREF, LOGL_ERROR, file, line,
- "%s: MSC conn use error: using an already used token: %s\n",
- vlr_subscr_name(conn->vsub),
- ran_conn_use_name(balance_token));
- conn->use_tokens |= flag;
+ if (conn->ran_peer) {
+ /* Todo: pass a useful SCCP cause? */
+ sccp_ran_disconnect(conn->ran_peer->sri, conn->sccp_conn_id, 0);
+ conn->ran_peer = NULL;
}
- conn->use_count++;
- LOGPSRC(DREF, LOGL_DEBUG, file, line,
- "%s: MSC conn use + %s == %u (0x%x: %s)\n",
- vlr_subscr_name(conn->vsub), ran_conn_use_name(balance_token),
- conn->use_count, conn->use_tokens, used_ref_counts_str(conn));
-
- return conn;
+ LOG_RAN_PEER(conn->ran_peer, LOGL_DEBUG, "Deallocating %s\n", ran_conn_name(conn));
+ llist_del(&conn->entry);
+ talloc_free(conn);
}
-/* decrement the ref-count. Once it reaches zero, we release */
-void _ran_conn_put(struct ran_conn *conn, enum ran_conn_use balance_token,
- const char *file, int line)
+/* Same as ran_conn_close() but without sending any SCCP messages (e.g. after RESET) */
+void ran_conn_discard(struct ran_conn *conn)
{
- OSMO_ASSERT(conn);
-
- if (balance_token != RAN_CONN_USE_UNTRACKED) {
- uint32_t flag = 1 << balance_token;
- OSMO_ASSERT(balance_token < 32);
- if (!(conn->use_tokens & flag))
- LOGPSRC(DREF, LOGL_ERROR, file, line,
- "%s: MSC conn use error: freeing an unused token: %s\n",
- vlr_subscr_name(conn->vsub),
- ran_conn_use_name(balance_token));
- conn->use_tokens &= ~flag;
- }
-
- if (conn->use_count == 0) {
- LOGPSRC(DREF, LOGL_ERROR, file, line,
- "%s: MSC conn use - %s failed: is already 0\n",
- vlr_subscr_name(conn->vsub),
- ran_conn_use_name(balance_token));
+ if (!conn)
return;
- }
-
- conn->use_count--;
- LOGPSRC(DREF, LOGL_DEBUG, file, line,
- "%s: MSC conn use - %s == %u (0x%x: %s)\n",
- vlr_subscr_name(conn->vsub), ran_conn_use_name(balance_token),
- conn->use_count, conn->use_tokens, used_ref_counts_str(conn));
-
- if (conn->use_count == 0)
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_UNUSED, NULL);
-}
-
-bool ran_conn_used_by(struct ran_conn *conn, enum ran_conn_use token)
-{
- return conn && (conn->use_tokens & (1 << token));
+ /* Make sure to drop dead and don't dispatch things like DISCONNECT requests on SCCP. */
+ conn->ran_peer = NULL;
+ ran_conn_close(conn);
}
diff --git a/src/libmsc/ran_infra.c b/src/libmsc/ran_infra.c
new file mode 100644
index 000000000..a3a7457f8
--- /dev/null
+++ b/src/libmsc/ran_infra.c
@@ -0,0 +1,118 @@
+/* Lookup table for various RAN implementations */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/utils.h>
+#include <osmocom/core/tdef.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/ran_msg_a.h>
+#include <osmocom/msc/ran_msg_iu.h>
+#include <osmocom/msc/ran_peer.h>
+
+#include <osmocom/msc/ran_infra.h>
+
+#include "bscconfig.h"
+
+const struct value_string an_proto_names[] = {
+ { OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_48006, "Ts3G-48006" },
+ { OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_25413, "Ts3G-25413" },
+ {}
+};
+
+#define RAN_TDEFS \
+ { .T = -1, .default_val = 5, .desc = "RAN connection Complete Layer 3, Authentication and Ciphering timeout" }, \
+ { .T = -2, .default_val = 30, .desc = "RAN connection release sanity timeout" }, \
+ { .T = -3, .default_val = 10, .desc = "Timeout to find a target BSS after Handover Required" }, \
+
+struct osmo_tdef msc_tdefs_geran[] = {
+ RAN_TDEFS
+ {}
+};
+
+struct osmo_tdef msc_tdefs_utran[] = {
+ RAN_TDEFS
+ {}
+};
+
+struct osmo_tdef msc_tdefs_sgs[] = {
+ {}
+};
+
+static __attribute__((constructor)) void ran_infra_init()
+{
+ osmo_tdefs_reset(msc_tdefs_geran);
+ osmo_tdefs_reset(msc_tdefs_utran);
+ osmo_tdefs_reset(msc_tdefs_sgs);
+}
+
+struct ran_infra msc_ran_infra[] = {
+ [OSMO_RAT_UNKNOWN] = {
+ .type = OSMO_RAT_UNKNOWN,
+ .log_subsys = DMSC,
+ .tdefs = msc_tdefs_geran,
+ },
+ [OSMO_RAT_GERAN_A] = {
+ .type = OSMO_RAT_GERAN_A,
+ .an_proto = OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_48006,
+ .ssn = OSMO_SCCP_SSN_BSSAP,
+ .log_subsys = DBSSAP,
+ .tdefs = msc_tdefs_geran,
+ .sccp_ran_ops = {
+ .up_l2 = ran_peer_up_l2,
+ .disconnect = ran_peer_disconnect,
+ .is_reset_msg = bssmap_is_reset_msg,
+ .make_reset_msg = bssmap_make_reset_msg,
+ .make_paging_msg = bssmap_make_paging_msg,
+ .msg_name = bssmap_msg_name,
+ },
+ .ran_dec_l2 = ran_a_decode_l2,
+ .ran_encode = ran_a_encode,
+ },
+ [OSMO_RAT_UTRAN_IU] = {
+ .type = OSMO_RAT_UTRAN_IU,
+ .an_proto = OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_25413,
+ .ssn = OSMO_SCCP_SSN_RANAP,
+ .log_subsys = DIUCS,
+ .tdefs = msc_tdefs_utran,
+#if BUILD_IU
+ .sccp_ran_ops = {
+ .up_l2 = ran_peer_up_l2,
+ .disconnect = ran_peer_disconnect,
+ .is_reset_msg = ranap_is_reset_msg,
+ .make_reset_msg = ranap_make_reset_msg,
+ .make_paging_msg = ranap_make_paging_msg,
+ .msg_name = ranap_msg_name,
+ },
+ .ran_dec_l2 = ran_iu_decode_l2,
+ .ran_encode = ran_iu_encode,
+#endif
+ },
+ [OSMO_RAT_EUTRAN_SGS] = {
+ .type = OSMO_RAT_EUTRAN_SGS,
+ .log_subsys = DSGS,
+ .ran_encode = NULL,
+ .tdefs = msc_tdefs_sgs,
+ },
+};
+
+const int msc_ran_infra_len = ARRAY_SIZE(msc_ran_infra);
diff --git a/src/libmsc/ran_msg.c b/src/libmsc/ran_msg.c
new file mode 100644
index 000000000..46816a961
--- /dev/null
+++ b/src/libmsc/ran_msg.c
@@ -0,0 +1,160 @@
+/* Common bits for RAN message handling */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <osmocom/core/utils.h>
+
+#include <osmocom/msc/ran_msg.h>
+
+const struct value_string ran_msg_type_names[] = {
+ { RAN_MSG_NONE, "NONE" },
+ { RAN_MSG_COMPL_L3, "COMPL_L3" },
+ { RAN_MSG_DTAP, "DTAP" },
+ { RAN_MSG_CLEAR_COMMAND, "CLEAR_COMMAND" },
+ { RAN_MSG_CLEAR_REQUEST, "CLEAR_REQUEST" },
+ { RAN_MSG_CLEAR_COMPLETE, "CLEAR_COMPLETE" },
+ { RAN_MSG_CLASSMARK_REQUEST, "CLASSMARK_REQUEST" },
+ { RAN_MSG_CLASSMARK_UPDATE, "CLASSMARK_UPDATE" },
+ { RAN_MSG_CIPHER_MODE_COMMAND, "CIPHER_MODE_COMMAND" },
+ { RAN_MSG_CIPHER_MODE_COMPLETE, "CIPHER_MODE_COMPLETE" },
+ { RAN_MSG_CIPHER_MODE_REJECT, "CIPHER_MODE_REJECT" },
+ { RAN_MSG_COMMON_ID, "COMMON_ID" },
+ { RAN_MSG_ASSIGNMENT_COMMAND, "ASSIGNMENT_COMMAND" },
+ { RAN_MSG_ASSIGNMENT_COMPLETE, "ASSIGNMENT_COMPLETE" },
+ { RAN_MSG_ASSIGNMENT_FAILURE, "ASSIGNMENT_FAILURE" },
+ { RAN_MSG_SAPI_N_REJECT, "SAPI_N_REJECT" },
+ { RAN_MSG_LCLS_STATUS, "LCLS_STATUS" },
+ { RAN_MSG_LCLS_BREAK_REQ, "LCLS_BREAK_REQ" },
+ { RAN_MSG_HANDOVER_COMMAND, "HANDOVER_COMMAND" },
+ { RAN_MSG_HANDOVER_SUCCEEDED, "HANDOVER_SUCCEEDED" },
+ { RAN_MSG_HANDOVER_PERFORMED, "HANDOVER_PERFORMED" },
+ { RAN_MSG_HANDOVER_REQUIRED, "HANDOVER_REQUIRED" },
+ { RAN_MSG_HANDOVER_REQUIRED_REJECT, "HANDOVER_REQUIRED_REJECT" },
+ { RAN_MSG_HANDOVER_REQUEST, "HANDOVER_REQUEST" },
+ { RAN_MSG_HANDOVER_REQUEST_ACK, "HANDOVER_REQUEST_ACK" },
+ { RAN_MSG_HANDOVER_DETECT, "HANDOVER_DETECT" },
+ { RAN_MSG_HANDOVER_COMPLETE, "HANDOVER_COMPLETE" },
+ { RAN_MSG_HANDOVER_FAILURE, "HANDOVER_FAILURE" },
+ {}
+};
+
+/* extract the N(SD) and return the modulo value for a R99 message */
+static uint8_t ran_dec_dtap_undup_determine_nsd_ret_modulo_r99(uint8_t pdisc, uint8_t msg_type, uint8_t *n_sd)
+{
+ switch (pdisc) {
+ case GSM48_PDISC_MM:
+ case GSM48_PDISC_CC:
+ case GSM48_PDISC_NC_SS:
+ *n_sd = (msg_type >> 6) & 0x3;
+ return 4;
+ case GSM48_PDISC_GROUP_CC:
+ case GSM48_PDISC_BCAST_CC:
+ case GSM48_PDISC_LOC:
+ *n_sd = (msg_type >> 6) & 0x1;
+ return 2;
+ default:
+ /* no sequence number, we cannot detect dups */
+ return 0;
+ }
+}
+
+/* extract the N(SD) and return the modulo value for a R98 message */
+static uint8_t gsm0407_determine_nsd_ret_modulo_r98(uint8_t pdisc, uint8_t msg_type, uint8_t *n_sd)
+{
+ switch (pdisc) {
+ case GSM48_PDISC_MM:
+ case GSM48_PDISC_CC:
+ case GSM48_PDISC_NC_SS:
+ case GSM48_PDISC_GROUP_CC:
+ case GSM48_PDISC_BCAST_CC:
+ case GSM48_PDISC_LOC:
+ *n_sd = (msg_type >> 6) & 0x1;
+ return 2;
+ default:
+ /* no sequence number, we cannot detect dups */
+ return 0;
+ }
+}
+
+/* TS 24.007 11.2.3.2.3 Message Type Octet / Duplicate Detection.
+ * (Not static for unit testing). */
+int ran_dec_dtap_undup_pdisc_ctr_bin(uint8_t pdisc)
+{
+ switch (pdisc) {
+ case GSM48_PDISC_MM:
+ case GSM48_PDISC_CC:
+ case GSM48_PDISC_NC_SS:
+ return 0;
+ case GSM48_PDISC_GROUP_CC:
+ return 1;
+ case GSM48_PDISC_BCAST_CC:
+ return 2;
+ case GSM48_PDISC_LOC:
+ return 3;
+ default:
+ return -1;
+ }
+}
+
+/* TS 24.007 11.2.3.2 Message Type Octet / Duplicate Detection */
+bool ran_dec_dtap_undup_is_duplicate(struct osmo_fsm_inst *log_fi, uint8_t *n_sd_next, bool is_r99, struct msgb *l3)
+{
+ struct gsm48_hdr *gh;
+ uint8_t pdisc;
+ uint8_t n_sd, modulo;
+ int bin;
+
+ gh = msgb_l3(l3);
+ pdisc = gsm48_hdr_pdisc(gh);
+
+ if (is_r99) {
+ modulo = ran_dec_dtap_undup_determine_nsd_ret_modulo_r99(pdisc, gh->msg_type, &n_sd);
+ } else { /* pre R99 */
+ modulo = gsm0407_determine_nsd_ret_modulo_r98(pdisc, gh->msg_type, &n_sd);
+ }
+ if (modulo == 0)
+ return false;
+ bin = ran_dec_dtap_undup_pdisc_ctr_bin(pdisc);
+ if (bin < 0)
+ return false;
+
+ OSMO_ASSERT(bin >= 0 && bin < 4);
+ if (n_sd != n_sd_next[bin]) {
+ /* not what we expected: duplicate */
+ LOGPFSML(log_fi, LOGL_NOTICE, "Duplicate DTAP: bin=%d, expected n_sd == %u, got %u\n",
+ bin, n_sd_next[bin], n_sd);
+ return true;
+ } else {
+ /* as expected: no dup; update expected counter for next message */
+ n_sd_next[bin] = (n_sd + 1) % modulo;
+ return false;
+ }
+}
+
+/* convenience: RAN decode implementations can call this to dispatch the decode_cb with a decoded ran_msg. */
+int ran_decoded(struct ran_dec *ran_dec, struct ran_msg *ran_msg)
+{
+ if (!ran_dec->decode_cb)
+ return -1;
+ return ran_dec->decode_cb(ran_dec->caller_fi, ran_dec->caller_data, ran_msg);
+}
diff --git a/src/libmsc/ran_msg_a.c b/src/libmsc/ran_msg_a.c
new file mode 100644
index 000000000..2e498a28b
--- /dev/null
+++ b/src/libmsc/ran_msg_a.c
@@ -0,0 +1,1284 @@
+/* BSSAP/BSSMAP encoding and decoding for MSC */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <osmocom/core/byteswap.h>
+
+#include <osmocom/crypt/auth.h>
+
+#include <osmocom/gsm/tlv.h>
+#include <osmocom/gsm/gsm0808.h>
+#include <osmocom/gsm/mncc.h>
+#include <osmocom/gsm/gsm48.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/ran_msg_a.h>
+#include <osmocom/msc/sccp_ran.h>
+
+#define LOG_RAN_A_DEC(RAN_DEC, level, fmt, args...) \
+ LOG_RAN_DEC(RAN_DEC, DBSSAP, level, "BSSMAP: " fmt, ## args)
+
+/* Assumes presence of struct ran_dec *ran_dec and ran_dec_msg.msg_name (set) in the local scope. */
+#define LOG_RAN_A_DEC_MSG(level, fmt, args...) \
+ LOG_RAN_DEC(ran_dec, DBSSAP, level, "%s: " fmt, ran_dec_msg.msg_name, ## args)
+
+#define LOG_RAN_A_ENC(FI, level, fmt, args...) \
+ LOG_RAN_ENC(FI, DBSSAP, level, "BSSMAP: " fmt, ## args)
+
+static int ran_a_decode_l3_compl(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct gsm0808_cell_id_list2 cil;
+ struct gsm0808_cell_id cell_id;
+ struct tlv_p_entry *ie_cell_id = TLVP_GET(tp, GSM0808_IE_CELL_IDENTIFIER);
+ struct tlv_p_entry *ie_l3_info = TLVP_GET(tp, GSM0808_IE_LAYER_3_INFORMATION);
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_COMPL_L3,
+ .msg_name = "BSSMAP Complete Layer 3",
+ .compl_l3 = {
+ .cell_id = &cell_id,
+ .msg = msg,
+ },
+ };
+ int rc;
+
+ if (!ie_cell_id) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Mandatory CELL IDENTIFIER not present, discarding message\n");
+ return -EINVAL;
+ }
+ if (!ie_l3_info) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Mandatory LAYER 3 INFORMATION not present, discarding message\n");
+ return -EINVAL;
+ }
+
+ /* Parse Cell ID element -- this should yield a cell identifier "list" with 1 element. */
+
+ rc = gsm0808_dec_cell_id_list2(&cil, ie_cell_id->val, ie_cell_id->len);
+ if (rc < 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Decoding CELL IDENTIFIER gave rc=%d\n", rc);
+ return -EINVAL;
+ }
+ if (cil.id_list_len != 1) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Unable to parse element CELL IDENTIFIER, discarding message\n");
+ return -EINVAL;
+ }
+
+ /* Sanity check the Cell Identity */
+ switch (cil.id_discr) {
+ case CELL_IDENT_WHOLE_GLOBAL:
+ case CELL_IDENT_LAI_AND_LAC:
+ case CELL_IDENT_LAC_AND_CI:
+ case CELL_IDENT_LAC:
+ break;
+
+ case CELL_IDENT_CI:
+ case CELL_IDENT_NO_CELL:
+ case CELL_IDENT_BSS:
+ default:
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "CELL IDENTIFIER does not specify a LAC, discarding message: %s\n",
+ gsm0808_cell_id_list_name(&cil));
+ return -EINVAL;
+ }
+
+ cell_id = (struct gsm0808_cell_id){
+ .id_discr = cil.id_discr,
+ .id = cil.id_list[0],
+ };
+
+ /* Parse Layer 3 Information element */
+ msg->l3h = (uint8_t*)ie_l3_info->val;
+ msgb_l3trim(msg, ie_l3_info->len);
+
+ if (msgb_l3len(msg) < sizeof(struct gsm48_hdr)) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "too short L3 info (%d), discarding message\n", msgb_l3len(msg));
+ return -ENODATA;
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_clear_request(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct tlv_p_entry *ie_cause = TLVP_GET(tp, GSM0808_IE_CAUSE);
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CLEAR_REQUEST,
+ .msg_name = "BSSMAP Clear Request",
+ };
+
+ if (!ie_cause) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Cause code is missing, using GSM0808_CAUSE_EQUIPMENT_FAILURE\n");
+ ran_dec_msg.clear_request.bssap_cause = GSM0808_CAUSE_EQUIPMENT_FAILURE;
+ } else {
+ ran_dec_msg.clear_request.bssap_cause = ie_cause->val[0];
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_clear_complete(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CLEAR_COMPLETE,
+ .msg_name = "BSSMAP Clear Complete",
+ };
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_classmark_update(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct tlv_p_entry *ie_cm2 = TLVP_GET(tp, GSM0808_IE_CLASSMARK_INFORMATION_T2);
+ struct tlv_p_entry *ie_cm3 = TLVP_GET(tp, GSM0808_IE_CLASSMARK_INFORMATION_T3);
+ struct osmo_gsm48_classmark cm = {};
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CLASSMARK_UPDATE,
+ .msg_name = "BSSMAP Classmark Update",
+ .classmark_update = {
+ .classmark = &cm,
+ },
+ };
+
+ if (!ie_cm2) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "mandatory Classmark Information Type 2 not present, discarding message\n");
+ return -EINVAL;
+ }
+
+ cm.classmark2_len = OSMO_MIN(sizeof(cm.classmark2), ie_cm2->len);
+ memcpy(&cm.classmark2, ie_cm2->val, cm.classmark2_len);
+
+ if (ie_cm3) {
+ cm.classmark3_len = OSMO_MIN(sizeof(cm.classmark3), ie_cm3->len);
+ memcpy(&cm.classmark3, ie_cm3->val, cm.classmark3_len);
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_cipher_mode_complete(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct tlv_p_entry *ie_chosen_encr_alg = TLVP_GET(tp, GSM0808_IE_CHOSEN_ENCR_ALG);
+ struct tlv_p_entry *ie_l3_msg = TLVP_GET(tp, GSM0808_IE_LAYER_3_MESSAGE_CONTENTS);
+ int rc;
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CIPHER_MODE_COMPLETE,
+ .msg_name = "BSSMAP Ciphering Mode Complete",
+ };
+
+ if (ie_chosen_encr_alg) {
+ uint8_t ie_val = ie_chosen_encr_alg->val[0];
+ /* 3GPP TS 48.008 3.2.2.44 Chosen Encryption Algorithm encodes as 1 = no encryption, 2 = A5/1, 4 = A5/3.
+ * Internally we handle without this weird off-by-one. */
+ if (ie_val < 1 || ie_val > 8)
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Unsupported value for 3.2.2.44 Chosen Encryption Algorithm: %u\n",
+ ie_val);
+ else
+ ran_dec_msg.cipher_mode_complete.alg_id = ie_chosen_encr_alg->val[0];
+ }
+
+ rc = ran_decoded(ran_dec, &ran_dec_msg);
+
+ if (ie_l3_msg) {
+ msg->l3h = (uint8_t*)ie_l3_msg->val;
+ msgb_l3trim(msg, ie_l3_msg->len);
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_DTAP,
+ .msg_name = "BSSMAP Ciphering Mode Complete (L3 Message Contents)",
+ .dtap = msg,
+ };
+ ran_decoded(ran_dec, &ran_dec_msg);
+ }
+
+ return rc;
+}
+
+static int ran_a_decode_cipher_mode_reject(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ int rc;
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CIPHER_MODE_REJECT,
+ .msg_name = "BSSMAP Ciphering Mode Reject",
+ };
+
+ rc = gsm0808_get_cipher_reject_cause(tp);
+ if (rc < 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "failed to extract Cause\n");
+ ran_dec_msg.cipher_mode_reject.bssap_cause = GSM0808_CAUSE_EQUIPMENT_FAILURE;
+ } else {
+ ran_dec_msg.cipher_mode_reject.bssap_cause = (enum gsm0808_cause)rc;
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+enum mgcp_codecs ran_a_mgcp_codec_from_sc(const struct gsm0808_speech_codec *sc)
+{
+ switch (sc->type) {
+ case GSM0808_SCT_FR1:
+ return CODEC_GSM_8000_1;
+ break;
+ case GSM0808_SCT_FR2:
+ return CODEC_GSMEFR_8000_1;
+ break;
+ case GSM0808_SCT_FR3:
+ return CODEC_AMR_8000_1;
+ break;
+ case GSM0808_SCT_FR4:
+ return CODEC_AMRWB_16000_1;
+ break;
+ case GSM0808_SCT_FR5:
+ return CODEC_AMRWB_16000_1;
+ break;
+ case GSM0808_SCT_HR1:
+ return CODEC_GSMHR_8000_1;
+ break;
+ case GSM0808_SCT_HR3:
+ return CODEC_AMR_8000_1;
+ break;
+ case GSM0808_SCT_HR4:
+ return CODEC_AMRWB_16000_1;
+ break;
+ case GSM0808_SCT_HR6:
+ return CODEC_AMRWB_16000_1;
+ break;
+ default:
+ return CODEC_PCMU_8000_1;
+ break;
+ }
+}
+
+static int ran_a_decode_assignment_complete(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct tlv_p_entry *ie_aoip_transp_addr = TLVP_GET(tp, GSM0808_IE_AOIP_TRASP_ADDR);
+ struct tlv_p_entry *ie_speech_codec = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC);
+ struct sockaddr_storage rtp_addr;
+ struct sockaddr_in *rtp_addr_in;
+ struct gsm0808_speech_codec sc;
+ int rc;
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_ASSIGNMENT_COMPLETE,
+ .msg_name = "BSSMAP Assignment Complete",
+ };
+
+ if (ie_aoip_transp_addr) {
+ /* Decode AoIP transport address element */
+ rc = gsm0808_dec_aoip_trasp_addr(&rtp_addr, ie_aoip_transp_addr->val, ie_aoip_transp_addr->len);
+ if (rc < 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Unable to decode AoIP Transport Layer Address\n");
+ return -EINVAL;
+ }
+
+ rtp_addr_in = (struct sockaddr_in*)&rtp_addr;
+
+ if (rtp_addr.ss_family != AF_INET) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Assignment Complete: IE AoIP Transport Address:"
+ " unsupported addressing scheme (only IPV4 supported)\n");
+ return -EINVAL;
+ }
+
+ if (osmo_sockaddr_str_from_sockaddr_in(&ran_dec_msg.assignment_complete.remote_rtp, rtp_addr_in)) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Assignment Complete: unable to decode remote RTP IP address\n");
+ return -EINVAL;
+ }
+ }
+
+ if (ie_speech_codec) {
+ /* Decode Speech Codec (Chosen) element */
+ rc = gsm0808_dec_speech_codec(&sc, ie_speech_codec->val, ie_speech_codec->len);
+ if (rc < 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Assignment Complete: unable to decode IE Speech Codec (Chosen)"
+ " (rc=%d).\n", rc);
+ return -EINVAL;
+ }
+ ran_dec_msg.assignment_complete.codec_present = true;
+ ran_dec_msg.assignment_complete.codec = ran_a_mgcp_codec_from_sc(&sc);
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_assignment_failure(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct tlv_p_entry *ie_cause = TLVP_GET(tp, GSM0808_IE_CAUSE);
+ struct tlv_p_entry *ie_rr_cause = TLVP_GET(tp, GSM0808_IE_RR_CAUSE);
+ struct tlv_p_entry *ie_speech_codec_list = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC_LIST);
+ struct gsm0808_speech_codec_list scl;
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_ASSIGNMENT_FAILURE,
+ .msg_name = "BSSMAP Assignment Failure",
+ .assignment_failure = {
+ .bssap_cause = GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ .rr_cause = GSM48_RR_CAUSE_ABNORMAL_UNSPEC,
+ },
+ };
+
+ if (ie_cause)
+ ran_dec_msg.assignment_failure.bssap_cause = ie_cause->val[0];
+ if (ie_rr_cause)
+ ran_dec_msg.assignment_failure.rr_cause = ie_rr_cause->val[0];
+
+ if (ie_speech_codec_list
+ && gsm0808_dec_speech_codec_list(&scl, ie_speech_codec_list->val, ie_speech_codec_list->len) == 0)
+ ran_dec_msg.assignment_failure.scl_bss_supported = &scl;
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_sapi_n_reject(struct ran_dec *ran_dec, struct msgb *msg, struct tlv_parsed *tp)
+{
+ struct tlv_p_entry *ie_cause = TLVP_GET(tp, GSM0808_IE_CAUSE);
+ struct tlv_p_entry *ie_dlci = TLVP_GET(tp, GSM0808_IE_DLCI);
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_SAPI_N_REJECT,
+ .msg_name = "BSSMAP SAPI-N Reject",
+ };
+
+ /* Note: The MSC code seems not to care about the cause code, but by
+ * the specification it is mandatory, so we check its presence. See
+ * also 3GPP TS 48.008 3.2.1.34 SAPI "n" REJECT */
+ if (!ie_cause) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "SAPI-N Reject: cause code IE is missing, discarding message\n");
+ return -EINVAL;
+ }
+ ran_dec_msg.sapi_n_reject.bssap_cause = ie_cause->val[0];
+
+ if (!ie_dlci) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "SAPI-N Reject: DLCI IE is missing, discarding message\n");
+ return -EINVAL;
+ }
+ ran_dec_msg.sapi_n_reject.dlci = ie_dlci->val[0];
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_lcls_notification(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ const struct tlv_p_entry *ie_lcls_bss_status = TLVP_GET(tp, GSM0808_IE_LCLS_BSS_STATUS);
+ const struct tlv_p_entry *ie_lcls_break_req = TLVP_GET(tp, GSM0808_IE_LCLS_BREAK_REQ);
+ struct ran_msg ran_dec_msg;
+
+ /* Either §3.2.2.119 LCLS-BSS-Status or §3.2.2.120 LCLS-Break-Request shall be present */
+ if ((!ie_lcls_bss_status && !ie_lcls_break_req)
+ || (ie_lcls_bss_status && ie_lcls_break_req)) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "Ignoring broken LCLS Notification message\n");
+ return -EINVAL;
+ }
+
+ if (ie_lcls_bss_status) {
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_LCLS_STATUS,
+ .msg_name = "BSSMAP LCLS Notification (LCLS Status)",
+ .lcls_status = {
+ .status = ie_lcls_bss_status->len ?
+ ie_lcls_bss_status->val[0] : GSM0808_LCLS_STS_NA,
+ },
+ };
+ return ran_decoded(ran_dec, &ran_dec_msg);
+ }
+
+ if (ie_lcls_break_req) {
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_LCLS_BREAK_REQ,
+ .msg_name = "BSSMAP LCLS Notification (LCLS Break Req)",
+ .lcls_break_req = {
+ .todo = 23,
+ },
+ };
+ return ran_decoded(ran_dec, &ran_dec_msg);
+ }
+
+ return -EINVAL;
+}
+
+static int ran_a_decode_handover_required(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ const struct tlv_p_entry *ie_cause = TLVP_GET(tp, GSM0808_IE_CAUSE);
+ const struct tlv_p_entry *ie_cil = TLVP_GET(tp, GSM0808_IE_CELL_IDENTIFIER_LIST);
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_REQUIRED,
+ .msg_name = "BSSMAP Handover Required",
+ };
+ /* On decoding failures, dispatch an invalid RAN_MSG_HANDOVER_REQUIRED so msc_a can pass down a
+ * BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT message. */
+
+ if (ie_cause)
+ ran_dec_msg.handover_required.cause = ie_cause->val[0];
+ else
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Cause IE missing\n");
+
+ if (!ie_cil
+ || gsm0808_dec_cell_id_list2(&ran_dec_msg.handover_required.cil, ie_cil->val, ie_cil->len) <= 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "No or invalid Cell Identifier List IE\n");
+ ran_dec_msg.handover_required.cil = (struct gsm0808_cell_id_list2){};
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static uint8_t a5_encryption_mask_from_gsm0808_chosen_enc_alg(enum gsm0808_chosen_enc_alg val)
+{
+ return 1 << val;
+}
+
+static int ran_a_decode_handover_request(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ struct osmo_gsm48_classmark classmark = {};
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_REQUEST,
+ .msg_name = "BSSMAP Handover Request",
+ .handover_request = {
+ .classmark = &classmark,
+ },
+ };
+ struct ran_handover_request *r = &ran_dec_msg.handover_request;
+
+ const struct tlv_p_entry *ie_channel_type = TLVP_GET(tp, GSM0808_IE_CHANNEL_TYPE);
+ const struct tlv_p_entry *ie_encryption_information = TLVP_GET(tp, GSM0808_IE_ENCRYPTION_INFORMATION);
+ const struct tlv_p_entry *ie_classmark1 = TLVP_GET(tp, GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1);
+ const struct tlv_p_entry *ie_classmark2 = TLVP_GET(tp, GSM0808_IE_CLASSMARK_INFORMATION_T2);
+ const struct tlv_p_entry *ie_cell_id_serving = TLVP_GET(&tp[0], GSM0808_IE_CELL_IDENTIFIER);
+ const struct tlv_p_entry *ie_cell_id_target = TLVP_GET(&tp[1], GSM0808_IE_CELL_IDENTIFIER);
+ const struct tlv_p_entry *ie_cause = TLVP_GET(tp, GSM0808_IE_CAUSE);
+ const struct tlv_p_entry *ie_classmark3 = TLVP_GET(tp, GSM0808_IE_CLASSMARK_INFORMATION_T3);
+ const struct tlv_p_entry *ie_current_channel_type_1 = TLVP_GET(tp, GSM0808_IE_CURRENT_CHANNEL_TYPE_1);
+ const struct tlv_p_entry *ie_speech_version_used = TLVP_GET(tp, GSM0808_IE_SPEECH_VERSION);
+ const struct tlv_p_entry *ie_chosen_encr_alg_serving = TLVP_GET(tp, GSM0808_IE_CHOSEN_ENCR_ALG);
+ const struct tlv_p_entry *ie_old_bss_to_new_bss_info = TLVP_GET(tp, GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION);
+ const struct tlv_p_entry *ie_imsi = TLVP_GET(tp, GSM0808_IE_IMSI);
+ const struct tlv_p_entry *ie_aoip_transp_addr = TLVP_GET(tp, GSM0808_IE_AOIP_TRASP_ADDR);
+ const struct tlv_p_entry *ie_codec_list_msc_preferred = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC_LIST);
+ const struct tlv_p_entry *ie_call_id = TLVP_GET(tp, GSM0808_IE_CALL_ID);
+ const struct tlv_p_entry *ie_global_call_ref = TLVP_GET(tp, GSM0808_IE_GLOBAL_CALL_REF);
+
+ struct gsm0808_channel_type channel_type;
+ struct gsm0808_encrypt_info encr_info;
+ struct gsm0808_speech_codec_list scl;
+ struct geran_encr geran_encr = {};
+ char imsi[OSMO_IMSI_BUF_SIZE];
+ struct osmo_sockaddr_str rtp_ran_local;
+
+ if (!ie_channel_type) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Mandatory IE missing: Channel Type\n");
+ return -EINVAL;
+ }
+ if (gsm0808_dec_channel_type(&channel_type, ie_channel_type->val, ie_channel_type->len) <= 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Failed to decode Channel Type IE\n");
+ return -EINVAL;
+ }
+ r->geran.channel_type = &channel_type;
+
+ if (ie_encryption_information) {
+ int i;
+ if (gsm0808_dec_encrypt_info(&encr_info, ie_encryption_information->val, ie_encryption_information->len)
+ <= 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Failed to decode Encryption Informaiton IE\n");
+ return -EINVAL;
+ }
+
+ for (i = 0; i < encr_info.perm_algo_len; i++) {
+ r->geran.a5_encryption_mask |=
+ a5_encryption_mask_from_gsm0808_chosen_enc_alg(encr_info.perm_algo[i]);
+ }
+
+ if (encr_info.key_len > sizeof(geran_encr.key)) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Failed to decode Encryption Informaiton IE:"
+ " encryption key is too long: %u\n", geran_encr.key_len);
+ return -EINVAL;
+ }
+
+ if (encr_info.key_len) {
+ memcpy(geran_encr.key, encr_info.key, encr_info.key_len);
+ geran_encr.key_len = encr_info.key_len;
+ }
+
+ r->geran.chosen_encryption = &geran_encr;
+ }
+
+ if (!ie_classmark1 && !ie_classmark2) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Mandatory IE missing: either Classmark Information 1"
+ " or Classmark Information 2 must be included\n");
+ return -EINVAL;
+ }
+
+ if (ie_classmark1) {
+ if (ie_classmark1->len != sizeof(classmark.classmark1)) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Invalid size for Classmark 1: %u, expected %zu\n",
+ ie_classmark1->len, sizeof(classmark.classmark1));
+ return -EINVAL;
+ }
+ memcpy((uint8_t*)&classmark.classmark1, ie_classmark1->val, ie_classmark1->len);
+ classmark.classmark1_set = true;
+ }
+
+ if (ie_classmark2) {
+ uint8_t len = OSMO_MIN(ie_classmark2->len, sizeof(classmark.classmark2));
+ memcpy((uint8_t*)&classmark.classmark2, ie_classmark2->val, len);
+ classmark.classmark2_len = len;
+ }
+
+ if (!ie_cell_id_serving) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Mandatory IE missing: Cell Identifier (Serving)\n");
+ return -EINVAL;
+ }
+ if (gsm0808_dec_cell_id(&r->cell_id_serving, ie_cell_id_serving->val,
+ ie_cell_id_serving->len) <= 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Failed to decode Cell Identifier (Serving) IE\n");
+ return -EINVAL;
+ }
+
+ if (!ie_cell_id_target) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Mandatory IE missing: Cell Identifier (Target)\n");
+ return -EINVAL;
+ }
+ if (gsm0808_dec_cell_id(&r->cell_id_target, ie_cell_id_target->val,
+ ie_cell_id_target->len) <= 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "Failed to decode Cell Identifier (Target) IE\n");
+ return -EINVAL;
+ }
+
+ if (ie_cause)
+ r->bssap_cause = ie_cause->val[0];
+
+ if (ie_classmark3) {
+ uint8_t len = OSMO_MIN(ie_classmark3->len, sizeof(classmark.classmark3));
+ memcpy(classmark.classmark3, ie_classmark3->val, len);
+ classmark.classmark3_len = len;
+ }
+
+ if (ie_current_channel_type_1) {
+ r->current_channel_type_1 = ie_current_channel_type_1->val[0];
+ r->current_channel_type_1_present = true;
+ }
+
+ if (ie_speech_version_used) {
+ r->speech_version_used = ie_speech_version_used->val[0];
+ }
+
+ if (ie_chosen_encr_alg_serving && ie_chosen_encr_alg_serving->len) {
+ geran_encr.alg_id = ie_chosen_encr_alg_serving->val[0];
+ r->geran.chosen_encryption = &geran_encr;
+ }
+
+ if (ie_old_bss_to_new_bss_info) {
+ r->old_bss_to_new_bss_info_raw = ie_old_bss_to_new_bss_info->val;
+ r->old_bss_to_new_bss_info_raw_len = ie_old_bss_to_new_bss_info->len;
+ }
+
+ if (ie_imsi) {
+ gsm48_mi_to_string(imsi, sizeof(imsi), ie_imsi->val, ie_imsi->len);
+ r->imsi = imsi;
+ }
+
+ if (ie_aoip_transp_addr) {
+ do {
+ struct sockaddr_storage rtp_addr;
+ if (gsm0808_dec_aoip_trasp_addr(&rtp_addr, ie_aoip_transp_addr->val, ie_aoip_transp_addr->len) < 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "unable to decode AoIP transport address\n");
+ break;
+ }
+ if (rtp_addr.ss_family != AF_INET) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "IE AoIP Transport Address:"
+ " unsupported addressing scheme (only IPV4 supported)\n");
+ break;
+ }
+ if (osmo_sockaddr_str_from_sockaddr_in(&rtp_ran_local, (struct sockaddr_in*)&rtp_addr)) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "unable to decode remote RTP IP address\n");
+ break;
+ }
+ r->rtp_ran_local = &rtp_ran_local;
+ } while(0);
+ }
+
+ if (ie_codec_list_msc_preferred
+ && gsm0808_dec_speech_codec_list(&scl, ie_codec_list_msc_preferred->val,
+ ie_codec_list_msc_preferred->len) == 0)
+ r->codec_list_msc_preferred = &scl;
+
+ if (ie_call_id && ie_call_id->len == 4) {
+ r->call_id = osmo_load32le(ie_call_id->val);
+ r->call_id_present = true;
+ }
+
+ if (ie_global_call_ref) {
+ r->global_call_reference = ie_global_call_ref->val;
+ r->global_call_reference_len = ie_global_call_ref->len;
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_handover_request_ack(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_REQUEST_ACK,
+ .msg_name = "BSSMAP Handover Request Acknowledge",
+ };
+ const struct tlv_p_entry *ie_l3_info = TLVP_GET(tp, GSM0808_IE_LAYER_3_INFORMATION);
+ const struct tlv_p_entry *ie_aoip_transp_addr = TLVP_GET(tp, GSM0808_IE_AOIP_TRASP_ADDR);
+ const struct tlv_p_entry *ie_speech_codec = TLVP_GET(tp, GSM0808_IE_SPEECH_CODEC);
+ const struct tlv_p_entry *ie_chosen_channel = TLVP_GET(tp, GSM0808_IE_CHOSEN_CHANNEL);
+ const struct tlv_p_entry *ie_chosen_encr_alg = TLVP_GET(tp, GSM0808_IE_CHOSEN_ENCR_ALG);
+ const struct tlv_p_entry *ie_chosen_speech_version = TLVP_GET(tp, GSM0808_IE_SPEECH_VERSION);
+
+ /* On missing mandatory IEs, dispatch an invalid RAN_MSG_HANDOVER_REQUEST_ACK so msc_a can act on the failure. */
+
+ if (ie_l3_info) {
+ ran_dec_msg.handover_request_ack.rr_ho_command = ie_l3_info->val;
+ ran_dec_msg.handover_request_ack.rr_ho_command_len = ie_l3_info->len;
+ }
+
+ if (ie_chosen_channel) {
+ ran_dec_msg.handover_request_ack.chosen_channel_present = true;
+ ran_dec_msg.handover_request_ack.chosen_channel = *ie_chosen_channel->val;
+ }
+
+ if (ie_chosen_encr_alg) {
+ ran_dec_msg.handover_request_ack.chosen_encr_alg = *ie_chosen_encr_alg->val;
+ if (ran_dec_msg.handover_request_ack.chosen_encr_alg < 1
+ || ran_dec_msg.handover_request_ack.chosen_encr_alg > 8) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "invalid Chosen Encryption Algorithm: %u\n",
+ ran_dec_msg.handover_request_ack.chosen_encr_alg);
+ }
+ }
+
+ if (ie_chosen_speech_version) {
+ struct gsm0808_speech_codec sc;
+ ran_dec_msg.handover_request_ack.chosen_speech_version = ie_chosen_speech_version->val[0];
+
+ /* the codec may be extrapolated from this Speech Version or below from Speech Codec */
+ gsm0808_speech_codec_from_chan_type(&sc, ran_dec_msg.handover_request_ack.chosen_speech_version);
+ ran_dec_msg.handover_request_ack.codec_present = true;
+ ran_dec_msg.handover_request_ack.codec = ran_a_mgcp_codec_from_sc(&sc);
+ }
+
+ if (ie_aoip_transp_addr) {
+ do {
+ struct sockaddr_storage rtp_addr;
+ if (gsm0808_dec_aoip_trasp_addr(&rtp_addr, ie_aoip_transp_addr->val, ie_aoip_transp_addr->len) < 0) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "unable to decode AoIP transport address\n");
+ break;
+ }
+ if (rtp_addr.ss_family != AF_INET) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "IE AoIP Transport Address:"
+ " unsupported addressing scheme (only IPV4 supported)\n");
+ break;
+ }
+ if (osmo_sockaddr_str_from_sockaddr_in(&ran_dec_msg.handover_request_ack.remote_rtp,
+ (struct sockaddr_in*)&rtp_addr)) {
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "unable to decode remote RTP IP address\n");
+ ran_dec_msg.handover_request_ack.remote_rtp = (struct osmo_sockaddr_str){};
+ break;
+ }
+ } while(0);
+ }
+
+ if (ie_speech_codec) {
+ struct gsm0808_speech_codec sc;
+ if (gsm0808_dec_speech_codec(&sc, ie_speech_codec->val, ie_speech_codec->len) < 0)
+ LOG_RAN_A_DEC_MSG(LOGL_ERROR, "unable to decode IE Speech Codec (Chosen)\n");
+ else {
+ /* the codec may be extrapolated from above Speech Version or from this Speech Codec */
+ ran_dec_msg.handover_request_ack.codec_present = true;
+ ran_dec_msg.handover_request_ack.codec = ran_a_mgcp_codec_from_sc(&sc);
+ }
+ }
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_handover_detect(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_DETECT,
+ .msg_name = "BSSMAP Handover Detect",
+ };
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_handover_succeeded(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_SUCCEEDED,
+ .msg_name = "BSSMAP Handover Succeeded",
+ };
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_handover_complete(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_COMPLETE,
+ .msg_name = "BSSMAP Handover Complete",
+ };
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_handover_failure(struct ran_dec *ran_dec, const struct msgb *msg, const struct tlv_parsed *tp)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_HANDOVER_FAILURE,
+ .msg_name = "BSSMAP Handover Failure",
+ };
+
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+static int ran_a_decode_bssmap(struct ran_dec *ran_dec, struct msgb *bssmap)
+{
+ struct tlv_parsed tp[2];
+ int rc;
+ struct bssmap_header *h = msgb_l2(bssmap);
+ uint8_t msg_type;
+ bssmap->l3h = bssmap->l2h + sizeof(*h);
+
+ if (msgb_l3len(bssmap) < 1) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "No data received, discarding message\n");
+ return -1;
+ }
+
+ if (msgb_l3len(bssmap) < h->length) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "BSSMAP data truncated, discarding message\n");
+ return -1;
+ }
+
+ if (msgb_l3len(bssmap) > h->length) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_NOTICE, "There are %u extra bytes after the BSSMAP data, truncating\n",
+ msgb_l3len(bssmap) - h->length);
+ msgb_l3trim(bssmap, h->length);
+ }
+
+ /* h->type == BSSAP_MSG_BSS_MANAGEMENT; h->length is the data length,
+ * which starts with the MAP msg_type, followed by IEs. */
+ msg_type = bssmap->l3h[0];
+ rc = osmo_bssap_tlv_parse2(tp, ARRAY_SIZE(tp), bssmap->l3h + 1, h->length - 1);
+ if (rc < 0) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "Failed parsing TLV, discarding message\n");
+ return -EINVAL;
+ }
+
+ LOG_RAN_A_DEC(ran_dec, LOGL_DEBUG, "Rx BSSMAP DT1 %s\n", gsm0808_bssmap_name(msg_type));
+
+ switch (msg_type) {
+ case BSS_MAP_MSG_COMPLETE_LAYER_3:
+ return ran_a_decode_l3_compl(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_CLEAR_RQST:
+ return ran_a_decode_clear_request(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_CLEAR_COMPLETE:
+ return ran_a_decode_clear_complete(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_CLASSMARK_UPDATE:
+ return ran_a_decode_classmark_update(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_CIPHER_MODE_COMPLETE:
+ return ran_a_decode_cipher_mode_complete(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_CIPHER_MODE_REJECT:
+ return ran_a_decode_cipher_mode_reject(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_ASSIGMENT_COMPLETE:
+ rc = ran_a_decode_assignment_complete(ran_dec, bssmap, tp);
+ if (rc < 0) {
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_ASSIGNMENT_FAILURE,
+ .msg_name = "BSSMAP Assignment Complete but failed to decode",
+ .clear_request = {
+ .bssap_cause = GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ },
+ };
+ ran_decoded(ran_dec, &ran_dec_msg);
+ }
+ return rc;
+ case BSS_MAP_MSG_ASSIGMENT_FAILURE:
+ return ran_a_decode_assignment_failure(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_SAPI_N_REJECT:
+ return ran_a_decode_sapi_n_reject(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_LCLS_NOTIFICATION:
+ return ran_a_decode_lcls_notification(ran_dec, bssmap, tp);
+
+ /* From current RAN peer, the Handover origin: */
+ case BSS_MAP_MSG_HANDOVER_REQUIRED:
+ return ran_a_decode_handover_required(ran_dec, bssmap, tp);
+
+ /* From current MSC to remote handover target MSC */
+ case BSS_MAP_MSG_HANDOVER_RQST:
+ return ran_a_decode_handover_request(ran_dec, bssmap, tp);
+
+ /* From potential new RAN peer, the Handover target: */
+ case BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE:
+ return ran_a_decode_handover_request_ack(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_HANDOVER_DETECT:
+ return ran_a_decode_handover_detect(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_HANDOVER_SUCCEEDED:
+ return ran_a_decode_handover_succeeded(ran_dec, bssmap, tp);
+ case BSS_MAP_MSG_HANDOVER_COMPLETE:
+ return ran_a_decode_handover_complete(ran_dec, bssmap, tp);
+
+ /* From any Handover peer: */
+ case BSS_MAP_MSG_HANDOVER_FAILURE:
+ return ran_a_decode_handover_failure(ran_dec, bssmap, tp);
+
+ default:
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "Unimplemented msg type: %s\n", gsm0808_bssmap_name(msg_type));
+ return -EINVAL;
+ }
+
+ return -EINVAL;
+}
+
+static int ran_a_decode_l3(struct ran_dec *ran_dec, struct msgb *l3)
+{
+ struct dtap_header *dtap = msgb_l2(l3);
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_DTAP,
+ .msg_name = "BSSAP DTAP",
+ .dtap = l3,
+ };
+ l3->l3h = l3->l2h + sizeof(struct dtap_header);
+ OMSC_LINKID_CB(l3) = dtap->link_id;
+ return ran_decoded(ran_dec, &ran_dec_msg);
+}
+
+int ran_a_decode_l2(struct ran_dec *ran_dec, struct msgb *bssap)
+{
+ uint8_t bssap_type;
+ OSMO_ASSERT(bssap);
+
+ if (!msgb_l2(bssap) || !msgb_l2len(bssap)) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "Cannot decode L2, msg->l2h is unset / empty: %s\n",
+ msgb_hexdump(bssap));
+ return -EINVAL;
+ }
+
+ if (msgb_l2len(bssap) < sizeof(struct bssmap_header)) {
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "The header is too short -- discarding message\n");
+ return -EINVAL;
+ }
+
+ bssap_type = bssap->l2h[0];
+ switch (bssap_type) {
+ case BSSAP_MSG_BSS_MANAGEMENT:
+ return ran_a_decode_bssmap(ran_dec, bssap);
+ case BSSAP_MSG_DTAP:
+ return ran_a_decode_l3(ran_dec, bssap);
+ default:
+ LOG_RAN_A_DEC(ran_dec, LOGL_ERROR, "Unimplemented BSSAP msg type: %s\n", gsm0808_bssap_name(bssap_type));
+ return -EINVAL;
+ }
+}
+
+static struct msgb *ran_a_wrap_dtap(struct msgb *dtap)
+{
+ struct msgb *an_apdu;
+ dtap->l3h = dtap->data;
+ an_apdu = gsm0808_create_dtap(dtap, OMSC_LINKID_CB(dtap));
+ an_apdu->l2h = an_apdu->data;
+ msgb_free(dtap);
+ return an_apdu;
+}
+
+static int ran_a_channel_type_to_speech_codec_list(struct gsm0808_speech_codec_list *scl, const struct gsm0808_channel_type *ct)
+{
+ unsigned int i;
+ int rc;
+
+ memset(scl, 0, sizeof(*scl));
+ for (i = 0; i < ct->perm_spch_len; i++) {
+ rc = gsm0808_speech_codec_from_chan_type(&scl->codec[i], ct->perm_spch[i]);
+ if (rc != 0)
+ return -EINVAL;
+ }
+ scl->len = i;
+
+ return 0;
+}
+
+/* Compose a BSSAP Assignment Command.
+ * Passing an RTP address is optional.
+ * The msub is passed merely for error logging. */
+static struct msgb *ran_a_make_assignment_command(struct osmo_fsm_inst *log_fi,
+ const struct ran_assignment_command *ac)
+{
+ struct gsm0808_speech_codec_list scl;
+ struct gsm0808_speech_codec_list *use_scl = NULL;
+ struct sockaddr_storage rtp_addr;
+ struct sockaddr_storage *use_rtp_addr = NULL;
+ int rc;
+
+ if (!ac->channel_type) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Assignment Command: missing Channel Type\n");
+ return NULL;
+ }
+
+ if (ac->channel_type->ch_indctr == GSM0808_CHAN_SPEECH) {
+ rc = ran_a_channel_type_to_speech_codec_list(&scl, ac->channel_type);
+ if (rc < 0) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Assignment Command: Cannot translate Channel Type to Speech Codec List\n");
+ return NULL;
+ }
+ use_scl = &scl;
+
+ /* Package RTP-Address data */
+ if (osmo_sockaddr_str_is_set(ac->cn_rtp)) {
+ struct sockaddr_in rtp_addr_in;
+
+ memset(&rtp_addr_in, 0, sizeof(rtp_addr_in));
+ rtp_addr_in.sin_family = AF_INET;
+ rtp_addr_in.sin_port = osmo_htons(ac->cn_rtp->port),
+ rtp_addr_in.sin_addr.s_addr = inet_addr(ac->cn_rtp->ip);
+
+ if (rtp_addr_in.sin_addr.s_addr == INADDR_NONE) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Assignment Command: Invalid RTP-Address\n");
+ return NULL;
+ }
+ if (rtp_addr_in.sin_port == 0) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Assignment Command: Invalid RTP-Port\n");
+ return NULL;
+ }
+
+ memset(&rtp_addr, 0, sizeof(rtp_addr));
+ memcpy(&rtp_addr, &rtp_addr_in, sizeof(rtp_addr_in));
+
+ use_rtp_addr = &rtp_addr;
+ }
+ }
+
+ return gsm0808_create_ass(ac->channel_type, NULL, use_rtp_addr, use_scl, NULL);
+}
+
+/* For an A5/N number a5_n set dst to the matching GSM0808_ALG_ID_A5_<n>. */
+static int a5_n_to_gsm0808_chosen_enc_alg(uint8_t *dst, int a5_n)
+{
+ switch (a5_n) {
+ case 0:
+ *dst = GSM0808_ALG_ID_A5_0;
+ return 0;
+ case 1:
+ *dst = GSM0808_ALG_ID_A5_1;
+ return 0;
+ case 2:
+ *dst = GSM0808_ALG_ID_A5_2;
+ return 0;
+ case 3:
+ *dst = GSM0808_ALG_ID_A5_3;
+ return 0;
+ default:
+ return -ENOTSUP;
+ }
+}
+
+static int make_encrypt_info_perm_algo(struct osmo_fsm_inst *fi, struct gsm0808_encrypt_info *ei,
+ uint8_t a5_encryption_mask, const struct osmo_gsm48_classmark *cm)
+{
+ int i;
+ int j = 0;
+ for (i = 0; i < 8; i++) {
+ int supported;
+
+ /* A5/n permitted by osmo-msc.cfg? */
+ if (!(a5_encryption_mask & (1 << i)))
+ continue;
+
+ /* A5/n supported by MS? */
+ supported = osmo_gsm48_classmark_supports_a5(cm, i);
+ if (supported != 1)
+ continue;
+
+ if (a5_n_to_gsm0808_chosen_enc_alg(&ei->perm_algo[j], i)) {
+ LOG_RAN_A_ENC(fi, LOGL_ERROR, "Not supported: A5/%d algorithm\n", i);
+ return -1;
+ }
+ j++;
+ ei->perm_algo_len = j;
+ }
+ return 0;
+}
+
+/* For ran_a_make_cipher_mode_command(), for
+ * memcpy(ei.key, cm->vec->kc, sizeof(cm->vec->kc));
+ */
+osmo_static_assert(sizeof(((struct gsm0808_encrypt_info*)0)->key) >= sizeof(((struct osmo_auth_vector*)0)->kc),
+ gsm0808_encrypt_info_key_fits_osmo_auth_vec_kc);
+static struct msgb *ran_a_make_cipher_mode_command(struct osmo_fsm_inst *fi, const struct ran_cipher_mode_command *cm)
+{
+ struct gsm0808_encrypt_info ei = {};
+ char buf[16 * 2 + 1];
+ const uint8_t cipher_response_mode = 1;
+
+ if (make_encrypt_info_perm_algo(fi, &ei, cm->geran.a5_encryption_mask, cm->classmark))
+ return NULL;
+
+ if (ei.perm_algo_len == 0) {
+ LOG_RAN_A_ENC(fi, LOGL_ERROR, "cannot start ciphering, no intersection between MSC-configured"
+ " and MS-supported A5 algorithms. MSC: 0x%02x MS: %s\n",
+ cm->geran.a5_encryption_mask, osmo_gsm48_classmark_a5_name(cm->classmark));
+ return NULL;
+ }
+
+ /* In case of UMTS AKA, the Kc for ciphering must be derived from the 3G auth
+ * tokens. vec->kc was calculated from the GSM algorithm and is not
+ * necessarily a match for the UMTS AKA tokens. */
+ if (cm->geran.umts_aka)
+ osmo_auth_c3(ei.key, cm->vec->ck, cm->vec->ik);
+ else
+ memcpy(ei.key, cm->vec->kc, sizeof(cm->vec->kc));
+ ei.key_len = sizeof(cm->vec->kc);
+
+ /* Store chosen GERAN key where the caller asked it to be stored.
+ * alg_id remains unknown until we receive a Cipher Mode Complete from the BSC */
+ if (cm->geran.chosen_key) {
+ if (ei.key_len > sizeof(cm->geran.chosen_key->key)) {
+ LOG_RAN_A_ENC(fi, LOGL_ERROR, "Chosen key is larger than I can store\n");
+ return NULL;
+ }
+ memcpy(cm->geran.chosen_key->key, ei.key, ei.key_len);
+ cm->geran.chosen_key->key_len = ei.key_len;
+ }
+
+ LOG_RAN_A_ENC(fi, LOGL_DEBUG, "Tx BSSMAP CIPHER MODE COMMAND to BSC, %u ciphers (%s) key %s\n",
+ ei.perm_algo_len, osmo_hexdump_nospc(ei.perm_algo, ei.perm_algo_len),
+ osmo_hexdump_buf(buf, sizeof(buf), ei.key, ei.key_len, NULL, false));
+ return gsm0808_create_cipher(&ei, cm->geran.retrieve_imeisv ? &cipher_response_mode : NULL);
+}
+
+struct msgb *ran_a_make_handover_request(struct osmo_fsm_inst *log_fi, const struct ran_handover_request *n)
+{
+ struct sockaddr_storage ss;
+ struct gsm0808_handover_request r = {
+ .cell_identifier_serving = n->cell_id_serving,
+ .cell_identifier_target = n->cell_id_target,
+ .cause = n->bssap_cause,
+ .current_channel_type_1_present = n->current_channel_type_1_present,
+ .current_channel_type_1 = n->current_channel_type_1,
+
+ .speech_version_used = n->speech_version_used,
+
+ .chosen_encryption_algorithm_serving = n->geran.chosen_encryption->alg_id,
+
+ .old_bss_to_new_bss_info_raw = n->old_bss_to_new_bss_info_raw,
+ .old_bss_to_new_bss_info_raw_len = n->old_bss_to_new_bss_info_raw_len,
+
+ .imsi = n->imsi,
+ .codec_list_msc_preferred = n->codec_list_msc_preferred,
+ .call_id = n->call_id,
+ .global_call_reference = n->global_call_reference,
+ .global_call_reference_len = n->global_call_reference_len,
+ };
+
+ if (!n->geran.channel_type) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Channel Type required for encoding Handover Request in BSSAP\n");
+ return NULL;
+ }
+ r.channel_type = *n->geran.channel_type;
+
+ /* Encryption Information */
+ make_encrypt_info_perm_algo(log_fi, &r.encryption_information, n->geran.a5_encryption_mask, n->classmark);
+ if (n->geran.chosen_encryption && n->geran.chosen_encryption->key_len) {
+ if (n->geran.chosen_encryption->key_len > sizeof(r.encryption_information.key)) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR, "Handover Request: invalid chosen encryption key size %u\n",
+ n->geran.chosen_encryption->key_len);
+ return NULL;
+ }
+ memcpy(r.encryption_information.key,
+ n->geran.chosen_encryption->key, n->geran.chosen_encryption->key_len);
+ r.encryption_information.key_len = n->geran.chosen_encryption->key_len;
+ }
+
+ if (n->classmark)
+ r.classmark_information = *n->classmark;
+
+ if (osmo_sockaddr_str_is_set(n->rtp_ran_local)) {
+ if (osmo_sockaddr_str_to_sockaddr(n->rtp_ran_local, &ss)) {
+ LOG_RAN_A_ENC(log_fi, LOGL_ERROR,
+ "Handover Request: invalid AoIP Transport Layer address/port: "
+ OSMO_SOCKADDR_STR_FMT "\n", OSMO_SOCKADDR_STR_FMT_ARGS(n->rtp_ran_local));
+ return NULL;
+ }
+ r.aoip_transport_layer = &ss;
+ }
+
+ return gsm0808_create_handover_request(&r);
+}
+
+static struct msgb *ran_a_make_handover_request_ack(struct osmo_fsm_inst *caller_fi, const struct ran_handover_request_ack *r)
+{
+ struct sockaddr_storage ss;
+ struct gsm0808_handover_request_ack params = {
+ .l3_info = r->rr_ho_command,
+ .l3_info_len = r->rr_ho_command_len,
+ .chosen_channel_present = r->chosen_channel_present,
+ .chosen_channel = r->chosen_channel,
+ .chosen_encr_alg = r->chosen_encr_alg,
+ .chosen_speech_version = r->chosen_speech_version,
+ };
+
+ if (osmo_sockaddr_str_is_set(&r->remote_rtp)) {
+ osmo_sockaddr_str_to_sockaddr(&r->remote_rtp, &ss);
+ params.aoip_transport_layer = &ss;
+ }
+
+ return gsm0808_create_handover_request_ack2(&params);
+}
+
+struct msgb *ran_a_make_handover_command(struct osmo_fsm_inst *log_fi, const struct ran_handover_command *n)
+{
+ struct gsm0808_handover_command c = {
+ .l3_info = n->rr_ho_command,
+ .l3_info_len = n->rr_ho_command_len,
+ };
+
+ return gsm0808_create_handover_command(&c);
+}
+
+struct msgb *ran_a_make_handover_failure(struct osmo_fsm_inst *log_fi, const struct ran_msg *msg)
+{
+ struct gsm0808_handover_failure params = {
+ .cause = msg->handover_failure.cause,
+ };
+ return gsm0808_create_handover_failure(&params);
+}
+
+static struct msgb *_ran_a_encode(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg)
+{
+
+ LOG_RAN_A_ENC(caller_fi, LOGL_DEBUG, "%s\n", ran_msg_type_name(ran_enc_msg->msg_type));
+
+ switch (ran_enc_msg->msg_type) {
+
+ case RAN_MSG_DTAP:
+ return ran_a_wrap_dtap(ran_enc_msg->dtap);
+
+ case RAN_MSG_CLASSMARK_REQUEST:
+ return gsm0808_create_classmark_request();
+
+ case RAN_MSG_CLEAR_COMMAND:
+ return gsm0808_create_clear_command2(ran_enc_msg->clear_command.gsm0808_cause,
+ ran_enc_msg->clear_command.csfb_ind);
+
+ case RAN_MSG_ASSIGNMENT_COMMAND:
+ return ran_a_make_assignment_command(caller_fi, &ran_enc_msg->assignment_command);
+
+ case RAN_MSG_CIPHER_MODE_COMMAND:
+ return ran_a_make_cipher_mode_command(caller_fi, &ran_enc_msg->cipher_mode_command);
+
+ case RAN_MSG_HANDOVER_REQUIRED_REJECT:
+ return gsm0808_create_handover_required_reject(&ran_enc_msg->handover_required_reject);
+
+ case RAN_MSG_HANDOVER_REQUEST:
+ return ran_a_make_handover_request(caller_fi, &ran_enc_msg->handover_request);
+
+ case RAN_MSG_HANDOVER_REQUEST_ACK:
+ return ran_a_make_handover_request_ack(caller_fi, &ran_enc_msg->handover_request_ack);
+
+ case RAN_MSG_HANDOVER_COMMAND:
+ return ran_a_make_handover_command(caller_fi, &ran_enc_msg->handover_command);
+
+ case RAN_MSG_HANDOVER_SUCCEEDED:
+ return gsm0808_create_handover_succeeded();
+
+ case RAN_MSG_HANDOVER_FAILURE:
+ return ran_a_make_handover_failure(caller_fi, ran_enc_msg);
+
+ default:
+ LOG_RAN_A_ENC(caller_fi, LOGL_ERROR, "Unimplemented RAN-encode message type: %s\n",
+ ran_msg_type_name(ran_enc_msg->msg_type));
+ return NULL;
+ }
+}
+
+struct msgb *ran_a_encode(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg)
+{
+ struct msgb *msg = _ran_a_encode(caller_fi, ran_enc_msg);
+
+ if (!msg)
+ return NULL;
+
+ msg->l2h = msg->data;
+
+ /* some consistency checks to ensure we don't send invalid length */
+ switch (msg->l2h[0]) {
+ case BSSAP_MSG_DTAP:
+ OSMO_ASSERT(msgb_l2len(msg) == msg->l2h[2] + 3);
+ break;
+ case BSSAP_MSG_BSS_MANAGEMENT:
+ OSMO_ASSERT(msgb_l2len(msg) == msg->l2h[1] + 2);
+ break;
+ default:
+ break;
+ }
+
+ return msg;
+}
+
+/* Return 1 for a RESET, 2 for a RESET ACK message, 0 otherwise */
+enum reset_msg_type bssmap_is_reset_msg(const struct sccp_ran_inst *sri, const struct msgb *l2)
+{
+ struct bssmap_header *bs = (struct bssmap_header *)msgb_l2(l2);
+
+ if (!bs
+ || msgb_l2len(l2) < (sizeof(*bs) + 1)
+ || bs->type != BSSAP_MSG_BSS_MANAGEMENT)
+ return SCCP_RAN_MSG_NON_RESET;
+
+ switch (l2->l2h[sizeof(*bs)]) {
+ case BSS_MAP_MSG_RESET:
+ return SCCP_RAN_MSG_RESET;
+ case BSS_MAP_MSG_RESET_ACKNOWLEDGE:
+ return SCCP_RAN_MSG_RESET_ACK;
+ default:
+ return SCCP_RAN_MSG_NON_RESET;
+ }
+}
+
+struct msgb *bssmap_make_reset_msg(const struct sccp_ran_inst *sri, enum reset_msg_type type)
+{
+ switch (type) {
+ case SCCP_RAN_MSG_RESET:
+ return gsm0808_create_reset();
+ case SCCP_RAN_MSG_RESET_ACK:
+ return gsm0808_create_reset_ack();
+ default:
+ return NULL;
+ }
+}
+
+struct msgb *bssmap_make_paging_msg(const struct sccp_ran_inst *sri, const struct gsm0808_cell_id *page_cell_id,
+ const char *imsi, uint32_t tmsi, enum paging_cause cause)
+{
+ struct gsm0808_cell_id_list2 cil;
+ gsm0808_cell_id_to_list(&cil, page_cell_id);
+ return gsm0808_create_paging2(imsi, tmsi == GSM_RESERVED_TMSI ? NULL : &tmsi, &cil, NULL);
+}
+
+const char *bssmap_msg_name(const struct sccp_ran_inst *sri, const struct msgb *l2)
+{
+ struct bssmap_header *bs;
+
+ if (!l2->l2h)
+ return "?";
+
+ bs = (struct bssmap_header *)msgb_l2(l2);
+ switch (bs->type) {
+ case BSSAP_MSG_BSS_MANAGEMENT:
+ return gsm0808_bssmap_name(l2->l2h[0]);
+ case BSSAP_MSG_DTAP:
+ return "DTAP";
+ default:
+ return "?";
+ }
+}
diff --git a/src/libmsc/ran_msg_iu.c b/src/libmsc/ran_msg_iu.c
new file mode 100644
index 000000000..79b0d5cb9
--- /dev/null
+++ b/src/libmsc/ran_msg_iu.c
@@ -0,0 +1,505 @@
+/* RANAP encoding and decoding for MSC */
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * 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 2 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, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <asn1c/asn1helpers.h>
+
+#include <osmocom/core/prim.h>
+#include <osmocom/core/byteswap.h>
+#include <osmocom/crypt/auth.h>
+#include <osmocom/gsm/gsm48.h>
+
+#include <osmocom/ranap/ranap_common_cn.h>
+#include <osmocom/ranap/ranap_msg_factory.h>
+#include <osmocom/ranap/iu_helpers.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/msc_common.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/ran_msg_iu.h>
+
+/* Implement the extern talloc_asn1_ctx from libasn1c as talloc ctx for ASN.1 message composition */
+void *talloc_asn1_ctx = NULL;
+
+/* Implement the extern asn_debug from libasn1c to indicate whether to print asn.1 debug messages. */
+int asn_debug = 0;
+
+/* Implement the extern asn1_xer_print to indicate whether the ASN.1 binary code decoded and encoded during Iu
+ * communication should be logged to stderr (see asn.1 generated code in osmo-iuh). */
+int asn1_xer_print = 0;
+
+#define LOG_RAN_IU_DEC(RAN_DEC, level, fmt, args...) \
+ LOG_RAN_DEC(RAN_DEC, DIUCS, level, "RANAP: " fmt, ## args)
+
+#define LOG_RAN_IU_ENC(FI, level, fmt, args...) \
+ LOG_RAN_ENC(FI, DIUCS, level, "RANAP: " fmt, ## args)
+
+static void ran_iu_decode_l3_initial(struct ran_dec *ran_iu_decode, const RANAP_InitialUE_MessageIEs_t *ies, const char *msg_name)
+{
+ struct msgb *ran = msgb_alloc(256, msg_name);
+ struct ran_msg ran_dec_msg;
+
+ struct osmo_plmn_id plmn;
+
+ if (ies->lai.pLMNidentity.size < 3) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Too short PLMNidentity in RANAP InitialUE message\n");
+ return;
+ }
+ osmo_plmn_from_bcd(ies->lai.pLMNidentity.buf, &plmn);
+
+ struct gsm0808_cell_id cid = {
+ .id_discr = CELL_IDENT_LAI,
+ .id.lai_and_lac = {
+ .plmn = plmn,
+ .lac = asn1str_to_u16(&ies->lai.lAC),
+ },
+ };
+
+ /* TODO: really necessary to copy the RAN PDU?? */
+ ran->l3h = msgb_put(ran, ies->nas_pdu.size);
+ memcpy(ran->l3h, ies->nas_pdu.buf, ies->nas_pdu.size);
+
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_COMPL_L3,
+ .msg_name = msg_name,
+ .compl_l3 = {
+ .cell_id = &cid,
+ .msg = ran,
+ },
+ };
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+
+ msgb_free(ran);
+}
+
+static void ran_iu_decode_l3(struct ran_dec *ran_iu_decode, const RANAP_NAS_PDU_t *nas_pdu, const char *msg_name)
+{
+ struct msgb *ran = msgb_alloc(256, msg_name);
+ struct ran_msg ran_dec_msg;
+
+ /* TODO: really necessary to copy the RAN PDU?? */
+ ran->l3h = msgb_put(ran, nas_pdu->size);
+ memcpy(ran->l3h, nas_pdu->buf, nas_pdu->size);
+
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_DTAP,
+ .msg_name = msg_name,
+ .dtap = ran,
+ };
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+
+ msgb_free(ran);
+}
+
+static void ran_iu_decode_err(struct ran_dec *ran_iu_decode, const RANAP_ErrorIndicationIEs_t *ies)
+{
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Rx Error Indication (%s)\n",
+ (ies->presenceMask & ERRORINDICATIONIES_RANAP_CAUSE_PRESENT)?
+ ranap_cause_str(&ies->cause) : "no cause specified");
+}
+
+static int ran_iu_decode_rab_assignment_response_decode_setup_ies(struct ran_dec *ran_iu_decode,
+ struct ran_msg *ran_dec_msg,
+ const RANAP_RAB_SetupOrModifiedItemIEs_t *setup_ies)
+{
+ const RANAP_RAB_SetupOrModifiedItem_t *item;
+ const RANAP_TransportLayerAddress_t *transp_layer_addr;
+ const RANAP_IuTransportAssociation_t *transp_assoc;
+ uint16_t port = 0;
+ char addr[INET_ADDRSTRLEN];
+ uint8_t rab_id;
+
+ item = &setup_ies->raB_SetupOrModifiedItem;
+
+ rab_id = item->rAB_ID.buf[0];
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_DEBUG, "Received RAB assignment response for rab_id=%d\n", rab_id);
+
+ if (!(item->iuTransportAssociation && item->transportLayerAddress)) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "RAB Assignment Response does not contain RAB information\n");
+ return -1;
+ }
+
+ transp_layer_addr = item->transportLayerAddress;
+ transp_assoc = item->iuTransportAssociation;
+
+ if (ranap_transp_assoc_decode(&port, transp_assoc)) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Unable to decode RTP port in RAB Assignment Response\n");
+ return -1;
+ }
+
+ if (ranap_transp_layer_addr_decode(addr, sizeof(addr), transp_layer_addr)) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Unable to decode IP-Address in RAB Assignment Response\n");
+ return -1;
+ }
+
+ *ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_ASSIGNMENT_COMPLETE,
+ .msg_name = "RANAP RAB Assignment Response",
+ .assignment_complete = {
+ .codec = CODEC_AMR_8000_1,
+ },
+ };
+ if (osmo_sockaddr_str_from_str(&ran_dec_msg->assignment_complete.remote_rtp, addr, port)) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Assignment Complete: unable to decode remote RTP IP address %s\n",
+ osmo_quote_str(addr, -1));
+ return -1;
+ }
+ return 0;
+}
+
+static void ran_iu_decode_rab_assignment_response(struct ran_dec *ran_iu_decode, const RANAP_RAB_AssignmentResponseIEs_t *ies)
+{
+ int rc;
+ RANAP_IE_t *ranap_ie;
+ RANAP_RAB_SetupOrModifiedItemIEs_t setup_ies;
+ struct ran_msg ran_dec_msg;
+ bool free_ies = false;
+
+ if (!(ies->presenceMask & RAB_ASSIGNMENTRESPONSEIES_RANAP_RAB_SETUPORMODIFIEDLIST_PRESENT)) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "RAB Assignment Response does not contain RAB information\n");
+ goto failure;
+ }
+
+ /* So far we assign a single RAB at a time, so it should not be necessary to iterate over the list of
+ * SetupOrModifiedList IEs and handle each one. */
+ ranap_ie = ies->raB_SetupOrModifiedList.raB_SetupOrModifiedList_ies.list.array[0];
+
+ rc = ranap_decode_rab_setupormodifieditemies_fromlist(&setup_ies, &ranap_ie->value);
+ if (rc) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Error in ranap_decode_rab_setupormodifieditemies(): rc=%d\n", rc);
+ goto failure;
+ }
+ free_ies = true;
+
+ if (!ran_iu_decode_rab_assignment_response_decode_setup_ies(ran_iu_decode, &ran_dec_msg, &setup_ies))
+ goto success;
+
+failure:
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_ASSIGNMENT_FAILURE,
+ .msg_name = "RANAP RAB Assignment Response: Failure",
+ .assignment_failure = {
+ .bssap_cause = RAN_MSG_BSSAP_CAUSE_UNSET,
+ .rr_cause = GSM48_RR_CAUSE_ABNORMAL_UNSPEC,
+ },
+ };
+
+success:
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+
+ if (free_ies)
+ ranap_free_rab_setupormodifieditemies(&setup_ies);
+}
+
+static void ran_iu_decode_security_mode_complete(struct ran_dec *ran_iu_decode)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CIPHER_MODE_COMPLETE,
+ .msg_name = "RANAP SecurityModeControl successfulOutcome",
+ };
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+}
+
+static void ran_iu_decode_security_mode_reject(struct ran_dec *ran_iu_decode)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CIPHER_MODE_REJECT,
+ .msg_name = "RANAP SecurityModeControl unsuccessfulOutcome",
+ .cipher_mode_reject = {
+ .bssap_cause = RAN_MSG_BSSAP_CAUSE_UNSET,
+ },
+ };
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+}
+
+static void ran_iu_decode_release_request(struct ran_dec *ran_iu_decode)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CLEAR_REQUEST,
+ .msg_name = "RANAP Iu ReleaseRequest",
+ .clear_request = {
+ .bssap_cause = RAN_MSG_BSSAP_CAUSE_UNSET,
+ },
+ };
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+}
+
+static void ran_iu_decode_release_complete(struct ran_dec *ran_iu_decode)
+{
+ struct ran_msg ran_dec_msg = {
+ .msg_type = RAN_MSG_CLEAR_COMPLETE,
+ .msg_name = "RANAP Iu Release successfulOutcome",
+ };
+ ran_decoded(ran_iu_decode, &ran_dec_msg);
+}
+
+static void ran_iu_decode_ranap_msg(void *_ran_dec, ranap_message *message)
+{
+ struct ran_dec *ran_iu_decode = _ran_dec;
+
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_DEBUG, "dir=%u proc=%u\n", message->direction, message->procedureCode);
+
+ switch (message->procedureCode) {
+
+ case RANAP_ProcedureCode_id_InitialUE_Message:
+ ran_iu_decode_l3_initial(ran_iu_decode, &message->msg.initialUE_MessageIEs, "RANAP InitialUE RAN PDU");
+ return;
+
+ case RANAP_ProcedureCode_id_DirectTransfer:
+ ran_iu_decode_l3(ran_iu_decode, &message->msg.directTransferIEs.nas_pdu, "RANAP DirectTransfer RAN PDU");
+ return;
+
+ case RANAP_ProcedureCode_id_SecurityModeControl:
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ ran_iu_decode_security_mode_complete(ran_iu_decode);
+ return;
+ case RANAP_RANAP_PDU_PR_unsuccessfulOutcome:
+ ran_iu_decode_security_mode_reject(ran_iu_decode);
+ return;
+ default:
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR,
+ "Received SecurityModeControl: unexpected RANAP ProcedureCode: %d\n",
+ message->direction);
+ return;
+ }
+
+ case RANAP_ProcedureCode_id_RAB_Assignment:
+ /* This should always be a RANAP_RANAP_PDU_PR_outcome. No need to check for that. */
+ ran_iu_decode_rab_assignment_response(ran_iu_decode, &message->msg.raB_AssignmentResponseIEs);
+ return;
+
+ case RANAP_ProcedureCode_id_Iu_ReleaseRequest:
+ ran_iu_decode_release_request(ran_iu_decode);
+ return;
+
+ case RANAP_ProcedureCode_id_Iu_Release:
+ if (message->direction != RANAP_RANAP_PDU_PR_successfulOutcome) {
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Received Iu_Release: expected successfulOutcome, got %d\n",
+ message->direction);
+ return;
+ }
+ ran_iu_decode_release_complete(ran_iu_decode);
+ return;
+
+ case RANAP_ProcedureCode_id_ErrorIndication:
+ ran_iu_decode_err(ran_iu_decode, &message->msg.errorIndicationIEs);
+ return;
+
+ default:
+ LOG_RAN_IU_DEC(ran_iu_decode, LOGL_ERROR, "Received unhandled RANAP Procedure Code %d\n", message->procedureCode);
+ return;
+ }
+}
+
+int ran_iu_decode_l2(struct ran_dec *ran_iu_decode, struct msgb *ranap)
+{
+ return ranap_cn_rx_co(ran_iu_decode_ranap_msg, ran_iu_decode, msgb_l2(ranap), msgb_l2len(ranap));
+}
+
+/* Create a RANAP Initiating DirectTransfer message containing the given DTAP as RAN PDU, and return the resulting
+ * AN-APDU to be forwarded via E-interface. */
+static struct msgb *ran_iu_wrap_dtap(struct msgb *dtap)
+{
+ struct msgb *an_apdu;
+ an_apdu = ranap_new_msg_dt(0, dtap->data, msgb_length(dtap));
+ an_apdu->l2h = an_apdu->data;
+ msgb_free(dtap);
+ return an_apdu;
+}
+
+static struct msgb *ran_iu_make_rab_assignment(struct osmo_fsm_inst *caller_fi, const struct ran_assignment_command *ac)
+{
+ struct msgb *msg;
+ bool use_x213_nsap;
+ uint32_t cn_rtp_ip;
+ static uint8_t next_rab_id = 1;
+ uint8_t rab_id = next_rab_id;
+
+ next_rab_id ++;
+ if (!next_rab_id)
+ next_rab_id = 1;
+
+ cn_rtp_ip = osmo_htonl(inet_addr(ac->cn_rtp->ip));
+
+ if (cn_rtp_ip == INADDR_NONE) {
+ LOG_RAN_IU_ENC(caller_fi, LOGL_ERROR, "Error during RAB Assignment: invalid RTP IP-Address\n");
+ return NULL;
+ }
+ if (ac->cn_rtp->port == 0) {
+ LOG_RAN_IU_ENC(caller_fi, LOGL_ERROR, "Error during RAB Assignment: invalid RTP port\n");
+ return NULL;
+ }
+
+ use_x213_nsap = (ac->rab_assign_addr_enc == NSAP_ADDR_ENC_X213);
+ LOG_RAN_IU_ENC(caller_fi, LOGL_DEBUG, "RAB Assignment: rab_id=%d, rtp=" OSMO_SOCKADDR_STR_FMT ", use_x213_nsap=%d\n",
+ rab_id, OSMO_SOCKADDR_STR_FMT_ARGS(ac->cn_rtp), use_x213_nsap);
+
+ msg = ranap_new_msg_rab_assign_voice(rab_id, cn_rtp_ip, ac->cn_rtp->port, use_x213_nsap);
+ msg->l2h = msg->data;
+
+ return msg;
+}
+
+static struct msgb *ran_iu_make_security_mode_command(struct osmo_fsm_inst *caller_fi,
+ const struct ran_cipher_mode_command *cm)
+{
+
+ LOG_RAN_IU_ENC(caller_fi, LOGL_DEBUG, "Tx RANAP SECURITY MODE COMMAND to RNC, ik %s\n",
+ osmo_hexdump_nospc(cm->vec->ik, 16));
+ return ranap_new_msg_sec_mod_cmd(cm->vec->ik, NULL, RANAP_KeyStatus_new);
+}
+
+
+static struct msgb *ran_iu_make_release_command(struct osmo_fsm_inst *caller_fi,
+ const struct ran_clear_command *ccmd)
+{
+ static const struct RANAP_Cause cause = {
+ .present = RANAP_Cause_PR_radioNetwork,
+ .choice.radioNetwork = RANAP_CauseRadioNetwork_release_due_to_utran_generated_reason,
+ /* TODO: set various causes depending on the ran_clear_command cause value */
+ };
+ return ranap_new_msg_iu_rel_cmd(&cause);
+}
+
+struct msgb *ran_iu_encode(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg)
+{
+ LOG_RAN_IU_ENC(caller_fi, LOGL_DEBUG, "%s\n", ran_msg_type_name(ran_enc_msg->msg_type));
+
+ switch (ran_enc_msg->msg_type) {
+
+ case RAN_MSG_DTAP:
+ return ran_iu_wrap_dtap(ran_enc_msg->dtap);
+
+ // TODO: RAN_MSG_CLASSMARK_REQUEST ??
+
+ case RAN_MSG_CIPHER_MODE_COMMAND:
+ return ran_iu_make_security_mode_command(caller_fi, &ran_enc_msg->cipher_mode_command);
+
+ case RAN_MSG_ASSIGNMENT_COMMAND:
+ return ran_iu_make_rab_assignment(caller_fi, &ran_enc_msg->assignment_command);
+
+ case RAN_MSG_COMMON_ID:
+ return ranap_new_msg_common_id(ran_enc_msg->common_id.imsi);
+
+ case RAN_MSG_CLEAR_COMMAND:
+ return ran_iu_make_release_command(caller_fi, &ran_enc_msg->clear_command);
+
+ default:
+ LOG_RAN_IU_ENC(caller_fi, LOGL_ERROR, "Message type not implemented: %s\n",
+ ran_msg_type_name(ran_enc_msg->msg_type));
+ return NULL;
+ }
+}
+
+/* Entry point for connection-less RANAP message */
+static void ranap_handle_cl(void *ctx, ranap_message *message)
+{
+ int *rc = ctx;
+ *rc = SCCP_RAN_MSG_NON_RESET;
+
+ if (message->procedureCode != RANAP_ProcedureCode_id_Reset)
+ return;
+
+ switch (message->direction) {
+ case RANAP_RANAP_PDU_PR_initiatingMessage:
+ *rc = SCCP_RAN_MSG_RESET;
+ return;
+ case RANAP_RANAP_PDU_PR_successfulOutcome:
+ *rc = SCCP_RAN_MSG_RESET_ACK;
+ return;
+ default:
+ return;
+ }
+}
+
+enum reset_msg_type ranap_is_reset_msg(const struct sccp_ran_inst *sri, const struct msgb *l2)
+{
+ int ret = SCCP_RAN_MSG_NON_RESET;
+ int rc;
+
+ rc = ranap_cn_rx_cl(ranap_handle_cl, &ret, msgb_l2(l2), msgb_l2len(l2));
+ if (rc)
+ return 0;
+ return ret;
+}
+
+struct msgb *ranap_make_reset_msg(const struct sccp_ran_inst *sri, enum reset_msg_type type)
+{
+ const RANAP_Cause_t cause = {
+ .present = RANAP_Cause_PR_protocol,
+ .choice = {
+ .protocol = RANAP_CauseProtocol_message_not_compatible_with_receiver_state,
+ },
+ };
+ switch (type) {
+ case SCCP_RAN_MSG_RESET:
+ return ranap_new_msg_reset(RANAP_CN_DomainIndicator_cs_domain, &cause);
+ case SCCP_RAN_MSG_RESET_ACK:
+ return ranap_new_msg_reset_ack(RANAP_CN_DomainIndicator_cs_domain, NULL);
+ default:
+ return NULL;
+ }
+}
+
+static e_RANAP_PagingCause ranap_paging_cause_from_msc(enum paging_cause cause)
+{
+ switch (cause) {
+ default:
+ case PAGING_CAUSE_UNSPECIFIED:
+ case PAGING_CAUSE_CALL_CONVERSATIONAL:
+ return RANAP_PagingCause_terminating_conversational_call;
+ case PAGING_CAUSE_CALL_STREAMING:
+ return RANAP_PagingCause_terminating_streaming_call;
+ case PAGING_CAUSE_CALL_INTERACTIVE:
+ return RANAP_PagingCause_terminating_interactive_call;
+ case PAGING_CAUSE_CALL_BACKGROUND:
+ return RANAP_PagingCause_terminating_background_call;
+ case PAGING_CAUSE_SIGNALLING_LOW_PRIO:
+ return RANAP_PagingCause_terminating_low_priority_signalling;
+ case PAGING_CAUSE_SIGNALLING_HIGH_PRIO:
+ return RANAP_PagingCause_terminating_high_priority_signalling;
+ }
+}
+
+struct msgb *ranap_make_paging_msg(const struct sccp_ran_inst *sri, const struct gsm0808_cell_id *page_cell_id,
+ const char *imsi, uint32_t tmsi, enum paging_cause cause)
+{
+ return ranap_new_msg_paging_cmd(imsi, tmsi == GSM_RESERVED_TMSI ? NULL : &tmsi, false,
+ ranap_paging_cause_from_msc(cause));
+}
+
+const char *ranap_msg_name(const struct sccp_ran_inst *sri, const struct msgb *l2)
+{
+ uint8_t msgt;
+ uint8_t procedure;
+ static char buf[32];
+ if (!l2->l2h)
+ return "?";
+
+ msgt = l2->l2h[0];
+ procedure = l2->l2h[1];
+
+ snprintf(buf, sizeof(buf), "type %u procedureCode %u", msgt, procedure);
+ return buf;
+}
diff --git a/src/libmsc/ran_peer.c b/src/libmsc/ran_peer.c
new file mode 100644
index 000000000..ac2bb4f96
--- /dev/null
+++ b/src/libmsc/ran_peer.c
@@ -0,0 +1,659 @@
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/linuxlist.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/fsm.h>
+#include <osmocom/sigtran/sccp_helpers.h>
+
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/ran_conn.h>
+#include <osmocom/msc/cell_id_list.h>
+
+static struct osmo_fsm ran_peer_fsm;
+
+static __attribute__((constructor)) void ran_peer_init()
+{
+ OSMO_ASSERT( osmo_fsm_register(&ran_peer_fsm) == 0);
+}
+
+/* Allocate a RAN peer with FSM instance. To deallocate, call osmo_fsm_inst_term(ran_peer->fi). */
+static struct ran_peer *ran_peer_alloc(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *peer_addr)
+{
+ struct ran_peer *rp;
+ struct osmo_fsm_inst *fi;
+ char *sccp_addr;
+ char *pos;
+
+ fi = osmo_fsm_inst_alloc(&ran_peer_fsm, sri, NULL, LOGL_DEBUG, NULL);
+ OSMO_ASSERT(fi);
+
+ /* Unfortunately, osmo_sccp_inst_addr_name() returns "RI=SSN_PC,PC=0.24.1,SSN=BSSAP" but neither commas nor
+ * full-stops are allowed as FSM inst id. Make it "RI=SSN_PC:PC-0-24-1:SSN-BSSAP". */
+ sccp_addr = osmo_sccp_inst_addr_name(sri->sccp, peer_addr);
+ for (pos = sccp_addr; *pos; pos++) {
+ if (*pos == ',')
+ *pos = ':';
+ else if (*pos == '.' || *pos == '=')
+ *pos = '-';
+ }
+ osmo_fsm_inst_update_id_f(fi, "%s:%s", osmo_rat_type_name(sri->ran->type), sccp_addr);
+
+ rp = talloc_zero(fi, struct ran_peer);
+ OSMO_ASSERT(rp);
+ *rp = (struct ran_peer){
+ .sri = sri,
+ .peer_addr = *peer_addr,
+ .fi = fi,
+ };
+ INIT_LLIST_HEAD(&rp->cells_seen);
+ fi->priv = rp;
+
+ llist_add(&rp->entry, &sri->ran_peers);
+
+ return rp;
+}
+
+struct ran_peer *ran_peer_find_or_create(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *peer_addr)
+{
+ struct ran_peer *rp = ran_peer_find(sri, peer_addr);
+ if (rp)
+ return rp;
+ return ran_peer_alloc(sri, peer_addr);
+}
+
+struct ran_peer *ran_peer_find(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *peer_addr)
+{
+ struct ran_peer *rp;
+ llist_for_each_entry(rp, &sri->ran_peers, entry) {
+ if (osmo_sccp_addr_ri_cmp(peer_addr, &rp->peer_addr))
+ continue;
+ return rp;
+ }
+ return NULL;
+}
+
+void ran_peer_cells_seen_add(struct ran_peer *ran_peer, const struct gsm0808_cell_id *cid)
+{
+ if (!cell_id_list_add_cell(ran_peer, &ran_peer->cells_seen, cid))
+ return;
+ LOG_RAN_PEER_CAT(ran_peer, DPAG, LOGL_NOTICE, "Added seen cell to this RAN peer: %s\n",
+ gsm0808_cell_id_name(cid));
+}
+
+static const struct osmo_tdef_state_timeout ran_peer_fsm_timeouts[32] = {
+ [RAN_PEER_ST_WAIT_RX_RESET_ACK] = { .T = -1 },
+ [RAN_PEER_ST_DISCARDING] = { .T = -2 },
+};
+
+#define ran_peer_state_chg(RAN_PEER, NEXT_STATE) \
+ osmo_tdef_fsm_inst_state_chg((RAN_PEER)->fi, NEXT_STATE, ran_peer_fsm_timeouts, g_sccp_tdefs, 5)
+
+void ran_peer_discard_all_conns(struct ran_peer *rp)
+{
+ struct ran_conn *conn, *next;
+
+ ran_peer_for_each_ran_conn_safe(conn, next, rp) {
+ ran_conn_discard(conn);
+ }
+}
+
+/* Drop all SCCP connections for this ran_peer, respond with RESET ACKNOWLEDGE and move to READY state. */
+static void ran_peer_rx_reset(struct ran_peer *rp)
+{
+ struct msgb *reset_ack;
+
+ ran_peer_discard_all_conns(rp);
+
+ reset_ack = rp->sri->ran->sccp_ran_ops.make_reset_msg(rp->sri, SCCP_RAN_MSG_RESET_ACK);
+
+ if (!reset_ack) {
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Failed to compose RESET ACKNOWLEDGE message\n");
+ ran_peer_state_chg(rp, RAN_PEER_ST_WAIT_RX_RESET);
+ return;
+ }
+
+ if (sccp_ran_down_l2_cl(rp->sri, &rp->peer_addr, reset_ack)) {
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Failed to send RESET ACKNOWLEDGE message\n");
+ ran_peer_state_chg(rp, RAN_PEER_ST_WAIT_RX_RESET);
+ return;
+ }
+
+ LOG_RAN_PEER(rp, LOGL_INFO, "Sent RESET ACKNOWLEDGE\n");
+
+ ran_peer_state_chg(rp, RAN_PEER_ST_READY);
+}
+
+void ran_peer_reset(struct ran_peer *rp)
+{
+ struct msgb *reset;
+
+ ran_peer_state_chg(rp, RAN_PEER_ST_WAIT_RX_RESET_ACK);
+ ran_peer_discard_all_conns(rp);
+
+ reset = rp->sri->ran->sccp_ran_ops.make_reset_msg(rp->sri, SCCP_RAN_MSG_RESET);
+
+ if (!reset) {
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Failed to compose RESET message\n");
+ ran_peer_state_chg(rp, RAN_PEER_ST_WAIT_RX_RESET);
+ return;
+ }
+
+ if (sccp_ran_down_l2_cl(rp->sri, &rp->peer_addr, reset)) {
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Failed to send RESET message\n");
+ ran_peer_state_chg(rp, RAN_PEER_ST_WAIT_RX_RESET);
+ return;
+ }
+}
+
+void ran_peer_allstate_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct ran_peer *rp = fi->priv;
+ struct ran_peer_ev_ctx *ctx = data;
+ struct msgb *msg = ctx->msg;
+
+ switch (event) {
+ case RAN_PEER_EV_MSG_UP_CL:
+ switch (rp->sri->ran->sccp_ran_ops.is_reset_msg(rp->sri, msg)) {
+ case 1:
+ osmo_fsm_inst_dispatch(fi, RAN_PEER_EV_RX_RESET, msg);
+ return;
+ case 2:
+ osmo_fsm_inst_dispatch(fi, RAN_PEER_EV_RX_RESET_ACK, msg);
+ return;
+ default:
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Unhandled ConnectionLess message received: %s\n",
+ rp->sri->ran->sccp_ran_ops.msg_name(rp->sri, msg));
+ return;
+ }
+
+ default:
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Unhandled event: %s\n", osmo_fsm_event_name(&ran_peer_fsm, event));
+ return;
+ }
+}
+
+void clear_and_disconnect(struct ran_peer *rp, uint32_t conn_id)
+{
+ struct msgb *clear;
+ struct ran_msg ran_enc_msg = {
+ .msg_type = RAN_MSG_CLEAR_COMMAND,
+ .clear_command = {
+ .gsm0808_cause = GSM0808_CAUSE_EQUIPMENT_FAILURE,
+ },
+ };
+
+ clear = rp->sri->ran->ran_encode(rp->fi, &ran_enc_msg);
+ if (!clear
+ || sccp_ran_down_l2_co(rp->sri, conn_id, clear))
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Cannot sent Clear command\n");
+
+ sccp_ran_disconnect(rp->sri, conn_id, 0);
+}
+
+void ran_peer_st_wait_rx_reset(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct ran_peer *rp = fi->priv;
+ struct ran_peer_ev_ctx *ctx;
+
+ switch (event) {
+
+ case RAN_PEER_EV_MSG_UP_CO:
+ case RAN_PEER_EV_MSG_UP_CO_INITIAL:
+ ctx = data;
+ OSMO_ASSERT(ctx);
+
+ if (rp->sri->ignore_missing_reset) {
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Receiving CO message on RAN peer that has not done a proper RESET yet."
+ " Accepting RAN peer implicitly (legacy compat)\n");
+ ran_peer_state_chg(rp, RAN_PEER_ST_READY);
+ osmo_fsm_inst_dispatch(rp->fi, event, data);
+ return;
+ }
+
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Receiving CO message on RAN peer that has not done a proper RESET yet."
+ " Disconnecting on incoming message, sending RESET to RAN peer.\n");
+ /* No valid RESET procedure has happened here yet. Usually, we're expecting the RAN peer (BSC,
+ * RNC) to first send a RESET message before sending Connection Oriented messages. So if we're
+ * getting a CO message, likely we've just restarted or something. Send a RESET to the peer. */
+
+ /* Make sure the MS / UE properly disconnects. */
+ clear_and_disconnect(rp, ctx->conn_id);
+
+ ran_peer_reset(rp);
+ return;
+
+ case RAN_PEER_EV_RX_RESET:
+ ran_peer_rx_reset(rp);
+ return;
+
+ default:
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Unhandled event: %s\n", osmo_fsm_event_name(&ran_peer_fsm, event));
+ return;
+ }
+}
+
+void ran_peer_st_wait_rx_reset_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct ran_peer *rp = fi->priv;
+ struct ran_peer_ev_ctx *ctx;
+
+ switch (event) {
+
+ case RAN_PEER_EV_RX_RESET_ACK:
+ ran_peer_state_chg(rp, RAN_PEER_ST_READY);
+ return;
+
+ case RAN_PEER_EV_MSG_UP_CO:
+ case RAN_PEER_EV_MSG_UP_CO_INITIAL:
+ ctx = data;
+ OSMO_ASSERT(ctx);
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Receiving CO message on RAN peer that has not done a proper RESET yet."
+ " Disconnecting on incoming message, sending RESET to RAN peer.\n");
+ sccp_ran_disconnect(rp->sri, ctx->conn_id, 0);
+ /* No valid RESET procedure has happened here yet. */
+ ran_peer_reset(rp);
+ return;
+
+ case RAN_PEER_EV_RX_RESET:
+ ran_peer_rx_reset(rp);
+ return;
+
+ default:
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Unhandled event: %s\n", osmo_fsm_event_name(&ran_peer_fsm, event));
+ return;
+ }
+}
+
+static struct ran_conn *new_incoming_conn(struct ran_peer *rp, uint32_t conn_id)
+{
+ struct gsm_network *net = rp->sri->user_data;
+ struct msub *msub;
+ struct msc_i *msc_i;
+ struct msc_a *msc_a;
+ struct ran_conn *ran_conn;
+
+ msub = msub_alloc(net);
+ OSMO_ASSERT(msub);
+ msc_i = msc_i_alloc(msub, rp->sri->ran);
+ OSMO_ASSERT(msc_i);
+
+ ran_conn = ran_conn_create_incoming(rp, conn_id);
+ if (!ran_conn) {
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Cannot allocate ran_conn\n");
+ return NULL;
+ }
+ msc_i_set_ran_conn(msc_i, ran_conn);
+
+ msc_a = msc_a_alloc(msub, rp->sri->ran);
+ OSMO_ASSERT(msc_a);
+
+ return msc_i->ran_conn;
+}
+
+void ran_peer_st_ready(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct ran_peer *rp = fi->priv;
+ struct ran_peer_ev_ctx *ctx;
+ struct ran_conn *conn;
+ struct an_apdu an_apdu;
+
+ switch (event) {
+
+ case RAN_PEER_EV_MSG_UP_CO_INITIAL:
+ ctx = data;
+ OSMO_ASSERT(ctx)
+ OSMO_ASSERT(!ctx->conn);
+ OSMO_ASSERT(ctx->msg);
+
+ conn = new_incoming_conn(rp, ctx->conn_id);
+ if (!conn)
+ return;
+ if (!conn->msc_role) {
+ LOG_RAN_PEER(rp, LOGL_ERROR,
+ "Rx CO Initial message on conn that is not associated with any MSC role\n");
+ return;
+ }
+
+
+ an_apdu = (struct an_apdu){
+ .an_proto = rp->sri->ran->an_proto,
+ .msg = ctx->msg,
+ };
+
+ osmo_fsm_inst_dispatch(conn->msc_role, MSC_EV_FROM_RAN_COMPLETE_LAYER_3, &an_apdu);
+ return;
+
+ case RAN_PEER_EV_MSG_UP_CO:
+ ctx = data;
+ OSMO_ASSERT(ctx);
+ OSMO_ASSERT(ctx->conn);
+ OSMO_ASSERT(ctx->msg);
+
+ if (!ctx->conn->msc_role) {
+ LOG_RAN_PEER(rp, LOGL_ERROR,
+ "Rx CO message on conn that is not associated with any MSC role\n");
+ return;
+ }
+
+ an_apdu = (struct an_apdu){
+ .an_proto = rp->sri->ran->an_proto,
+ .msg = ctx->msg,
+ };
+
+ osmo_fsm_inst_dispatch(ctx->conn->msc_role, MSC_EV_FROM_RAN_UP_L2, &an_apdu);
+ return;
+
+ case RAN_PEER_EV_MSG_DOWN_CO_INITIAL:
+ ctx = data;
+ OSMO_ASSERT(ctx);
+ OSMO_ASSERT(ctx->msg);
+ sccp_ran_down_l2_co_initial(rp->sri, &rp->peer_addr, ctx->conn_id, ctx->msg);
+ return;
+
+ case RAN_PEER_EV_MSG_DOWN_CO:
+ ctx = data;
+ OSMO_ASSERT(ctx);
+ OSMO_ASSERT(ctx->msg);
+ sccp_ran_down_l2_co(rp->sri, ctx->conn_id, ctx->msg);
+ return;
+
+ case RAN_PEER_EV_MSG_DOWN_CL:
+ OSMO_ASSERT(data);
+ sccp_ran_down_l2_cl(rp->sri, &rp->peer_addr, (struct msgb*)data);
+ return;
+
+ case RAN_PEER_EV_RX_RESET:
+ ran_peer_rx_reset(rp);
+ return;
+
+ default:
+ LOG_RAN_PEER(rp, LOGL_ERROR, "Unhandled event: %s\n", osmo_fsm_event_name(&ran_peer_fsm, event));
+ return;
+ }
+}
+
+static int ran_peer_fsm_timer_cb(struct osmo_fsm_inst *fi)
+{
+ struct ran_peer *rp = fi->priv;
+ ran_peer_state_chg(rp, RAN_PEER_ST_WAIT_RX_RESET);
+ return 0;
+}
+
+void ran_peer_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct ran_peer *rp = fi->priv;
+ ran_peer_discard_all_conns(rp);
+ llist_del(&rp->entry);
+}
+
+static const struct value_string ran_peer_fsm_event_names[] = {
+ OSMO_VALUE_STRING(RAN_PEER_EV_MSG_UP_CL),
+ OSMO_VALUE_STRING(RAN_PEER_EV_MSG_UP_CO_INITIAL),
+ OSMO_VALUE_STRING(RAN_PEER_EV_MSG_UP_CO),
+ OSMO_VALUE_STRING(RAN_PEER_EV_MSG_DOWN_CL),
+ OSMO_VALUE_STRING(RAN_PEER_EV_MSG_DOWN_CO_INITIAL),
+ OSMO_VALUE_STRING(RAN_PEER_EV_MSG_DOWN_CO),
+ OSMO_VALUE_STRING(RAN_PEER_EV_RX_RESET),
+ OSMO_VALUE_STRING(RAN_PEER_EV_RX_RESET_ACK),
+ OSMO_VALUE_STRING(RAN_PEER_EV_CONNECTION_SUCCESS),
+ OSMO_VALUE_STRING(RAN_PEER_EV_CONNECTION_TIMEOUT),
+ {}
+};
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state ran_peer_fsm_states[] = {
+ [RAN_PEER_ST_WAIT_RX_RESET] = {
+ .name = "WAIT_RX_RESET",
+ .action = ran_peer_st_wait_rx_reset,
+ .in_event_mask = 0
+ | S(RAN_PEER_EV_RX_RESET)
+ | S(RAN_PEER_EV_MSG_UP_CO_INITIAL)
+ | S(RAN_PEER_EV_MSG_UP_CO)
+ | S(RAN_PEER_EV_CONNECTION_TIMEOUT)
+ ,
+ .out_state_mask = 0
+ | S(RAN_PEER_ST_WAIT_RX_RESET)
+ | S(RAN_PEER_ST_WAIT_RX_RESET_ACK)
+ | S(RAN_PEER_ST_READY)
+ | S(RAN_PEER_ST_DISCARDING)
+ ,
+ },
+ [RAN_PEER_ST_WAIT_RX_RESET_ACK] = {
+ .name = "WAIT_RX_RESET_ACK",
+ .action = ran_peer_st_wait_rx_reset_ack,
+ .in_event_mask = 0
+ | S(RAN_PEER_EV_RX_RESET)
+ | S(RAN_PEER_EV_RX_RESET_ACK)
+ | S(RAN_PEER_EV_MSG_UP_CO_INITIAL)
+ | S(RAN_PEER_EV_MSG_UP_CO)
+ | S(RAN_PEER_EV_CONNECTION_TIMEOUT)
+ ,
+ .out_state_mask = 0
+ | S(RAN_PEER_ST_WAIT_RX_RESET)
+ | S(RAN_PEER_ST_WAIT_RX_RESET_ACK)
+ | S(RAN_PEER_ST_READY)
+ | S(RAN_PEER_ST_DISCARDING)
+ ,
+ },
+ [RAN_PEER_ST_READY] = {
+ .name = "READY",
+ .action = ran_peer_st_ready,
+ .in_event_mask = 0
+ | S(RAN_PEER_EV_RX_RESET)
+ | S(RAN_PEER_EV_MSG_UP_CO_INITIAL)
+ | S(RAN_PEER_EV_MSG_UP_CO)
+ | S(RAN_PEER_EV_MSG_DOWN_CO_INITIAL)
+ | S(RAN_PEER_EV_MSG_DOWN_CO)
+ | S(RAN_PEER_EV_MSG_DOWN_CL)
+ ,
+ .out_state_mask = 0
+ | S(RAN_PEER_ST_WAIT_RX_RESET)
+ | S(RAN_PEER_ST_WAIT_RX_RESET_ACK)
+ | S(RAN_PEER_ST_READY)
+ | S(RAN_PEER_ST_DISCARDING)
+ ,
+ },
+ [RAN_PEER_ST_DISCARDING] = {
+ .name = "DISCARDING",
+ },
+};
+
+static struct osmo_fsm ran_peer_fsm = {
+ .name = "ran_peer",
+ .states = ran_peer_fsm_states,
+ .num_states = ARRAY_SIZE(ran_peer_fsm_states),
+ .log_subsys = DRR,
+ .event_names = ran_peer_fsm_event_names,
+ .timer_cb = ran_peer_fsm_timer_cb,
+ .cleanup = ran_peer_fsm_cleanup,
+ .allstate_action = ran_peer_allstate_action,
+ .allstate_event_mask = 0
+ | S(RAN_PEER_EV_MSG_UP_CL)
+ ,
+};
+
+int ran_peer_up_l2(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *calling_addr, bool co, uint32_t conn_id,
+ struct msgb *l2)
+{
+ struct ran_peer *ran_peer = NULL;
+ uint32_t event;
+ struct ran_peer_ev_ctx ctx = {
+ .conn_id = conn_id,
+ .msg = l2,
+ };
+
+ if (co) {
+ struct ran_conn *conn;
+ llist_for_each_entry(conn, &sri->ran_conns, entry) {
+ if (conn->sccp_conn_id == conn_id) {
+ ran_peer = conn->ran_peer;
+ ctx.conn = conn;
+ break;
+ }
+ }
+
+ if (ran_peer && calling_addr) {
+ LOG_SCCP_RAN_CO(sri, calling_addr, conn_id, LOGL_ERROR,
+ "Connection-Oriented Initial message for already existing conn_id."
+ " Dropping message.\n");
+ return -EINVAL;
+ }
+
+ if (!ran_peer && !calling_addr) {
+ LOG_SCCP_RAN_CO(sri, calling_addr, conn_id, LOGL_ERROR,
+ "Connection-Oriented non-Initial message for unknown conn_id %u."
+ " Dropping message.\n", conn_id);
+ return -EINVAL;
+ }
+ }
+
+ if (calling_addr) {
+ ran_peer = ran_peer_find_or_create(sri, calling_addr);
+ if (!ran_peer) {
+ LOG_SCCP_RAN_CL(sri, calling_addr, LOGL_ERROR, "Cannot register RAN peer\n");
+ return -EIO;
+ }
+ }
+
+ OSMO_ASSERT(ran_peer && ran_peer->fi);
+
+ if (co)
+ event = calling_addr ? RAN_PEER_EV_MSG_UP_CO_INITIAL : RAN_PEER_EV_MSG_UP_CO;
+ else
+ event = RAN_PEER_EV_MSG_UP_CL;
+
+ return osmo_fsm_inst_dispatch(ran_peer->fi, event, &ctx);
+}
+
+void ran_peer_disconnect(struct sccp_ran_inst *sri, uint32_t conn_id)
+{
+ struct ran_conn *conn;
+ llist_for_each_entry(conn, &sri->ran_conns, entry) {
+ if (conn->sccp_conn_id == conn_id) {
+ ran_conn_discard(conn);
+ return;
+ }
+ }
+}
+
+struct ran_peer *ran_peer_find_by_cell_id(struct sccp_ran_inst *sri, const struct gsm0808_cell_id *cid,
+ bool expecting_single_match)
+{
+ struct ran_peer *rp;
+ struct ran_peer *found = NULL;
+
+ llist_for_each_entry(rp, &sri->ran_peers, entry) {
+ if (cell_id_list_find(&rp->cells_seen, cid, 0, false)) {
+ if (!expecting_single_match)
+ return rp;
+ /* Otherwise continue iterating and log errors for multiple matches... */
+ if (found) {
+ LOG_RAN_PEER(found, LOGL_ERROR, "Cell appears in more than one RAN peer:"
+ " %s also appears in %s\n",
+ gsm0808_cell_id_name(cid), rp->fi->id);
+ } else
+ found = rp;
+ }
+ }
+ return found;
+}
+
+struct ran_peer *ran_peer_find_by_addr(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *addr)
+{
+ struct ran_peer *rp;
+
+ llist_for_each_entry(rp, &sri->ran_peers, entry) {
+ if (!osmo_sccp_addr_ri_cmp(addr, &rp->peer_addr))
+ return rp;
+ }
+ return NULL;
+}
+
+int ran_peers_down_paging(struct sccp_ran_inst *sri, enum CELL_IDENT page_where, struct vlr_subscr *vsub,
+ enum paging_cause cause)
+{
+ struct ran_peer *rp;
+ int ret = 0;
+ struct gsm0808_cell_id page_id;
+ gsm0808_cell_id_from_cgi(&page_id, page_where, &vsub->cgi);
+
+ switch (page_where) {
+ case CELL_IDENT_NO_CELL:
+ LOG_SCCP_RAN_CAT(sri, DPAG, LOGL_ERROR, "Asked to page on NO_CELL, wich doesn't make sense.\n");
+ return 0;
+
+ case CELL_IDENT_UTRAN_PLMN_LAC_RNC:
+ case CELL_IDENT_UTRAN_RNC:
+ case CELL_IDENT_UTRAN_LAC_RNC:
+ LOG_SCCP_RAN_CAT(sri, DPAG, LOGL_ERROR, "Don't know how to page on %s\n",
+ gsm0808_cell_id_name(&page_id));
+ return 0;
+
+ default:
+ break;
+ };
+
+ llist_for_each_entry(rp, &sri->ran_peers, entry) {
+ ret += ran_peer_down_paging(rp, &page_id, vsub, cause);
+ }
+
+ if (!ret)
+ LOG_SCCP_RAN_CAT(sri, DPAG, LOGL_ERROR, "Paging failed, no RAN peers found for %s\n",
+ gsm0808_cell_id_name(&page_id));
+ return ret;
+}
+
+/* If the given vsub->cgi matches this ran_peer with respect to page_where, page and return 1.
+ * Otherwise return 0. (Return value: number of pagings sent) */
+int ran_peer_down_paging(struct ran_peer *rp, const struct gsm0808_cell_id *page_id, struct vlr_subscr *vsub,
+ enum paging_cause cause)
+{
+ struct msgb *l2;
+
+ if (cell_id_list_find(&rp->cells_seen, page_id, 0, false))
+ goto page_it;
+
+ /* There are also the RAN peers that are configured in the neighbor ident for Handover, but if those aren't
+ * connected, then we can't Page there. */
+
+ return 0;
+
+page_it:
+ LOG_RAN_PEER_CAT(rp, DPAG, LOGL_DEBUG, "Paging for %s on %s\n", vlr_subscr_name(vsub),
+ gsm0808_cell_id_name(page_id));
+ l2 = rp->sri->ran->sccp_ran_ops.make_paging_msg(rp->sri, page_id, vsub->imsi, vsub->tmsi, cause);
+ if (osmo_fsm_inst_dispatch(rp->fi, RAN_PEER_EV_MSG_DOWN_CL, l2)) {
+ /* Not allowed to send messages, the peer is not properly connected yet/anymore */
+ LOG_RAN_PEER_CAT(rp, DPAG, LOGL_ERROR,
+ "Paging for %s matched this RAN peer, but emitting a Paging failed\n",
+ gsm0808_cell_id_name(page_id));
+ return 0;
+ }
+ return 1;
+}
diff --git a/src/libmsc/ran_up_l2.c b/src/libmsc/ran_up_l2.c
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/src/libmsc/ran_up_l2.c
diff --git a/src/libmsc/rrlp.c b/src/libmsc/rrlp.c
index 6ff30b748..43b2c75dc 100644
--- a/src/libmsc/rrlp.c
+++ b/src/libmsc/rrlp.c
@@ -27,7 +27,7 @@
#include <osmocom/msc/signal.h>
#include <osmocom/msc/debug.h>
#include <osmocom/msc/gsm_subscriber.h>
-#include <osmocom/msc/ran_conn.h>
+#include <osmocom/msc/msc_a.h>
/* RRLP msPositionReq, nsBased,
* Accuracy=60, Method=gps, ResponseTime=2, oneSet */
@@ -59,9 +59,9 @@ const char *msc_rrlp_mode_name(enum rrlp_mode mode)
return get_value_string(rrlp_mode_names, mode);
}
-static int send_rrlp_req(struct ran_conn *conn)
+static int send_rrlp_req(struct msc_a *msc_a)
{
- struct gsm_network *net = conn->network;
+ struct gsm_network *net = msc_a_net(msc_a);
const uint8_t *req;
switch (net->rrlp.mode) {
@@ -79,27 +79,25 @@ static int send_rrlp_req(struct ran_conn *conn)
return 0;
}
- LOGP(DRR, LOGL_INFO, "Sending '%s' RRLP position request\n",
- msc_rrlp_mode_name(net->rrlp.mode));
+ LOG_MSC_A_CAT(msc_a, DRR, LOGL_INFO, "Sending '%s' RRLP position request\n", msc_rrlp_mode_name(net->rrlp.mode));
- return gsm48_send_rr_app_info(conn, 0x00,
- sizeof(ms_based_pos_req), req);
+ return gsm48_send_rr_app_info(msc_a, 0x00, sizeof(ms_based_pos_req), req);
}
static int subscr_sig_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct vlr_subscr *vsub;
- struct ran_conn *conn;
+ struct msc_a *msc_a;
switch (signal) {
case S_SUBSCR_ATTACHED:
/* A subscriber has attached. */
vsub = signal_data;
- conn = connection_for_subscr(vsub);
- if (!conn)
+ msc_a = msc_a_for_vsub(vsub, true);
+ if (!msc_a)
break;
- send_rrlp_req(conn);
+ send_rrlp_req(msc_a);
break;
}
return 0;
@@ -113,7 +111,7 @@ static int paging_sig_cb(unsigned int subsys, unsigned int signal,
switch (signal) {
case S_PAGING_SUCCEEDED:
/* A subscriber has attached. */
- send_rrlp_req(psig_data->conn);
+ send_rrlp_req(psig_data->msc_a);
break;
case S_PAGING_EXPIRED:
break;
diff --git a/src/libmsc/rtp_stream.c b/src/libmsc/rtp_stream.c
new file mode 100644
index 000000000..fa31ee7e6
--- /dev/null
+++ b/src/libmsc/rtp_stream.c
@@ -0,0 +1,389 @@
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/fsm.h>
+
+#include <osmocom/mgcp_client/mgcp_client_endpoint_fsm.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/transaction.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
+
+#define LOG_RTPS(rtps, level, fmt, args...) \
+ LOGPFSML(rtps->fi, level, fmt, ##args)
+
+enum rtp_stream_event {
+ RTP_STREAM_EV_CRCX_OK,
+ RTP_STREAM_EV_CRCX_FAIL,
+ RTP_STREAM_EV_MDCX_OK,
+ RTP_STREAM_EV_MDCX_FAIL,
+};
+
+enum rtp_stream_state {
+ RTP_STREAM_ST_UNINITIALIZED,
+ RTP_STREAM_ST_ESTABLISHING,
+ RTP_STREAM_ST_ESTABLISHED,
+ RTP_STREAM_ST_DISCARDING,
+};
+
+static struct osmo_fsm rtp_stream_fsm;
+
+static struct osmo_tdef_state_timeout rtp_stream_fsm_timeouts[32] = {
+ [RTP_STREAM_ST_ESTABLISHING] = { .T = -2 },
+};
+
+#define rtp_stream_state_chg(rtps, state) \
+ osmo_tdef_fsm_inst_state_chg((rtps)->fi, state, rtp_stream_fsm_timeouts, g_mgw_tdefs, 5)
+
+static __attribute__((constructor)) void rtp_stream_init()
+{
+ OSMO_ASSERT(osmo_fsm_register(&rtp_stream_fsm) == 0);
+}
+
+void rtp_stream_update_id(struct rtp_stream *rtps)
+{
+ char buf[256];
+ char *p;
+ struct osmo_strbuf sb = { .buf = buf, .len = sizeof(buf) };
+ OSMO_STRBUF_PRINTF(sb, "%s", rtps->fi->proc.parent->id);
+ if (rtps->for_trans)
+ OSMO_STRBUF_PRINTF(sb, ":trans-%u", rtps->for_trans->transaction_id);
+ OSMO_STRBUF_PRINTF(sb, ":call-%u", rtps->call_id);
+ OSMO_STRBUF_PRINTF(sb, ":%s", rtp_direction_name(rtps->dir));
+ if (!osmo_mgcpc_ep_ci_id(rtps->ci)) {
+ OSMO_STRBUF_PRINTF(sb, ":no-CI");
+ } else {
+ OSMO_STRBUF_PRINTF(sb, ":CI-%s", osmo_mgcpc_ep_ci_id(rtps->ci));
+ if (!osmo_sockaddr_str_is_set(&rtps->remote))
+ OSMO_STRBUF_PRINTF(sb, ":no-remote-port");
+ else if (!rtps->remote_sent_to_mgw)
+ OSMO_STRBUF_PRINTF(sb, ":remote-port-not-sent");
+ if (!rtps->codec_known)
+ OSMO_STRBUF_PRINTF(sb, ":no-codec");
+ else if (!rtps->codec_sent_to_mgw)
+ OSMO_STRBUF_PRINTF(sb, ":codec-not-sent");
+ }
+ if (osmo_sockaddr_str_is_set(&rtps->local))
+ OSMO_STRBUF_PRINTF(sb, ":local-%s-%u", rtps->local.ip, rtps->local.port);
+ if (osmo_sockaddr_str_is_set(&rtps->remote))
+ OSMO_STRBUF_PRINTF(sb, ":remote-%s-%u", rtps->remote.ip, rtps->remote.port);
+
+ /* Replace any dots in the IP address, dots not allowed as FSM instance name */
+ for (p = buf; *p; p++)
+ if (*p == '.')
+ *p = '-';
+
+ osmo_fsm_inst_update_id_f(rtps->fi, "%s", buf);
+}
+
+/* Allocate RTP stream under a call leg. This is one RTP connection from some remote entity with address and port to a
+ * local RTP address and port. call_id is stored for sending in MGCP transactions and as logging context. for_trans is
+ * optional, merely stored for reference by callers, and appears as log context if not NULL. */
+struct rtp_stream *rtp_stream_alloc(struct call_leg *parent_call_leg, enum rtp_direction dir,
+ uint32_t call_id, struct gsm_trans *for_trans)
+{
+ struct osmo_fsm_inst *fi;
+ struct rtp_stream *rtps;
+
+ fi = osmo_fsm_inst_alloc_child(&rtp_stream_fsm, parent_call_leg->fi, CALL_LEG_EV_RTP_STREAM_GONE);
+ OSMO_ASSERT(fi);
+
+ rtps = talloc_zero(fi, struct rtp_stream);
+ OSMO_ASSERT(rtps);
+ fi->priv = rtps;
+ *rtps = (struct rtp_stream){
+ .fi = fi,
+ .parent_call_leg = parent_call_leg,
+ .call_id = call_id,
+ .for_trans = for_trans,
+ .dir = dir,
+ };
+
+ rtp_stream_update_id(rtps);
+
+ return rtps;
+}
+
+static void check_established(struct rtp_stream *rtps)
+{
+ if (rtps->fi->state != RTP_STREAM_ST_ESTABLISHED
+ && osmo_sockaddr_str_is_set(&rtps->local)
+ && osmo_sockaddr_str_is_set(&rtps->remote)
+ && rtps->remote_sent_to_mgw
+ && rtps->codec_known)
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_ESTABLISHED);
+}
+
+static void rtp_stream_fsm_establishing_established(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct rtp_stream *rtps = fi->priv;
+ const struct mgcp_conn_peer *crcx_info;
+ switch (event) {
+ case RTP_STREAM_EV_CRCX_OK:
+ crcx_info = osmo_mgcpc_ep_ci_get_rtp_info(rtps->ci);
+ osmo_sockaddr_str_from_str(&rtps->local, crcx_info->addr, crcx_info->port);
+ rtp_stream_update_id(rtps);
+ osmo_fsm_inst_dispatch(fi->proc.parent, CALL_LEG_EV_RTP_STREAM_ADDR_AVAILABLE, rtps);
+ check_established(rtps);
+
+ if ((!rtps->remote_sent_to_mgw || !rtps->codec_sent_to_mgw)
+ && osmo_sockaddr_str_is_set(&rtps->remote)
+ && rtps->codec_known) {
+ LOG_RTPS(rtps, LOGL_DEBUG,
+ "local ip:port set;%s%s triggering MDCX to send the new settings\n",
+ (!rtps->remote_sent_to_mgw)? " remote ip:port not yet sent," : "",
+ (!rtps->codec_sent_to_mgw)? " codec not yet sent," : "");
+ rtp_stream_do_mdcx(rtps);
+ }
+ return;
+
+ case RTP_STREAM_EV_MDCX_OK:
+ rtp_stream_update_id(rtps);
+ check_established(rtps);
+ return;
+
+ case RTP_STREAM_EV_CRCX_FAIL:
+ case RTP_STREAM_EV_MDCX_FAIL:
+ rtps->remote_sent_to_mgw = false;
+ rtps->codec_sent_to_mgw = false;
+ rtp_stream_update_id(rtps);
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_DISCARDING);
+ return;
+
+ default:
+ OSMO_ASSERT(false);
+ };
+}
+
+void rtp_stream_fsm_established_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ struct rtp_stream *rtps = fi->priv;
+ osmo_fsm_inst_dispatch(fi->proc.parent, CALL_LEG_EV_RTP_STREAM_ESTABLISHED, rtps);
+}
+
+static int rtp_stream_fsm_timer_cb(struct osmo_fsm_inst *fi)
+{
+ struct rtp_stream *rtps = fi->priv;
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_DISCARDING);
+ return 0;
+}
+
+static void rtp_stream_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause)
+{
+ struct rtp_stream *rtps = fi->priv;
+ if (rtps->ci) {
+ osmo_mgcpc_ep_ci_dlcx(rtps->ci);
+ rtps->ci = NULL;
+ }
+}
+
+void rtp_stream_fsm_discarding_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
+}
+
+static const struct value_string rtp_stream_fsm_event_names[] = {
+ OSMO_VALUE_STRING(RTP_STREAM_EV_CRCX_OK),
+ OSMO_VALUE_STRING(RTP_STREAM_EV_CRCX_FAIL),
+ OSMO_VALUE_STRING(RTP_STREAM_EV_MDCX_OK),
+ OSMO_VALUE_STRING(RTP_STREAM_EV_MDCX_FAIL),
+ {}
+};
+
+#define S(x) (1 << (x))
+
+static const struct osmo_fsm_state rtp_stream_fsm_states[] = {
+ [RTP_STREAM_ST_UNINITIALIZED] = {
+ .name = "UNINITIALIZED",
+ .out_state_mask = 0
+ | S(RTP_STREAM_ST_ESTABLISHING)
+ | S(RTP_STREAM_ST_DISCARDING)
+ ,
+ },
+ [RTP_STREAM_ST_ESTABLISHING] = {
+ .name = "ESTABLISHING",
+ .in_event_mask = 0
+ | S(RTP_STREAM_EV_CRCX_OK)
+ | S(RTP_STREAM_EV_CRCX_FAIL)
+ | S(RTP_STREAM_EV_MDCX_OK)
+ | S(RTP_STREAM_EV_MDCX_FAIL)
+ ,
+ .out_state_mask = 0
+ | S(RTP_STREAM_ST_ESTABLISHED)
+ | S(RTP_STREAM_ST_DISCARDING)
+ ,
+ .action = rtp_stream_fsm_establishing_established,
+ },
+ [RTP_STREAM_ST_ESTABLISHED] = {
+ .name = "ESTABLISHED",
+ .out_state_mask = 0
+ | S(RTP_STREAM_ST_ESTABLISHING)
+ | S(RTP_STREAM_ST_DISCARDING)
+ ,
+ .onenter = rtp_stream_fsm_established_onenter,
+ .action = rtp_stream_fsm_establishing_established,
+ },
+ [RTP_STREAM_ST_DISCARDING] = {
+ .name = "DISCARDING",
+ .onenter = rtp_stream_fsm_discarding_onenter,
+ .out_state_mask = 0
+ | S(RTP_STREAM_ST_DISCARDING)
+ ,
+ },
+};
+
+static struct osmo_fsm rtp_stream_fsm = {
+ .name = "rtp_stream",
+ .states = rtp_stream_fsm_states,
+ .num_states = ARRAY_SIZE(rtp_stream_fsm_states),
+ .log_subsys = DCC,
+ .event_names = rtp_stream_fsm_event_names,
+ .timer_cb = rtp_stream_fsm_timer_cb,
+ .cleanup = rtp_stream_fsm_cleanup,
+};
+
+static int rtp_stream_do_mgcp_verb(struct rtp_stream *rtps, enum mgcp_verb verb, uint32_t ok_event, uint32_t fail_event)
+{
+ struct mgcp_conn_peer verb_info;
+
+ if (!rtps->ci) {
+ LOG_RTPS(rtps, LOGL_ERROR, "Cannot send %s, no endpoint CI allocated\n", osmo_mgcp_verb_name(verb));
+ return -EINVAL;
+ }
+
+ verb_info = (struct mgcp_conn_peer){
+ .call_id = rtps->call_id,
+ .ptime = 20,
+ };
+
+ if (verb == MGCP_VERB_CRCX)
+ verb_info.conn_mode = rtps->crcx_conn_mode;
+
+ if (rtps->codec_known) {
+ verb_info.codecs[0] = rtps->codec;
+ verb_info.codecs_len = 1;
+ rtps->codec_sent_to_mgw = true;
+ }
+ if (osmo_sockaddr_str_is_set(&rtps->remote)) {
+ int rc = osmo_strlcpy(verb_info.addr, rtps->remote.ip, sizeof(verb_info.addr));
+ if (rc <= 0 || rc >= sizeof(verb_info.addr)) {
+ LOG_RTPS(rtps, LOGL_ERROR, "Failure to write IP address to MGCP message (rc=%d)\n", rc);
+ return -ENOSPC;
+ }
+ verb_info.port = rtps->remote.port;
+ rtps->remote_sent_to_mgw = true;
+ }
+
+ osmo_mgcpc_ep_ci_request(rtps->ci, verb, &verb_info, rtps->fi, ok_event, fail_event, NULL);
+ return 0;
+}
+
+int rtp_stream_ensure_ci(struct rtp_stream *rtps, struct osmo_mgcpc_ep *at_endpoint)
+{
+ if (rtps->ci)
+ return rtp_stream_commit(rtps);
+
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_ESTABLISHING);
+
+ rtps->ci = osmo_mgcpc_ep_ci_add(at_endpoint, "%s", rtp_direction_name(rtps->dir));
+ if (!rtps->ci)
+ return -ENODEV;
+
+ return rtp_stream_do_mgcp_verb(rtps, MGCP_VERB_CRCX, RTP_STREAM_EV_CRCX_OK, RTP_STREAM_EV_CRCX_FAIL);
+}
+
+int rtp_stream_do_mdcx(struct rtp_stream *rtps)
+{
+ return rtp_stream_do_mgcp_verb(rtps, MGCP_VERB_MDCX, RTP_STREAM_EV_MDCX_OK, RTP_STREAM_EV_MDCX_FAIL);
+}
+
+void rtp_stream_release(struct rtp_stream *rtps)
+{
+ if (!rtps)
+ return;
+
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_DISCARDING);
+}
+
+/* After setting up a remote RTP address or a new codec, call this to trigger an MDCX.
+ * The MDCX will only trigger if all data needed by an endpoint is available (both RTP address and codec) and if at
+ * least one of them has not yet been sent to the MGW in a previous CRCX or MDCX. */
+int rtp_stream_commit(struct rtp_stream *rtps)
+{
+ if (!rtps->ci) {
+ LOG_RTPS(rtps, LOGL_DEBUG, "Not committing: no MGW endpoint CI set up\n");
+ return -1;
+ }
+ if (!osmo_sockaddr_str_is_set(&rtps->remote)) {
+ LOG_RTPS(rtps, LOGL_DEBUG, "Not committing: no remote RTP address known\n");
+ return -1;
+ }
+ if (!rtps->codec_known) {
+ LOG_RTPS(rtps, LOGL_DEBUG, "Not committing: no codec known\n");
+ return -1;
+ }
+ if (rtps->remote_sent_to_mgw && rtps->codec_sent_to_mgw) {
+ LOG_RTPS(rtps, LOGL_DEBUG, "Not committing: both remote RTP address and codec already set up at MGW\n");
+ return 0;
+ }
+
+ LOG_RTPS(rtps, LOGL_DEBUG, "Committing: Tx MDCX to update the MGW: updating%s%s\n",
+ rtps->remote_sent_to_mgw ? "" : " remote-RTP-IP-port",
+ rtps->codec_sent_to_mgw ? "" : " codec");
+ return rtp_stream_do_mdcx(rtps);
+}
+
+void rtp_stream_set_codec(struct rtp_stream *rtps, enum mgcp_codecs codec)
+{
+ if (rtps->fi->state == RTP_STREAM_ST_ESTABLISHED)
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_ESTABLISHING);
+ LOG_RTPS(rtps, LOGL_DEBUG, "setting codec to %s\n", osmo_mgcpc_codec_name(codec));
+ rtps->codec = codec;
+ rtps->codec_known = true;
+ rtps->codec_sent_to_mgw = false;
+ rtp_stream_update_id(rtps);
+}
+
+void rtp_stream_set_remote_addr(struct rtp_stream *rtps, const struct osmo_sockaddr_str *r)
+{
+ if (rtps->fi->state == RTP_STREAM_ST_ESTABLISHED)
+ rtp_stream_state_chg(rtps, RTP_STREAM_ST_ESTABLISHING);
+ LOG_RTPS(rtps, LOGL_DEBUG, "setting remote addr to " OSMO_SOCKADDR_STR_FMT "\n", OSMO_SOCKADDR_STR_FMT_ARGS(r));
+ rtps->remote = *r;
+ rtps->remote_sent_to_mgw = false;
+ rtp_stream_update_id(rtps);
+}
+
+bool rtp_stream_is_established(struct rtp_stream *rtps)
+{
+ if (!rtps)
+ return false;
+ if (!rtps->fi)
+ return false;
+ if (rtps->fi->state != RTP_STREAM_ST_ESTABLISHED)
+ return false;
+ if (!rtps->remote_sent_to_mgw
+ || !rtps->codec_sent_to_mgw)
+ return false;
+ return true;
+}
diff --git a/src/libmsc/sccp_ran.c b/src/libmsc/sccp_ran.c
new file mode 100644
index 000000000..38ece550e
--- /dev/null
+++ b/src/libmsc/sccp_ran.c
@@ -0,0 +1,216 @@
+/*
+ * (C) 2019 by sysmocom - s.m.f.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * SPDX-License-Identifier: AGPL-3.0+
+ *
+ * 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 <osmocom/core/logging.h>
+
+#include <osmocom/sccp/sccp_types.h>
+#include <osmocom/sigtran/sccp_sap.h>
+#include <osmocom/sigtran/sccp_helpers.h>
+
+#include <osmocom/msc/debug.h>
+#include <osmocom/msc/sccp_ran.h>
+#include <osmocom/msc/ran_infra.h>
+
+struct osmo_tdef g_sccp_tdefs[] = {
+ {}
+};
+
+static int sccp_ran_sap_up(struct osmo_prim_hdr *oph, void *_scu);
+
+struct sccp_ran_inst *sccp_ran_init(void *talloc_ctx, struct osmo_sccp_instance *sccp, enum osmo_sccp_ssn ssn,
+ const char *sccp_user_name, struct ran_infra *ran, void *user_data)
+{
+ struct sccp_ran_inst *sri = talloc_zero(talloc_ctx, struct sccp_ran_inst);
+ *sri = (struct sccp_ran_inst){
+ .ran = ran,
+ .sccp = sccp,
+ .user_data = user_data,
+ };
+
+ INIT_LLIST_HEAD(&sri->ran_peers);
+ INIT_LLIST_HEAD(&sri->ran_conns);
+
+ osmo_sccp_local_addr_by_instance(&sri->local_sccp_addr, sccp, ssn);
+ sri->scu = osmo_sccp_user_bind(sccp, sccp_user_name, sccp_ran_sap_up, ssn);
+ osmo_sccp_user_set_priv(sri->scu, sri);
+
+ OSMO_ASSERT(!ran->sri);
+ ran->sri = sri;
+
+ return sri;
+}
+
+static int sccp_ran_sap_up(struct osmo_prim_hdr *oph, void *_scu)
+{
+ struct osmo_sccp_user *scu = _scu;
+ struct sccp_ran_inst *sri = osmo_sccp_user_get_priv(scu);
+ struct osmo_scu_prim *prim = (struct osmo_scu_prim *) oph;
+ struct osmo_sccp_addr *my_addr;
+ struct osmo_sccp_addr *peer_addr;
+ uint32_t conn_id;
+ int rc;
+
+ if (!sri->ran || !sri->ran->sccp_ran_ops.up_l2) {
+ LOG_SCCP_RAN_CL(sri, NULL, LOGL_ERROR, "This RAN type is not set up\n");
+ msgb_free(oph->msg);
+ return -1;
+ }
+
+ switch (OSMO_PRIM_HDR(oph)) {
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_INDICATION):
+ /* indication of new inbound connection request */
+ conn_id = prim->u.connect.conn_id;
+ my_addr = &prim->u.connect.called_addr;
+ peer_addr = &prim->u.connect.calling_addr;
+ LOG_SCCP_RAN_CO(sri, peer_addr, conn_id, LOGL_DEBUG, "%s(%s)\n", __func__, osmo_scu_prim_name(oph));
+
+ if (!msgb_l2(oph->msg) || msgb_l2len(oph->msg) == 0) {
+ LOG_SCCP_RAN_CO(sri, peer_addr, conn_id, LOGL_NOTICE, "Received invalid N-CONNECT.ind\n");
+ rc = -1;
+ break;
+ }
+
+ if (osmo_sccp_addr_ri_cmp(&sri->local_sccp_addr, my_addr))
+ LOG_SCCP_RAN_CO(sri, NULL, conn_id, LOGL_INFO,
+ "Called address is %s which is not the locally configured address\n",
+ osmo_sccp_inst_addr_name(sri->sccp, my_addr));
+
+ /* ensure the local SCCP socket is ACTIVE */
+ osmo_sccp_tx_conn_resp(scu, conn_id, my_addr, NULL, 0);
+
+ rc = sri->ran->sccp_ran_ops.up_l2(sri, peer_addr, true, conn_id, oph->msg);
+ if (rc)
+ osmo_sccp_tx_disconn(scu, conn_id, my_addr, SCCP_RETURN_CAUSE_UNQUALIFIED);
+ break;
+
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DATA, PRIM_OP_INDICATION):
+ /* connection-oriented data received */
+ conn_id = prim->u.data.conn_id;
+ LOG_SCCP_RAN_CO(sri, NULL, conn_id, LOGL_DEBUG, "%s(%s)\n", __func__, osmo_scu_prim_name(oph));
+
+ rc = sri->ran->sccp_ran_ops.up_l2(sri, NULL, true, conn_id, oph->msg);
+ break;
+
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_DISCONNECT, PRIM_OP_INDICATION):
+ /* indication of disconnect */
+ conn_id = prim->u.disconnect.conn_id;
+ LOG_SCCP_RAN_CO(sri, NULL, conn_id, LOGL_DEBUG, "%s(%s)\n", __func__, osmo_scu_prim_name(oph));
+
+ /* If there is no L2 payload in the N-DISCONNECT, no need to dispatch up_l2(). */
+ if (msgb_l2len(oph->msg))
+ rc = sri->ran->sccp_ran_ops.up_l2(sri, NULL, true, conn_id, oph->msg);
+ else
+ rc = 0;
+
+ /* Make sure the ran_conn is dropped. It might seem more optimal to combine the disconnect() into
+ * up_l2(), but since an up_l2() dispatch might already cause the ran_conn to be discarded for other
+ * reasons, a separate disconnect() with a separate conn_id lookup is actually necessary. */
+ sri->ran->sccp_ran_ops.disconnect(sri, conn_id);
+ break;
+
+ case OSMO_PRIM(OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_INDICATION):
+ /* connection-less data received */
+ my_addr = &prim->u.unitdata.called_addr;
+ peer_addr = &prim->u.unitdata.calling_addr;
+ LOG_SCCP_RAN_CL(sri, peer_addr, LOGL_DEBUG, "%s(%s)\n", __func__, osmo_scu_prim_name(oph));
+
+ if (osmo_sccp_addr_ri_cmp(&sri->local_sccp_addr, my_addr))
+ LOG_SCCP_RAN_CL(sri, NULL, LOGL_INFO,
+ "Called address is %s which is not the locally configured address\n",
+ osmo_sccp_inst_addr_name(sri->sccp, my_addr));
+
+ rc = sri->ran->sccp_ran_ops.up_l2(sri, peer_addr, false, 0, oph->msg);
+ break;
+
+ default:
+ LOG_SCCP_RAN_CL(sri, NULL, LOGL_DEBUG, "%s(%s)\n", __func__, osmo_scu_prim_name(oph));
+ rc = -1;
+ break;
+ }
+
+ msgb_free(oph->msg);
+ return rc;
+}
+
+/* Push some padding if necessary to reach a multiple-of-eight offset to be msgb_push() an osmo_scu_prim that will then
+ * be 8-byte aligned. */
+static void msgb_pad_mod8(struct msgb *msg)
+{
+ uint8_t mod8 = (intptr_t)(msg->data) % 8;
+ if (mod8)
+ msgb_push(msg, mod8);
+}
+
+int sccp_ran_down_l2_co_initial(struct sccp_ran_inst *sri,
+ const struct osmo_sccp_addr *called_addr,
+ uint32_t conn_id, struct msgb *l2)
+{
+ struct osmo_scu_prim *prim;
+
+ l2->l2h = l2->data;
+
+ msgb_pad_mod8(l2);
+ prim = (struct osmo_scu_prim *) msgb_push(l2, sizeof(*prim));
+ prim->u.connect = (struct osmo_scu_connect_param){
+ .called_addr = *called_addr,
+ .calling_addr = sri->local_sccp_addr,
+ .sccp_class = 2,
+ //.importance = ?,
+ .conn_id = conn_id,
+ };
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER, OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_REQUEST, l2);
+ return osmo_sccp_user_sap_down_nofree(sri->scu, &prim->oph);
+}
+
+int sccp_ran_down_l2_co(struct sccp_ran_inst *sri, uint32_t conn_id, struct msgb *l2)
+{
+ struct osmo_scu_prim *prim;
+
+ l2->l2h = l2->data;
+
+ msgb_pad_mod8(l2);
+ prim = (struct osmo_scu_prim *) msgb_push(l2, sizeof(*prim));
+ prim->u.data.conn_id = conn_id;
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER, OSMO_SCU_PRIM_N_DATA, PRIM_OP_REQUEST, l2);
+ return osmo_sccp_user_sap_down_nofree(sri->scu, &prim->oph);
+}
+
+int sccp_ran_down_l2_cl(struct sccp_ran_inst *sri, const struct osmo_sccp_addr *called_addr, struct msgb *l2)
+{
+ struct osmo_scu_prim *prim;
+
+ l2->l2h = l2->data;
+
+ msgb_pad_mod8(l2);
+ prim = (struct osmo_scu_prim *) msgb_push(l2, sizeof(*prim));
+ prim->u.unitdata = (struct osmo_scu_unitdata_param){
+ .called_addr = *called_addr,
+ .calling_addr = sri->local_sccp_addr,
+ };
+ osmo_prim_init(&prim->oph, SCCP_SAP_USER, OSMO_SCU_PRIM_N_UNITDATA, PRIM_OP_REQUEST, l2);
+ return osmo_sccp_user_sap_down_nofree(sri->scu, &prim->oph);
+}
+
+int sccp_ran_disconnect(struct sccp_ran_inst *sri, uint32_t conn_id, uint32_t cause)
+{
+ return osmo_sccp_tx_disconn(sri->scu, conn_id, NULL, cause);
+}
diff --git a/src/libmsc/sgs_iface.c b/src/libmsc/sgs_iface.c
index 8b4b61d30..d83a730ef 100644
--- a/src/libmsc/sgs_iface.c
+++ b/src/libmsc/sgs_iface.c
@@ -36,13 +36,14 @@
#include <osmocom/msc/vlr.h>
#include <osmocom/msc/vlr_sgs.h>
#include <osmocom/msc/gsm_data.h>
-#include <osmocom/msc/a_iface.h>
#include <osmocom/msc/gsm_04_08.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_i.h>
#include <osmocom/msc/debug.h>
#include <osmocom/msc/sgs_iface.h>
#include <osmocom/msc/sgs_server.h>
-#include <osmocom/msc/msc_ifaces.h>
#include <osmocom/gsm/protocol/gsm_29_118.h>
#include <osmocom/gsm/apn.h>
@@ -88,44 +89,43 @@ enum sgs_vlr_reset_fsm_event {
***********************************************************************/
/* Allocate a new subscriber connection */
-static struct ran_conn *subscr_conn_allocate_sgs(struct sgs_connection *sgc, struct vlr_subscr *vsub, bool mt)
+static struct msc_a *subscr_conn_allocate_sgs(struct sgs_connection *sgc, struct vlr_subscr *vsub, bool mt)
{
- struct ran_conn *conn;
+ struct msub *msub;
+ struct msc_a *msc_a;
- conn = ran_conn_alloc(gsm_network, OSMO_RAT_EUTRAN_SGS, vsub->sgs.lai.lac);
- if (!conn) {
- LOGSGC_VSUB(sgc, vlr_subscr_name(vsub), LOGL_ERROR, "Connection allocation failed\n");
- return NULL;
- }
+ msub = msub_alloc(gsm_network);
+ msc_a = msc_a_alloc(msub,
+ &msc_ran_infra[OSMO_RAT_EUTRAN_SGS]);
+ msc_a->complete_layer3_type = mt ? COMPLETE_LAYER3_PAGING_RESP : COMPLETE_LAYER3_CM_SERVICE_REQ;
+ msub_set_vsub(msub, vsub);
- vlr_subscr_get(vsub, VSUB_USE_CONN);
- conn->vsub = vsub;
- conn->vsub->cs.attached_via_ran = conn->via_ran;
+ if (mt)
+ msc_a_get(msc_a, MSC_A_USE_PAGING_RESPONSE);
/* Accept the connection immediately, since the UE is already
* authenticated by the MME no authentication is required. */
- conn->complete_layer3_type = mt ? COMPLETE_LAYER3_PAGING_RESP : COMPLETE_LAYER3_CM_SERVICE_REQ;
- ran_conn_update_id(conn);
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_COMPLETE_LAYER_3, NULL);
- osmo_fsm_inst_dispatch(conn->fi, RAN_CONN_E_ACCEPTED, NULL);
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_COMPLETE_LAYER_3_OK, NULL);
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_AUTHENTICATED, NULL);
- LOG_RAN_CONN(conn, LOGL_DEBUG, "RAN connection successfully allocated!\n");
- return conn;
+ return msc_a;
}
/* Check if there are connections associated with a given subscriber. If yes,
* make sure that those connections are tossed. */
static void subscr_conn_toss(struct vlr_subscr *vsub)
{
- struct ran_conn *conn;
+ struct msub *msub;
- conn = connection_for_subscr(vsub);
- if (!conn)
+ msub = msub_for_vsub(vsub);
+ if (!msub)
return;
- LOG_RAN_CONN(conn, LOGL_DEBUG, "RAN connection tossed because of unexpected RAN change!\n");
+ LOG_MSUB(msub, LOGL_ERROR, "Force releasing previous subscriber connection: an SGs connection for this"
+ " subscriber is being initiated\n");
- ran_conn_mo_close(conn, GSM48_REJECT_CONGESTION);
+ msc_a_release_mo(msub_msc_a(msub), GSM48_REJECT_CONGESTION);
+ /* TODO: is this strong enough? After this, it should be completely disassociated with this subscriber. */
}
struct sgs_mme_ctx *sgs_mme_by_fqdn(struct sgs_state *sgs, const char *mme_fqdn)
@@ -426,6 +426,25 @@ static void sgs_tx_mm_info_cb(struct vlr_subscr *vsub)
msgb_free(msg_mm_info);
}
+enum sgsap_service_ind sgs_serv_ind_from_paging_cause(enum paging_cause cause)
+{
+ switch (cause) {
+ case PAGING_CAUSE_CALL_CONVERSATIONAL:
+ case PAGING_CAUSE_CALL_STREAMING:
+ case PAGING_CAUSE_CALL_INTERACTIVE:
+ case PAGING_CAUSE_CALL_BACKGROUND:
+ return SGSAP_SERV_IND_CS_CALL;
+
+ case PAGING_CAUSE_UNSPECIFIED:
+ case PAGING_CAUSE_SIGNALLING_LOW_PRIO:
+ case PAGING_CAUSE_SIGNALLING_HIGH_PRIO:
+ return SGSAP_SERV_IND_SMS;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
/*! Page UE through SGs interface
* \param[in] vsub subscriber context
* \param[in] serv_ind service indicator (sms or voide)
@@ -436,13 +455,20 @@ int sgs_iface_tx_paging(struct vlr_subscr *vsub, enum sgsap_service_ind serv_ind
struct gsm29118_paging_req paging_params;
struct sgs_mme_ctx *mme;
+ LOGP(DMSC, LOGL_NOTICE, "XXXXXXXXXX state == %d conf_by_radio_contact_ind == %d\n",
+ vsub->sgs_fsm->state, vsub->conf_by_radio_contact_ind);
+
/* See also: 3GPP TS 29.118, chapter 5.1.2.2 Paging Initiation */
- if (vsub->sgs_fsm->state == SGS_UE_ST_NULL && vsub->conf_by_radio_contact_ind == true)
+ if (vsub->sgs_fsm->state == SGS_UE_ST_NULL && vsub->conf_by_radio_contact_ind == true) {
+ LOGPFSMSL(vsub->sgs_fsm, DPAG, LOGL_ERROR, "Will not Page (conf_by_radio_contact_ind == true)\n");
return -EINVAL;
+ }
mme = sgs_mme_ctx_by_vsub(vsub, SGSAP_MSGT_PAGING_REQ);
- if (!mme)
+ if (!mme) {
+ LOGPFSMSL(vsub->sgs_fsm, DPAG, LOGL_ERROR, "Will not Page (no MME)\n");
return -EINVAL;
+ }
/* Check if there is still a paging in progress for this subscriber,
* if yes, don't initiate another paging request. */
@@ -690,7 +716,7 @@ static int sgs_rx_pag_rej(struct sgs_connection *sgc, struct msgb *msg, const st
vlr_sgs_pag_rej(gsm_network->vlr, imsi, cause);
/* Stop all paging activity */
- subscr_paging_cancel(vsub, GSM_PAGING_EXPIRED);
+ paging_expired(vsub);
/* Depending on the cause code some action is required */
if (cause == SGSAP_SGS_CAUSE_MT_CSFB_REJ_USER) {
@@ -735,7 +761,7 @@ static int sgs_rx_service_req(struct sgs_connection *sgc, struct msgb *msg, cons
{
enum sgsap_service_ind serv_ind;
const uint8_t *serv_ind_ie;
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct vlr_subscr *vsub;
/* Note: While in other RAN concepts a service request is used to
@@ -788,13 +814,13 @@ static int sgs_rx_service_req(struct sgs_connection *sgc, struct msgb *msg, cons
}
/* Allocate subscriber connection */
- conn = subscr_conn_allocate_sgs(sgc, vsub, true);
- if (!conn) {
+ msc_a = subscr_conn_allocate_sgs(sgc, vsub, true);
+ if (!msc_a) {
vlr_subscr_put(vsub, __func__);
return sgs_tx_status(sgc, imsi, SGSAP_SGS_CAUSE_MSG_INCOMP_STATE, msg, -1);
}
- /* The conn has added a get() for the vsub, balance above vlr_subscr_find_by_imsi() */
+ /* The msub has added a get() for the vsub, balance above vlr_subscr_find_by_imsi() */
vlr_subscr_put(vsub, __func__);
return 0;
}
@@ -802,8 +828,7 @@ static int sgs_rx_service_req(struct sgs_connection *sgc, struct msgb *msg, cons
/* SGsAP-UPLINK-UNITDATA 3GPP TS 29.118, chapter 8.22 */
static int sgs_rx_ul_ud(struct sgs_connection *sgc, struct msgb *msg, const struct tlv_parsed *tp, char *imsi)
{
- struct dtap_header *dtap;
- struct ran_conn *conn;
+ struct msc_a *msc_a;
const uint8_t *nas_msg_container_ie;
struct vlr_subscr *vsub;
@@ -816,39 +841,31 @@ static int sgs_rx_ul_ud(struct sgs_connection *sgc, struct msgb *msg, const stru
OSMO_ASSERT(vsub);
/* Try to find existing connection (MT) or allocate a new one (MO) */
- conn = connection_for_subscr(vsub);
- if (!conn) {
- conn = subscr_conn_allocate_sgs(sgc, vsub, false);
- } else {
- if (conn->via_ran != OSMO_RAT_EUTRAN_SGS) {
- LOGSGC(sgc, LOGL_ERROR,
- "Receiving uplink unit-data for non-sgs connection -- discarding message!\n");
- msgb_free(msg);
- return 0;
- }
- }
+ msc_a = msc_a_for_vsub(vsub, true);
+ if (!msc_a)
+ msc_a = subscr_conn_allocate_sgs(sgc, vsub, false);
/* Balance above vlr_subscr_find_by_imsi() */
vlr_subscr_put(vsub, __func__);
/* If we do not find an existing connection and allocating a new one
* faild, give up and return status. */
- if (!conn) {
+ if (!msc_a)
return sgs_tx_status(sgc, imsi, SGSAP_SGS_CAUSE_MSG_INCOMP_STATE, msg, 0);
+
+ if (msc_a->c.ran->type != OSMO_RAT_EUTRAN_SGS) {
+ LOGSGC(sgc, LOGL_ERROR,
+ "Receiving uplink unit-data for non-sgs connection -- discarding message!\n");
+ return -EINVAL;
}
nas_msg_container_ie = TLVP_VAL_MINLEN(tp, SGSAP_IE_NAS_MSG_CONTAINER, 1);
- if (!nas_msg_container_ie) {
+ if (!nas_msg_container_ie)
return sgs_tx_status(sgc, imsi, SGSAP_SGS_CAUSE_MISSING_MAND_IE, msg, SGSAP_IE_NAS_MSG_CONTAINER);
- }
/* ran_conn_dtap expects the dtap payload in l3h */
- dtap = (struct dtap_header *)nas_msg_container_ie;
- msg->l3h = (uint8_t *) nas_msg_container_ie;
- OMSC_LINKID_CB(msg) = dtap->link_id;
-
- /* Forward dtap payload into the msc */
- ran_conn_dtap(conn, msg);
+ msg->l3h = (uint8_t *)nas_msg_container_ie;
+ msc_a_up_l3(msc_a, msg);
return 0;
}
@@ -1180,22 +1197,14 @@ static struct osmo_fsm sgs_vlr_reset_fsm = {
/*! Send unit-data through SGs interface (see msc_ifaces.c)
* \param[in] msg layer 3 message to send.
* \returns 0 in case of success, -EINVAL in case of error. */
-int sgs_iface_tx_dtap_ud(struct msgb *msg)
+int sgs_iface_tx_dtap_ud(struct msc_a *msc_a, struct msgb *msg)
{
- struct ran_conn *conn;
- struct vlr_subscr *vsub;
struct msgb *msg_sgs;
struct sgs_mme_ctx *mme;
int rc = -EINVAL;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
- /* This function expects a pointer to the related gsm subscriber
- * connection (conn) in msg->dst. Also conn->vsub must point to
- * the related subscriber */
-
- OSMO_ASSERT(msg->dst);
- conn = msg->dst;
- OSMO_ASSERT(conn->vsub);
- vsub = conn->vsub;
+ OSMO_ASSERT(vsub);
mme = sgs_mme_ctx_by_vsub(vsub, SGSAP_MSGT_DL_UD);
if (!mme)
@@ -1204,8 +1213,8 @@ int sgs_iface_tx_dtap_ud(struct msgb *msg)
/* Make sure the subscriber has a valid SGs association, otherwise
* don't let unit-data through. */
if (vsub->sgs_fsm->state != SGS_UE_ST_ASSOCIATED) {
- LOG_RAN_CONN(conn, LOGL_NOTICE, "Tx %s subscriber not SGs-associated, dropping\n",
- sgsap_msg_type_name(SGSAP_MSGT_DL_UD));
+ LOG_MSC_A(msc_a, LOGL_NOTICE, "Cannot Tx %s: subscriber not SGs-associated\n",
+ sgsap_msg_type_name(SGSAP_MSGT_DL_UD));
goto error;
}
@@ -1218,21 +1227,12 @@ error:
return rc;
}
-/*! Send a relase message through SGs interface (see msc_ifaces.c)
- * \param[in] msg layer 3 message to send.
- * \returns 0 in case of success, -EINVAL in case of error. */
-void sgs_iface_tx_release(struct ran_conn *conn)
+void sgs_iface_tx_release(struct vlr_subscr *vsub)
{
struct msgb *msg_sgs;
- struct vlr_subscr *vsub;
struct sgs_mme_ctx *mme;
- /*! Use this function to release an SGs connection normally
- * (cause code is 0). This function also automatically causes
- * the VLR subscriber usage to be balanced. */
-
- OSMO_ASSERT(conn->vsub);
- vsub = conn->vsub;
+ OSMO_ASSERT(vsub);
mme = sgs_mme_ctx_by_vsub(vsub, SGSAP_MSGT_DL_UD);
if (!mme)
diff --git a/src/libmsc/sgs_server.c b/src/libmsc/sgs_server.c
index 56f1548cb..28c42cbb5 100644
--- a/src/libmsc/sgs_server.c
+++ b/src/libmsc/sgs_server.c
@@ -18,6 +18,8 @@
*
*/
+#include <errno.h>
+
#include <osmocom/msc/sgs_iface.h>
#include <osmocom/msc/debug.h>
#include <osmocom/msc/sgs_server.h>
diff --git a/src/libmsc/silent_call.c b/src/libmsc/silent_call.c
index 14974f338..3b95a901f 100644
--- a/src/libmsc/silent_call.c
+++ b/src/libmsc/silent_call.c
@@ -32,115 +32,59 @@
#include <osmocom/msc/gsm_data.h>
#include <osmocom/msc/gsm_subscriber.h>
#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/paging.h>
+#include <osmocom/msc/transaction.h>
+#include <osmocom/msc/silent_call.h>
#include <osmocom/sigtran/sccp_helpers.h>
-struct silent_call_data {
- struct gsm0808_channel_type ct;
-
- char traffic_ip[INET_ADDRSTRLEN];
- uint16_t traffic_port;
-
- void *data;
-
- struct osmo_timer_list timer;
- struct ran_conn *conn;
-};
-
-static void timer_cb(void *data)
-{
- struct silent_call_data *scd = (struct silent_call_data *)data;
- ran_conn_communicating(scd->conn);
- talloc_free(scd);
-}
-
/* paging of the requested subscriber has completed */
-static int paging_cb_silent(unsigned int hooknum, unsigned int event,
- struct msgb *msg, void *_conn, void *_data)
+void paging_cb_silent(struct msc_a *msc_a, struct gsm_trans *trans)
{
- struct silent_call_data *scd = (struct silent_call_data *)_data;
- struct ran_conn *conn = _conn;
- struct scall_signal_data sigdata;
- struct msgb *msg_ass;
- int rc = 0;
- int i;
-
- if (hooknum != GSM_HOOK_RR_PAGING)
- return -EINVAL;
-
- DEBUGP(DLSMS, "paging_cb_silent: ");
-
- sigdata.conn = conn;
- sigdata.data = scd->data;
+ struct scall_signal_data sigdata = {
+ .msc_a = msc_a,
+ .vty = trans->silent_call.from_vty,
+ };
+ struct ran_msg assignment;
+
+ if (!msc_a) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Silent call: MS not responding to Paging\n");
+ osmo_signal_dispatch(SS_SCALL, S_SCALL_FAILED, &sigdata);
+ trans_free(trans);
+ return;
+ }
- switch (event) {
- case GSM_PAGING_SUCCEEDED:
-#if BEFORE_MSCSPLIT
- /* Re-enable this log output once we can obtain this information via
- * A-interface, see OS#2391. */
- DEBUGPC(DLSMS, "success, using Timeslot %u on ARFCN %u\n",
- conn->lchan->ts->nr, conn->lchan->ts->trx->arfcn);
-#endif
- conn->silent_call = 1;
-
- /* Increment lchan reference count and mark as active*/
- ran_conn_get(conn, RAN_CONN_USE_SILENT_CALL);
-
- /* Schedule a timer to mark it as active */
- /* This is a hack we we can't call ran_conn_communicating
- * from here because we're in the call back context of
- * a RAN FSM event but before it actually changes its own
- * state and it's not ready to accept this.
- * Of all alternatives considered, making the call in an
- * 'immediate timer' is the least disruptive and least ugly
- * way to do it I could find.
- */
- scd->conn = conn;
- osmo_timer_setup(&scd->timer, timer_cb, scd);
- osmo_timer_schedule(&scd->timer, 0, 0);
-
- /* Manually craft an assignement message with requested mode */
- if (scd->ct.ch_indctr == GSM0808_CHAN_SPEECH) {
- struct gsm0808_speech_codec_list scl;
- union {
- struct sockaddr_storage st;
- struct sockaddr_in in;
- } rtp_addr;
-
- memset(&rtp_addr, 0, sizeof(rtp_addr));
- rtp_addr.in.sin_family = AF_INET;
- rtp_addr.in.sin_port = osmo_htons(scd->traffic_port);
- rtp_addr.in.sin_addr.s_addr = inet_addr(scd->traffic_ip);
-
- for (i = 0; i < scd->ct.perm_spch_len; i++)
- gsm0808_speech_codec_from_chan_type(&scl.codec[i], scd->ct.perm_spch[i]);
- scl.len = scd->ct.perm_spch_len;
-
- msg_ass = gsm0808_create_ass(&scd->ct, NULL, &rtp_addr.st, &scl, NULL);
- } else {
- msg_ass = gsm0808_create_ass(&scd->ct, NULL, NULL, NULL, NULL);
- }
-
- /* Send assignement message, hoping it will work */
- osmo_sccp_tx_data_msg(conn->a.scu, conn->a.conn_id, msg_ass);
-
- /* Signal completion */
+ LOG_MSC_A(msc_a, LOGL_INFO, "Silent call: MS responding to Paging\n");
+
+ trans->msc_a = msc_a;
+ msc_a_get(msc_a, MSC_A_USE_SILENT_CALL);
+
+ osmo_fsm_inst_dispatch(msc_a->c.fi, MSC_A_EV_TRANSACTION_ACCEPTED, trans);
+
+ assignment = (struct ran_msg){
+ .msg_type = RAN_MSG_ASSIGNMENT_COMMAND,
+ .assignment_command = {
+ .channel_type = &trans->silent_call.ct,
+ .cn_rtp = &trans->silent_call.rtp_cn,
+ },
+ };
+ if (msc_a_ran_down(msc_a, MSC_ROLE_I, &assignment)) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Silent call failed\n");
+ osmo_signal_dispatch(SS_SCALL, S_SCALL_FAILED, &sigdata);
+ trans_free(trans);
+ } else {
osmo_signal_dispatch(SS_SCALL, S_SCALL_SUCCESS, &sigdata);
- return 0;
-
- case GSM_PAGING_EXPIRED:
- case GSM_PAGING_BUSY:
- DEBUGP(DLSMS, "expired\n");
- osmo_signal_dispatch(SS_SCALL, S_SCALL_EXPIRED, &sigdata);
- break;
- default:
- rc = -EINVAL;
- break;
}
+}
- talloc_free(scd);
-
- return rc;
+void trans_silent_call_free(struct gsm_trans *trans)
+{
+ struct scall_signal_data sigdata = {
+ .msc_a = trans->msc_a,
+ .vty = trans->silent_call.from_vty,
+ };
+ osmo_signal_dispatch(SS_SCALL, S_SCALL_DETACHED, &sigdata);
}
#if 0
@@ -193,27 +137,20 @@ int silent_call_reroute(struct ran_conn *conn, struct msgb *msg)
int gsm_silent_call_start(struct vlr_subscr *vsub,
const struct gsm0808_channel_type *ct,
const char *traffic_dst_ip, uint16_t traffic_dst_port,
- void *data)
+ struct vty *vty)
{
- struct subscr_request *req;
- struct silent_call_data *scd;
-
- scd = talloc_zero(vsub, struct silent_call_data);
-
- memcpy(&scd->ct, ct, sizeof(scd->ct));
+ struct gsm_network *net = vsub->vlr->user_ctx;
+ struct gsm_trans *trans = trans_alloc(net, vsub, TRANS_SILENT_CALL, 0, 0);
+ trans->silent_call.ct = *ct;
if (traffic_dst_ip) {
- osmo_strlcpy(scd->traffic_ip, traffic_dst_ip, sizeof(scd->traffic_ip));
- scd->traffic_port = traffic_dst_port;
+ osmo_sockaddr_str_from_str(&trans->silent_call.rtp_cn, traffic_dst_ip, traffic_dst_port);
}
+ trans->silent_call.from_vty = vty;
- scd->data = data;
-
- req = subscr_request_conn(vsub, paging_cb_silent, scd,
- "establish silent call",
- SGSAP_SERV_IND_CS_CALL);
- if (!req) {
- talloc_free(scd);
+ if (!paging_request_start(vsub, PAGING_CAUSE_CALL_BACKGROUND, paging_cb_silent, trans,
+ "establish silent call")) {
+ trans_free(trans);
return -ENODEV;
}
@@ -223,31 +160,21 @@ int gsm_silent_call_start(struct vlr_subscr *vsub,
/* end a silent call with a given subscriber */
int gsm_silent_call_stop(struct vlr_subscr *vsub)
{
- struct ran_conn *conn;
-
- conn = connection_for_subscr(vsub);
- if (!conn) {
+ struct msc_a *msc_a = msc_a_for_vsub(vsub, true);
+ struct gsm_trans *trans;
+ if (!msc_a) {
LOGP(DMM, LOGL_ERROR, "%s: Cannot stop silent call, no connection for subscriber\n",
vlr_subscr_name(vsub));
return -ENODEV;
}
/* did we actually establish a silent call for this guy? */
- if (!conn->silent_call) {
- LOGP(DMM, LOGL_ERROR, "%s: Cannot stop silent call, subscriber has no active silent call\n",
- vlr_subscr_name(vsub));
+ trans = trans_find_by_type(msc_a, TRANS_SILENT_CALL);
+ if (!trans) {
+ LOG_MSC_A(msc_a, LOGL_ERROR, "Cannot stop silent call, subscriber has no active silent call\n");
return -ENOENT;
}
-#if BEFORE_MSCSPLIT
- /* Re-enable this log output once we can obtain this information via
- * A-interface, see OS#2391. */
- DEBUGPC(DLSMS, "Stopping silent call using Timeslot %u on ARFCN %u\n",
- conn->lchan->ts->nr, conn->lchan->ts->trx->arfcn);
-#endif
-
- conn->silent_call = 0;
- ran_conn_put(conn, RAN_CONN_USE_SILENT_CALL);
-
+ trans_free(trans);
return 0;
}
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c
index 151c788b2..e6eb0102a 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -45,6 +45,7 @@
#include <osmocom/msc/transaction.h>
#include <osmocom/msc/gsm_subscriber.h>
#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msc_a.h>
#include "smpp_smsc.h"
@@ -556,22 +557,21 @@ void smpp_cmd_flush_pending(struct osmo_esme *esme)
void smpp_cmd_ack(struct osmo_smpp_cmd *cmd)
{
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct gsm_trans *trans;
if (cmd->is_report)
goto out;
- conn = connection_for_subscr(cmd->vsub);
- if (!conn) {
- LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber anymore\n");
+ msc_a = msc_a_for_vsub(cmd->vsub, true);
+ if (!msc_a) {
+ LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber %s\n", vlr_subscr_name(cmd->vsub));
goto out;
}
- trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id);
+ trans = trans_find_by_id(msc_a, TRANS_SMS, cmd->gsm411_trans_id);
if (!trans) {
- LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
- cmd->gsm411_trans_id);
+ LOG_MSC_A_CAT(msc_a, DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n", cmd->gsm411_trans_id);
goto out;
}
@@ -582,23 +582,23 @@ out:
void smpp_cmd_err(struct osmo_smpp_cmd *cmd, uint32_t status)
{
- struct ran_conn *conn;
+ struct msc_a *msc_a;
struct gsm_trans *trans;
int gsm411_cause;
if (cmd->is_report)
goto out;
- conn = connection_for_subscr(cmd->vsub);
- if (!conn) {
- LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber anymore\n");
+ msc_a = msc_a_for_vsub(cmd->vsub, true);
+ if (!msc_a) {
+ LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber %s\n", vlr_subscr_name(cmd->vsub));
goto out;
}
- trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id);
+ trans = trans_find_by_id(msc_a, TRANS_SMS, cmd->gsm411_trans_id);
if (!trans) {
- LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
- cmd->gsm411_trans_id);
+ LOG_MSC_A_CAT(msc_a, DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
+ cmd->gsm411_trans_id);
goto out;
}
@@ -657,11 +657,12 @@ struct osmo_smpp_cmd *smpp_cmd_find_by_seqnum(struct osmo_esme *esme,
}
static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
- struct ran_conn *conn)
+ struct msc_a *msc_a)
{
struct deliver_sm_t deliver;
int mode, ret;
uint8_t dcs;
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
memset(&deliver, 0, sizeof(deliver));
deliver.command_length = 0;
@@ -674,13 +675,13 @@ static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
deliver.source_addr_npi = NPI_Land_Mobile_E212;
snprintf((char *)deliver.source_addr,
sizeof(deliver.source_addr), "%s",
- conn->vsub->imsi);
+ vsub->imsi);
} else {
deliver.source_addr_ton = TON_Network_Specific;
deliver.source_addr_npi = NPI_ISDN_E163_E164;
snprintf((char *)deliver.source_addr,
sizeof(deliver.source_addr), "%s",
- conn->vsub->msisdn);
+ vsub->msisdn);
}
deliver.dest_addr_ton = sms->dst.ton;
@@ -746,19 +747,18 @@ static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
if (ret < 0)
return ret;
- return smpp_cmd_enqueue(esme, conn->vsub, sms,
+ return smpp_cmd_enqueue(esme, vsub, sms,
deliver.sequence_number);
}
static struct smsc *g_smsc;
-int smpp_route_smpp_first(struct gsm_sms *sms, struct ran_conn *conn)
+bool smpp_route_smpp_first()
{
- return g_smsc->smpp_first;
+ return (bool)(g_smsc->smpp_first);
}
-int smpp_try_deliver(struct gsm_sms *sms,
- struct ran_conn *conn)
+int smpp_try_deliver(struct gsm_sms *sms, struct msc_a *msc_a)
{
struct osmo_esme *esme;
struct osmo_smpp_addr dst;
@@ -771,7 +771,7 @@ int smpp_try_deliver(struct gsm_sms *sms,
rc = smpp_route(g_smsc, &dst, &esme);
if (!rc)
- rc = deliver_to_esme(esme, sms, conn);
+ rc = deliver_to_esme(esme, sms, msc_a);
return rc;
}
diff --git a/src/libmsc/smpp_smsc.h b/src/libmsc/smpp_smsc.h
index dc7b7c1ad..1c9eae68e 100644
--- a/src/libmsc/smpp_smsc.h
+++ b/src/libmsc/smpp_smsc.h
@@ -19,6 +19,8 @@
#define MODE_7BIT 7
#define MODE_8BIT 8
+struct msc_a;
+
enum esme_read_state {
READ_ST_IN_LEN = 0,
READ_ST_IN_MSG = 1,
@@ -161,8 +163,6 @@ int smpp_determine_scheme(uint8_t dcs, uint8_t *data_coding, int *mode);
struct gsm_sms;
struct ran_conn;
-int smpp_route_smpp_first(struct gsm_sms *sms,
- struct ran_conn *conn);
-int smpp_try_deliver(struct gsm_sms *sms,
- struct ran_conn *conn);
+bool smpp_route_smpp_first();
+int smpp_try_deliver(struct gsm_sms *sms, struct msc_a *msc_a);
#endif
diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c
index a56814d68..2c380b294 100644
--- a/src/libmsc/sms_queue.c
+++ b/src/libmsc/sms_queue.c
@@ -50,6 +50,7 @@ struct gsm_sms_pending {
struct llist_head entry;
struct vlr_subscr *vsub;
+ struct msc_a *msc_a;
unsigned long long sms_id;
int failed_attempts;
int resend;
@@ -507,23 +508,12 @@ static int sms_sms_cb(unsigned int subsys, unsigned int signal,
* subscriber. If we have some kind of other transmit error we
* should flag the SMS as bad.
*/
- switch (sig_sms->paging_result) {
- case 0:
+ if (sig_sms->paging_result) {
/* BAD SMS? */
db_sms_inc_deliver_attempts(sig_sms->sms);
sms_pending_failed(pending, 0);
- break;
- case GSM_PAGING_EXPIRED:
+ } else {
sms_pending_failed(pending, 1);
- break;
- case GSM_PAGING_BUSY:
- network->sms_queue->pending -= 1;
- sms_pending_free(pending);
- sms_queue_trigger(network->sms_queue);
- break;
- default:
- LOGP(DLSMS, LOGL_ERROR, "Unhandled result: %d\n",
- sig_sms->paging_result);
}
break;
default:
diff --git a/src/libmsc/transaction.c b/src/libmsc/transaction.c
index 665ad46b2..7ac050b4d 100644
--- a/src/libmsc/transaction.c
+++ b/src/libmsc/transaction.c
@@ -25,6 +25,10 @@
#include <osmocom/core/talloc.h>
#include <osmocom/msc/gsm_04_08.h>
#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/paging.h>
+#include <osmocom/msc/silent_call.h>
void *tall_trans_ctx;
@@ -32,22 +36,35 @@ void _gsm48_cc_trans_free(struct gsm_trans *trans);
void _gsm411_sms_trans_free(struct gsm_trans *trans);
void _gsm911_nc_ss_trans_free(struct gsm_trans *trans);
+struct gsm_trans *trans_find_by_type(const struct msc_a *msc_a, enum trans_type type)
+{
+ struct gsm_trans *trans;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
+
+ llist_for_each_entry(trans, &net->trans_list, entry) {
+ if (trans->vsub == vsub && trans->type == type)
+ return trans;
+ }
+ return NULL;
+}
+
/*! Find a transaction in connection for given protocol + transaction ID
* \param[in] conn Connection in which we want to find transaction
* \param[in] proto Protocol of transaction
* \param[in] trans_id Transaction ID of transaction
* \returns Matching transaction, if any
*/
-struct gsm_trans *trans_find_by_id(const struct ran_conn *conn,
- uint8_t proto, uint8_t trans_id)
+struct gsm_trans *trans_find_by_id(const struct msc_a *msc_a,
+ enum trans_type type, uint8_t trans_id)
{
struct gsm_trans *trans;
- struct gsm_network *net = conn->network;
- struct vlr_subscr *vsub = conn->vsub;
+ struct gsm_network *net = msc_a_net(msc_a);
+ struct vlr_subscr *vsub = msc_a_vsub(msc_a);
llist_for_each_entry(trans, &net->trans_list, entry) {
if (trans->vsub == vsub &&
- trans->protocol == proto &&
+ trans->type == type &&
trans->transaction_id == trans_id)
return trans;
}
@@ -85,7 +102,7 @@ struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net,
llist_for_each_entry(trans, &net->trans_list, entry) {
if (trans->vsub == vsub &&
- trans->protocol == GSM48_PDISC_SMS &&
+ trans->type == TRANS_SMS &&
trans->sms.sm_rp_mr == sm_rp_mr)
return trans;
}
@@ -93,9 +110,9 @@ struct gsm_trans *trans_find_by_sm_rp_mr(const struct gsm_network *net,
return NULL;
}
-static const char *trans_vsub_use(uint8_t proto)
+static const char *trans_vsub_use(enum trans_type type)
{
- return get_value_string_or_null(gsm48_pdisc_names, proto) ? : "trans-proto-unknown";
+ return get_value_string_or_null(trans_type_names, type) ? : "trans-type-unknown";
}
/*! Allocate a new transaction and add it to network list
@@ -107,7 +124,7 @@ static const char *trans_vsub_use(uint8_t proto)
*/
struct gsm_trans *trans_alloc(struct gsm_network *net,
struct vlr_subscr *vsub,
- uint8_t protocol, uint8_t trans_id,
+ enum trans_type type, uint8_t trans_id,
uint32_t callref)
{
struct gsm_trans *trans = NULL; /* (NULL for LOG_TRANS() before allocation) */
@@ -122,9 +139,9 @@ struct gsm_trans *trans_alloc(struct gsm_network *net,
if (!trans)
return NULL;
- vlr_subscr_get(vsub, trans_vsub_use(protocol));
+ vlr_subscr_get(vsub, trans_vsub_use(type));
trans->vsub = vsub;
- trans->protocol = protocol;
+ trans->type = type;
trans->transaction_id = trans_id;
trans->callref = callref;
@@ -140,46 +157,51 @@ struct gsm_trans *trans_alloc(struct gsm_network *net,
*/
void trans_free(struct gsm_trans *trans)
{
- enum ran_conn_use conn_usage_token;
- struct ran_conn *conn;
+ const char *usage_token;
+ struct msc_a *msc_a;
LOG_TRANS(trans, LOGL_DEBUG, "Freeing transaction\n");
- switch (trans->protocol) {
- case GSM48_PDISC_CC:
+ switch (trans->type) {
+ case TRANS_CC:
_gsm48_cc_trans_free(trans);
- conn_usage_token = RAN_CONN_USE_TRANS_CC;
+ usage_token = MSC_A_USE_CC;
break;
- case GSM48_PDISC_SMS:
+ case TRANS_SMS:
_gsm411_sms_trans_free(trans);
- conn_usage_token = RAN_CONN_USE_TRANS_SMS;
+ usage_token = MSC_A_USE_SMS;
break;
- case GSM48_PDISC_NC_SS:
+ case TRANS_USSD:
_gsm911_nc_ss_trans_free(trans);
- conn_usage_token = RAN_CONN_USE_TRANS_NC_SS;
+ usage_token = MSC_A_USE_NC_SS;
+ break;
+ case TRANS_SILENT_CALL:
+ trans_silent_call_free(trans);
+ usage_token = MSC_A_USE_SILENT_CALL;
break;
default:
- conn_usage_token = RAN_CONN_USE_UNTRACKED;
+ usage_token = NULL;
break;
}
if (trans->paging_request) {
- subscr_remove_request(trans->paging_request);
+ paging_request_remove(trans->paging_request);
trans->paging_request = NULL;
}
if (trans->vsub) {
- vlr_subscr_put(trans->vsub, trans_vsub_use(trans->protocol));
+ vlr_subscr_put(trans->vsub, trans_vsub_use(trans->type));
trans->vsub = NULL;
}
- conn = trans->conn;
- trans->conn = NULL;
+ msc_a = trans->msc_a;
+ trans->msc_a = NULL;
+
llist_del(&trans->entry);
talloc_free(trans);
- if (conn)
- ran_conn_put(conn, conn_usage_token);
+ if (msc_a && usage_token)
+ msc_a_put(msc_a, usage_token);
}
/*! allocate an unused transaction ID for the given subscriber
@@ -190,16 +212,17 @@ void trans_free(struct gsm_trans *trans)
* \param[in] protocol Protocol of to be assigned TID
*/
int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr *vsub,
- uint8_t protocol)
+ enum trans_type type)
{
struct gsm_trans *trans;
unsigned int used_tid_bitmask = 0;
int i, j, h;
+ uint8_t proto = trans_type_to_gsm48_proto(type);
/* generate bitmask of already-used TIDs for this (subscr,proto) */
llist_for_each_entry(trans, &net->trans_list, entry) {
if (trans->vsub != vsub ||
- trans->protocol != protocol ||
+ proto != trans_type_to_gsm48_proto(trans->type) ||
trans->transaction_id == TRANS_ID_UNASSIGNED)
continue;
used_tid_bitmask |= (1 << trans->transaction_id);
@@ -222,12 +245,13 @@ int trans_assign_trans_id(const struct gsm_network *net, const struct vlr_subscr
* \param[in] conn Connection to check
* \returns transaction pointer if found, NULL otherwise
*/
-struct gsm_trans *trans_has_conn(const struct ran_conn *conn)
+struct gsm_trans *trans_has_conn(const struct msc_a *msc_a)
{
struct gsm_trans *trans;
+ struct gsm_network *net = msc_a_net(msc_a);
- llist_for_each_entry(trans, &conn->network->trans_list, entry)
- if (trans->conn == conn)
+ llist_for_each_entry(trans, &net->trans_list, entry)
+ if (trans->msc_a == msc_a)
return trans;
return NULL;
@@ -238,19 +262,37 @@ struct gsm_trans *trans_has_conn(const struct ran_conn *conn)
* facilities, which will then send the necessary release indications.
* \param[in] conn Connection that is going to be closed.
*/
-void trans_conn_closed(const struct ran_conn *conn)
+void trans_conn_closed(const struct msc_a *msc_a)
{
- struct gsm_trans *trans;
-
/* As part of the CC REL_IND the remote leg might be released and this
* will trigger another call to trans_free. This is something the llist
* macro can not handle and we need to re-iterate the list every time.
*/
-restart:
- llist_for_each_entry(trans, &conn->network->trans_list, entry) {
- if (trans->conn == conn) {
- trans_free(trans);
- goto restart;
- }
+ struct gsm_trans *trans;
+ while ((trans = trans_has_conn(msc_a)))
+ trans_free(trans);
+}
+
+const struct value_string trans_type_names[] = {
+ { TRANS_CC, "CC" },
+ { TRANS_SMS, "SMS" },
+ { TRANS_USSD, "NCSS" },
+ { TRANS_SILENT_CALL, "silent-call" },
+ {}
+};
+
+uint8_t trans_type_to_gsm48_proto(enum trans_type type)
+{
+ switch (type) {
+ case TRANS_CC:
+ case TRANS_SILENT_CALL:
+ return GSM48_PDISC_CC;
+ case TRANS_SMS:
+ return GSM48_PDISC_SMS;
+ case TRANS_USSD:
+ return GSM48_PDISC_NC_SS;
+ default:
+ return GSM48_PDISC_TEST;
}
+
}
diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c
index c6d8805d6..508246989 100644
--- a/src/libvlr/vlr.c
+++ b/src/libvlr/vlr.c
@@ -33,6 +33,7 @@
#include <osmocom/msc/vlr_sgs.h>
#include <osmocom/msc/vlr.h>
#include <osmocom/msc/debug.h>
+#include <osmocom/msc/gsup_client_mux.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -110,6 +111,18 @@ const char *vlr_subscr_name(const struct vlr_subscr *vsub)
return buf;
}
+const char *vlr_subscr_short_name(const struct vlr_subscr *vsub, unsigned int maxlen)
+{
+ /* cast away the const so we can shorten the string within the static buffer */
+ char *name = (char*)vlr_subscr_name(vsub);
+ size_t len = strlen(name);
+ if (maxlen < 2)
+ return "-";
+ if (len > maxlen)
+ strcpy(name + maxlen - 2, "..");
+ return name;
+}
+
const char *vlr_subscr_msisdn_or_name(const struct vlr_subscr *vsub)
{
if (!vsub || !vsub->msisdn[0])
@@ -174,31 +187,6 @@ struct vlr_subscr *_vlr_subscr_find_by_msisdn(struct vlr_instance *vlr,
return NULL;
}
-/* Transmit GSUP message to HLR */
-static int vlr_tx_gsup_message(const struct vlr_instance *vlr,
- const struct osmo_gsup_message *gsup_msg)
-{
- struct msgb *msg = osmo_gsup_client_msgb_alloc();
-
- int rc = osmo_gsup_encode(msg, gsup_msg);
- if (rc < 0) {
- LOGP(DVLR, LOGL_ERROR, "GSUP encoding failure: %s\n", strerror(-rc));
- return rc;
- }
-
- if (!vlr->gsup_client) {
- LOGP(DVLR, LOGL_NOTICE, "GSUP link is down, cannot "
- "send GSUP: %s\n", msgb_hexdump(msg));
- msgb_free(msg);
- return -ENOTSUP;
- }
-
- LOGP(DVLR, LOGL_DEBUG, "GSUP tx: %s\n",
- osmo_hexdump_nospc(msg->data, msg->len));
-
- return osmo_gsup_client_send(vlr->gsup_client, msg);
-}
-
/* Transmit GSUP message for subscriber to HLR, using IMSI from subscriber */
static int vlr_subscr_tx_gsup_message(const struct vlr_subscr *vsub,
struct osmo_gsup_message *gsup_msg)
@@ -208,40 +196,39 @@ static int vlr_subscr_tx_gsup_message(const struct vlr_subscr *vsub,
if (strlen(gsup_msg->imsi) == 0)
OSMO_STRLCPY_ARRAY(gsup_msg->imsi, vsub->imsi);
- return vlr_tx_gsup_message(vlr, gsup_msg);
-}
-
-/* Transmit GSUP error in response to original message */
-static int vlr_tx_gsup_error_reply(const struct vlr_instance *vlr,
- struct osmo_gsup_message *gsup_orig,
- enum gsm48_gmm_cause cause)
-{
- struct osmo_gsup_message gsup_reply = {0};
-
- OSMO_STRLCPY_ARRAY(gsup_reply.imsi, gsup_orig->imsi);
- gsup_reply.cause = cause;
- gsup_reply.message_type =
- OSMO_GSUP_TO_MSGT_ERROR(gsup_orig->message_type);
+ gsup_msg->message_class = OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT;
- return vlr_tx_gsup_message(vlr, &gsup_reply);
+ return gsup_client_mux_tx(vlr->gcm, gsup_msg);
}
static int vlr_subscr_use_cb(struct osmo_use_count_entry *e, int32_t old_use_count, const char *file, int line)
{
struct vlr_subscr *vsub = e->use_count->talloc_object;
char buf[128];
+ int32_t total;
+ int level;
if (!e->use)
return -EINVAL;
- LOGPSRC(DREF, LOGL_DEBUG, file, line, "VLR subscr %s %s %s: now used by %s\n",
+ total = osmo_use_count_total(&vsub->use_count);
+
+ if (total == 0
+ || (total == 1 && old_use_count == 0 && e->count == 1))
+ level = LOGL_INFO;
+ else
+ level = LOGL_DEBUG;
+
+ LOGPSRC(DREF, level, file, line, "VLR subscr %s %s %s: now used by %s\n",
vlr_subscr_name(vsub), (e->count - old_use_count) > 0? "+" : "-", e->use,
osmo_use_count_name_buf(buf, sizeof(buf), e->use_count));
if (e->count < 0)
return -ERANGE;
- if (osmo_use_count_total(e->use_count) <= 0)
+ vsub->max_total_use_count = OSMO_MAX(vsub->max_total_use_count, total);
+
+ if (total <= 0)
vlr_subscr_free(vsub);
return 0;
}
@@ -261,6 +248,7 @@ static struct vlr_subscr *_vlr_subscr_alloc(struct vlr_instance *vlr)
.talloc_object = vsub,
.use_cb = vlr_subscr_use_cb,
},
+ .expire_lu = VLR_SUBSCRIBER_NO_EXPIRATION,
};
osmo_use_count_make_static_entries(&vsub->use_count, vsub->use_count_buf, ARRAY_SIZE(vsub->use_count_buf));
@@ -314,7 +302,8 @@ void vlr_subscr_cancel_attach_fsm(struct vlr_subscr *vsub,
void vlr_subscr_free(struct vlr_subscr *vsub)
{
llist_del(&vsub->list);
- DEBUGP(DREF, "freeing VLR subscr %s\n", vlr_subscr_name(vsub));
+ DEBUGP(DVLR, "freeing VLR subscr %s (max total use count was %d)\n", vlr_subscr_name(vsub),
+ vsub->max_total_use_count);
/* Make sure SGs timer Ts5 is removed */
osmo_timer_del(&vsub->sgs.Ts5);
@@ -611,17 +600,14 @@ vlr_subscr_pdp_data_get_by_id(struct vlr_subscr *vsub, unsigned context_id)
***********************************************************************/
static int vlr_rx_gsup_unknown_imsi(struct vlr_instance *vlr,
- struct osmo_gsup_message *gsup_msg)
+ const struct osmo_gsup_message *gsup_msg)
{
if (OSMO_GSUP_IS_MSGT_REQUEST(gsup_msg->message_type)) {
- int rc = vlr_tx_gsup_error_reply(vlr, gsup_msg, GMM_CAUSE_IMSI_UNKNOWN);
- if (rc < 0)
- LOGP(DVLR, LOGL_ERROR, "Failed to send error reply for IMSI %s\n", gsup_msg->imsi);
-
LOGP(DVLR, LOGL_NOTICE,
"Unknown IMSI %s, discarding GSUP request "
"of type 0x%02x\n",
gsup_msg->imsi, gsup_msg->message_type);
+ gsup_client_mux_tx_error_reply(vlr->gcm, gsup_msg, GMM_CAUSE_IMSI_UNKNOWN);
} else if (OSMO_GSUP_IS_MSGT_ERROR(gsup_msg->message_type)) {
LOGP(DVLR, LOGL_NOTICE,
"Unknown IMSI %s, discarding GSUP error "
@@ -640,7 +626,7 @@ static int vlr_rx_gsup_unknown_imsi(struct vlr_instance *vlr,
}
static int vlr_rx_gsup_purge_no_subscr(struct vlr_instance *vlr,
- struct osmo_gsup_message *gsup_msg)
+ const struct osmo_gsup_message *gsup_msg)
{
if (OSMO_GSUP_IS_MSGT_ERROR(gsup_msg->message_type)) {
LOGGSUPP(LOGL_NOTICE, gsup_msg,
@@ -682,7 +668,9 @@ int vlr_subscr_req_sai(struct vlr_subscr *vsub,
/* Initiate Check_IMEI_VLR Procedure (23.018 Chapter 7.1.2.9) */
int vlr_subscr_tx_req_check_imei(const struct vlr_subscr *vsub)
{
- struct osmo_gsup_message gsup_msg = {0};
+ struct osmo_gsup_message gsup_msg = {
+ .message_class = OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT,
+ };
uint8_t imei_enc[GSM23003_IMEI_NUM_DIGITS+2]; /* +2: IE header */
int len;
@@ -698,17 +686,19 @@ int vlr_subscr_tx_req_check_imei(const struct vlr_subscr *vsub)
/* Send CHECK_IMEI_REQUEST */
gsup_msg.message_type = OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST;
OSMO_STRLCPY_ARRAY(gsup_msg.imsi, vsub->imsi);
- return vlr_tx_gsup_message(vsub->vlr, &gsup_msg);
+ return gsup_client_mux_tx(vsub->vlr->gcm, &gsup_msg);
}
/* Tell HLR that authentication failure occurred */
int vlr_subscr_tx_auth_fail_rep(const struct vlr_subscr *vsub)
{
- struct osmo_gsup_message gsup_msg = {0};
+ struct osmo_gsup_message gsup_msg = {
+ .message_class = OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT,
+ };
gsup_msg.message_type = OSMO_GSUP_MSGT_AUTH_FAIL_REPORT;
OSMO_STRLCPY_ARRAY(gsup_msg.imsi, vsub->imsi);
- return vlr_tx_gsup_message(vsub->vlr, &gsup_msg);
+ return gsup_client_mux_tx(vsub->vlr->gcm, &gsup_msg);
}
/* Update the subscriber with GSUP-received auth tuples */
@@ -771,21 +761,6 @@ static int vlr_subscr_handle_sai_res(struct vlr_subscr *vsub,
return 0;
}
-static int decode_bcd_number_safe(char *output, int output_len,
- const uint8_t *bcd_lv, int input_len,
- int h_len)
-{
- uint8_t len;
- OSMO_ASSERT(output_len >= 1);
- *output = '\0';
- if (input_len < 1)
- return -EIO;
- len = bcd_lv[0];
- if (input_len < len)
- return -EIO;
- return gsm48_decode_bcd_number(output, output_len, bcd_lv, h_len);
-}
-
static void vlr_subscr_gsup_insert_data(struct vlr_subscr *vsub,
const struct osmo_gsup_message *gsup_msg)
{
@@ -793,9 +768,9 @@ static void vlr_subscr_gsup_insert_data(struct vlr_subscr *vsub,
int rc;
if (gsup_msg->msisdn_enc) {//FIXME: vlr_subscr_set_msisdn()?
- decode_bcd_number_safe(vsub->msisdn, sizeof(vsub->msisdn),
- gsup_msg->msisdn_enc,
- gsup_msg->msisdn_enc_len, 0);
+ gsm48_decode_bcd_number2(vsub->msisdn, sizeof(vsub->msisdn),
+ gsup_msg->msisdn_enc,
+ gsup_msg->msisdn_enc_len, 0);
LOGP(DVLR, LOGL_DEBUG, "IMSI:%s has MSISDN:%s\n",
vsub->imsi, vsub->msisdn);
}
@@ -1033,7 +1008,7 @@ static void gmm_cause_to_fsm_and_mm_cause(enum gsm48_gmm_cause gmm_cause,
/* Handle LOCATION CANCEL request from HLR */
static int vlr_subscr_handle_cancel_req(struct vlr_subscr *vsub,
- struct osmo_gsup_message *gsup_msg)
+ const struct osmo_gsup_message *gsup_msg)
{
enum gsm48_reject_value gsm48_rej;
enum osmo_fsm_term_cause fsm_cause;
@@ -1081,87 +1056,59 @@ static int vlr_subscr_handle_check_imei(struct vlr_subscr *vsub, const struct os
/* Incoming handler for GSUP from HLR.
* Keep this function non-static for direct invocation by unit tests. */
-int vlr_gsupc_read_cb(struct osmo_gsup_client *gsupc, struct msgb *msg)
+int vlr_gsup_rx(struct gsup_client_mux *gcm, void *data, const struct osmo_gsup_message *gsup)
{
- struct vlr_instance *vlr = (struct vlr_instance *) gsupc->data;
+ struct vlr_instance *vlr = data;
struct vlr_subscr *vsub;
- struct osmo_gsup_message gsup;
int rc;
- DEBUGP(DVLR, "GSUP rx %u: %s\n", msgb_l2len(msg),
- osmo_hexdump_nospc(msgb_l2(msg), msgb_l2len(msg)));
-
- rc = osmo_gsup_decode(msgb_l2(msg), msgb_l2len(msg), &gsup);
- if (rc < 0) {
- LOGP(DVLR, LOGL_ERROR,
- "decoding GSUP message fails with error '%s' (%d)\n",
- get_value_string(gsm48_gmm_cause_names, -rc), -rc);
- goto msgb_free_and_return;
- }
-
- if (!gsup.imsi[0]) {
- LOGP(DVLR, LOGL_ERROR, "Missing IMSI in GSUP message\n");
- if (OSMO_GSUP_IS_MSGT_REQUEST(gsup.message_type)) {
- rc = vlr_tx_gsup_error_reply(vlr, &gsup, GMM_CAUSE_INV_MAND_INFO);
- if (rc < 0)
- LOGP(DVLR, LOGL_ERROR, "Failed to send error reply for IMSI %s\n", gsup.imsi);
- }
- rc = -GMM_CAUSE_INV_MAND_INFO;
- goto msgb_free_and_return;
- }
-
- vsub = vlr_subscr_find_by_imsi(vlr, gsup.imsi, __func__);
+ vsub = vlr_subscr_find_by_imsi(vlr, gsup->imsi, __func__);
if (!vsub) {
- switch (gsup.message_type) {
+ switch (gsup->message_type) {
case OSMO_GSUP_MSGT_PURGE_MS_RESULT:
case OSMO_GSUP_MSGT_PURGE_MS_ERROR:
- rc = vlr_rx_gsup_purge_no_subscr(vlr, &gsup);
- goto msgb_free_and_return;
+ return vlr_rx_gsup_purge_no_subscr(vlr, gsup);
default:
- rc = vlr_rx_gsup_unknown_imsi(vlr, &gsup);
- goto msgb_free_and_return;
+ return vlr_rx_gsup_unknown_imsi(vlr, gsup);
}
}
- switch (gsup.message_type) {
+ switch (gsup->message_type) {
case OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT:
case OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR:
- rc = vlr_subscr_handle_sai_res(vsub, &gsup);
+ rc = vlr_subscr_handle_sai_res(vsub, gsup);
break;
case OSMO_GSUP_MSGT_INSERT_DATA_REQUEST:
- rc = vlr_subscr_handle_isd_req(vsub, &gsup);
+ rc = vlr_subscr_handle_isd_req(vsub, gsup);
break;
case OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST:
- rc = vlr_subscr_handle_cancel_req(vsub, &gsup);
+ rc = vlr_subscr_handle_cancel_req(vsub, gsup);
break;
case OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT:
- rc = vlr_subscr_handle_lu_res(vsub, &gsup);
+ rc = vlr_subscr_handle_lu_res(vsub, gsup);
break;
case OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR:
- rc = vlr_subscr_handle_lu_err(vsub, &gsup);
+ rc = vlr_subscr_handle_lu_err(vsub, gsup);
break;
case OSMO_GSUP_MSGT_PURGE_MS_ERROR:
case OSMO_GSUP_MSGT_PURGE_MS_RESULT:
case OSMO_GSUP_MSGT_DELETE_DATA_REQUEST:
LOGVSUBP(LOGL_ERROR, vsub,
"Rx GSUP msg_type=%d not yet implemented\n",
- gsup.message_type);
+ gsup->message_type);
rc = -GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL;
break;
case OSMO_GSUP_MSGT_CHECK_IMEI_ERROR:
case OSMO_GSUP_MSGT_CHECK_IMEI_RESULT:
- rc = vlr_subscr_handle_check_imei(vsub, &gsup);
+ rc = vlr_subscr_handle_check_imei(vsub, gsup);
break;
default:
- /* Forward message towards MSC */
- rc = vlr->ops.forward_gsup_msg(vsub, &gsup);
+ LOGP(DLGSUP, LOGL_ERROR, "GSUP Message type not handled by VLR: %d\n", gsup->message_type);
+ rc = -EINVAL;
break;
}
vlr_subscr_put(vsub, __func__);
-
-msgb_free_and_return:
- msgb_free(msg);
return rc;
}
@@ -1304,7 +1251,6 @@ struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
OSMO_ASSERT(ops->tx_common_id);
OSMO_ASSERT(ops->subscr_update);
OSMO_ASSERT(ops->subscr_assoc);
- OSMO_ASSERT(ops->forward_gsup_msg);
INIT_LLIST_HEAD(&vlr->subscribers);
INIT_LLIST_HEAD(&vlr->operations);
@@ -1314,7 +1260,7 @@ struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
vlr->cfg.assign_tmsi = true;
/* osmo_auth_fsm.c */
- osmo_fsm_register(&vlr_auth_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&vlr_auth_fsm) == 0);
/* osmo_lu_fsm.c */
vlr_lu_fsm_init();
/* vlr_access_request_fsm.c */
@@ -1325,18 +1271,15 @@ struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
return vlr;
}
-int vlr_start(struct ipaccess_unit *ipa_dev, struct vlr_instance *vlr,
- const char *gsup_server_addr_str, uint16_t gsup_server_port)
+int vlr_start(struct vlr_instance *vlr, struct gsup_client_mux *gcm)
{
OSMO_ASSERT(vlr);
- vlr->gsup_client = osmo_gsup_client_create2(vlr, ipa_dev,
- gsup_server_addr_str,
- gsup_server_port,
- &vlr_gsupc_read_cb, NULL);
- if (!vlr->gsup_client)
- return -ENOMEM;
- vlr->gsup_client->data = vlr;
+ vlr->gcm = gcm;
+ gcm->rx_cb[OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT] = (struct gsup_client_mux_rx_cb){
+ .func = vlr_gsup_rx,
+ .data = vlr,
+ };
osmo_timer_setup(&vlr->lu_expire_timer, vlr_subscr_expire_lu, vlr);
osmo_timer_schedule(&vlr->lu_expire_timer, VLR_SUBSCRIBER_LU_EXPIRATION_INTERVAL, 0);
@@ -1383,14 +1326,13 @@ int vlr_subscr_rx_auth_resp(struct vlr_subscr *vsub, bool is_r99,
}
/* MSC->VLR: Receive result of Ciphering Mode Command from MS */
-void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, struct vlr_ciph_result *res)
+void vlr_subscr_rx_ciph_res(struct vlr_subscr *vsub, enum vlr_ciph_result_cause result)
{
if (vsub->lu_fsm && vsub->lu_fsm->state == VLR_ULA_S_WAIT_CIPH)
- osmo_fsm_inst_dispatch(vsub->lu_fsm, VLR_ULA_E_CIPH_RES, res);
+ osmo_fsm_inst_dispatch(vsub->lu_fsm, VLR_ULA_E_CIPH_RES, &result);
if (vsub->proc_arq_fsm
&& vsub->proc_arq_fsm->state == PR_ARQ_S_WAIT_CIPH)
- osmo_fsm_inst_dispatch(vsub->proc_arq_fsm, PR_ARQ_E_CIPH_RES,
- res);
+ osmo_fsm_inst_dispatch(vsub->proc_arq_fsm, PR_ARQ_E_CIPH_RES, &result);
}
/* Internal evaluation of requested ciphering mode.
diff --git a/src/libvlr/vlr_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c
index fccb6d321..7684d02f0 100644
--- a/src/libvlr/vlr_access_req_fsm.c
+++ b/src/libvlr/vlr_access_req_fsm.c
@@ -60,6 +60,7 @@ struct proc_arq_priv {
void *parent_event_data;
enum vlr_parq_type type;
+ enum osmo_cm_service_type cm_service_type;
enum gsm48_reject_value result; /*< 0 on success */
bool by_tmsi;
char imsi[16];
@@ -121,7 +122,8 @@ static void proc_arq_vlr_dispatch_result(struct osmo_fsm_inst *fi,
if (par->type == VLR_PR_ARQ_T_CM_SERV_REQ) {
if (success
&& !par->implicitly_accepted_parq_by_ciphering_cmd) {
- rc = par->vlr->ops.tx_cm_serv_acc(par->msc_conn_ref);
+ rc = par->vlr->ops.tx_cm_serv_acc(par->msc_conn_ref,
+ par->cm_service_type);
if (rc) {
LOGPFSML(fi, LOGL_ERROR,
"Failed to send CM Service Accept\n");
@@ -130,6 +132,7 @@ static void proc_arq_vlr_dispatch_result(struct osmo_fsm_inst *fi,
}
if (!success) {
rc = par->vlr->ops.tx_cm_serv_rej(par->msc_conn_ref,
+ par->cm_service_type,
par->result);
if (rc)
LOGPFSML(fi, LOGL_ERROR,
@@ -445,37 +448,28 @@ static void proc_arq_vlr_fn_w_auth(struct osmo_fsm_inst *fi,
static void proc_arq_vlr_fn_w_ciph(struct osmo_fsm_inst *fi,
uint32_t event, void *data)
{
- struct proc_arq_priv *par = fi->priv;
- struct vlr_subscr *vsub = par->vsub;
- struct vlr_ciph_result res = { .cause = VLR_CIPH_REJECT };
+ enum vlr_ciph_result_cause result = VLR_CIPH_REJECT;
OSMO_ASSERT(event == PR_ARQ_E_CIPH_RES);
if (!data)
LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: NULL\n");
else
- res = *(struct vlr_ciph_result*)data;
+ result = *(enum vlr_ciph_result_cause*)data;
- switch (res.cause) {
+ switch (result) {
case VLR_CIPH_COMPL:
- break;
+ _proc_arq_vlr_node2_post_ciph(fi);
+ return;
case VLR_CIPH_REJECT:
LOGPFSM(fi, "ciphering rejected\n");
proc_arq_fsm_done(fi, GSM48_REJECT_ILLEGAL_MS);
return;
default:
- LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: %d\n",
- res.cause);
+ LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: %d\n", result);
proc_arq_fsm_done(fi, GSM48_REJECT_ILLEGAL_MS);
return;
}
-
-
- if (*res.imeisv) {
- LOGPFSM(fi, "got IMEISV: %s\n", res.imeisv);
- vlr_subscr_set_imeisv(vsub, res.imeisv);
- }
- _proc_arq_vlr_node2_post_ciph(fi);
}
/* Update_Location_Child_VLR has completed */
@@ -637,7 +631,8 @@ vlr_proc_acc_req(struct osmo_fsm_inst *parent,
uint32_t parent_event_failure,
void *parent_event_data,
struct vlr_instance *vlr, void *msc_conn_ref,
- enum vlr_parq_type type, const uint8_t *mi_lv,
+ enum vlr_parq_type type, enum osmo_cm_service_type cm_service_type,
+ const uint8_t *mi_lv,
const struct osmo_location_area_id *lai,
bool authentication_required,
bool ciphering_required,
@@ -659,6 +654,7 @@ vlr_proc_acc_req(struct osmo_fsm_inst *parent,
par->vlr = vlr;
par->msc_conn_ref = msc_conn_ref;
par->type = type;
+ par->cm_service_type = cm_service_type;
par->lai = *lai;
par->parent_event_success = parent_event_success;
par->parent_event_failure = parent_event_failure;
@@ -779,6 +775,6 @@ static struct osmo_fsm upd_loc_child_vlr_fsm = {
void vlr_parq_fsm_init(void)
{
- //osmo_fsm_register(&upd_loc_child_vlr_fsm);
- osmo_fsm_register(&proc_arq_vlr_fsm);
+ //OSMO_ASSERT(osmo_fsm_register(&upd_loc_child_vlr_fsm) == 0);
+ OSMO_ASSERT(osmo_fsm_register(&proc_arq_vlr_fsm) == 0);
}
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index ecf96fad5..27196d844 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -1133,36 +1133,28 @@ static void lu_fsm_wait_auth(struct osmo_fsm_inst *fi, uint32_t event,
static void lu_fsm_wait_ciph(struct osmo_fsm_inst *fi, uint32_t event,
void *data)
{
- struct lu_fsm_priv *lfp = lu_fsm_fi_priv(fi);
- struct vlr_subscr *vsub = lfp->vsub;
- struct vlr_ciph_result res = { .cause = VLR_CIPH_REJECT };
+ enum vlr_ciph_result_cause result = VLR_CIPH_REJECT;
OSMO_ASSERT(event == VLR_ULA_E_CIPH_RES);
if (!data)
LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: NULL\n");
else
- res = *(struct vlr_ciph_result*)data;
+ result = *(enum vlr_ciph_result_cause*)data;
- switch (res.cause) {
+ switch (result) {
case VLR_CIPH_COMPL:
- break;
+ vlr_loc_upd_post_ciph(fi);
+ return;
case VLR_CIPH_REJECT:
LOGPFSM(fi, "ciphering rejected\n");
lu_fsm_failure(fi, GSM48_REJECT_INVALID_MANDANTORY_INF);
return;
default:
- LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: %d\n",
- res.cause);
+ LOGPFSML(fi, LOGL_ERROR, "invalid ciphering result: %d\n", result);
lu_fsm_failure(fi, GSM48_REJECT_INVALID_MANDANTORY_INF);
return;
}
-
- if (*res.imeisv) {
- LOGPFSM(fi, "got IMEISV: %s\n", res.imeisv);
- vlr_subscr_set_imeisv(vsub, res.imeisv);
- }
- vlr_loc_upd_post_ciph(fi);
}
static void lu_fsm_wait_imsi(struct osmo_fsm_inst *fi, uint32_t event,
@@ -1516,8 +1508,8 @@ void vlr_loc_update_cancel(struct osmo_fsm_inst *fi,
void vlr_lu_fsm_init(void)
{
- osmo_fsm_register(&vlr_lu_fsm);
- osmo_fsm_register(&upd_hlr_vlr_fsm);
- osmo_fsm_register(&sub_pres_vlr_fsm);
- osmo_fsm_register(&lu_compl_vlr_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&vlr_lu_fsm) == 0);
+ OSMO_ASSERT(osmo_fsm_register(&upd_hlr_vlr_fsm) == 0);
+ OSMO_ASSERT(osmo_fsm_register(&sub_pres_vlr_fsm) == 0);
+ OSMO_ASSERT(osmo_fsm_register(&lu_compl_vlr_fsm) == 0);
}
diff --git a/src/libvlr/vlr_sgs.c b/src/libvlr/vlr_sgs.c
index 3ee7799a8..452de2cca 100644
--- a/src/libvlr/vlr_sgs.c
+++ b/src/libvlr/vlr_sgs.c
@@ -18,6 +18,8 @@
*
*/
+#include <errno.h>
+
#include <osmocom/core/utils.h>
#include <osmocom/core/fsm.h>
#include <osmocom/msc/debug.h>
@@ -247,7 +249,7 @@ void vlr_sgs_pag_rej(struct vlr_instance *vlr, const char *imsi, enum sgsap_sgs_
osmo_fsm_inst_dispatch(vsub->sgs_fsm, SGS_UE_E_RX_PAGING_FAILURE, &cause);
/* Balance ref count increment from vlr_sgs_pag() */
- vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING);
+ vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING_REQ);
vlr_subscr_put(vsub, __func__);
}
@@ -265,7 +267,7 @@ void vlr_sgs_pag_ack(struct vlr_instance *vlr, const char *imsi)
/* Stop Ts5 and and consider the paging as successful */
osmo_timer_del(&vsub->sgs.Ts5);
/* Balance ref count increment from vlr_sgs_pag() */
- vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING);
+ vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING_REQ);
vlr_subscr_put(vsub, __func__);
}
@@ -306,7 +308,7 @@ static void Ts5_timeout_cb(void *arg)
vlr_subscr_msisdn_or_name(vsub), vlr_sgs_state_timer_name(SGS_STATE_TS5));
/* Balance ref count increment from vlr_sgs_pag() */
- vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING);
+ vlr_subscr_put(vsub, VSUB_USE_SGS_PAGING_REQ);
return;
}
@@ -346,7 +348,7 @@ void vlr_sgs_pag(struct vlr_subscr *vsub, enum sgsap_service_ind serv_ind)
/* Ensure that the reference count is increased by one while the
* paging is happening. We will balance this again in vlr_sgs_pag_rej()
* and vlr_sgs_pag_ack(); */
- vlr_subscr_get(vsub, VSUB_USE_SGS_PAGING);
+ vlr_subscr_get(vsub, VSUB_USE_SGS_PAGING_REQ);
}
/*! Check if the SGs interface is currently paging
diff --git a/src/libvlr/vlr_sgs_fsm.c b/src/libvlr/vlr_sgs_fsm.c
index a25d41c3b..13639ca3c 100644
--- a/src/libvlr/vlr_sgs_fsm.c
+++ b/src/libvlr/vlr_sgs_fsm.c
@@ -24,6 +24,7 @@
#include <osmocom/msc/debug.h>
#include <osmocom/msc/vlr.h>
#include <osmocom/msc/vlr_sgs.h>
+#include <osmocom/msc/paging.h>
#include "vlr_sgs_fsm.h"
#include "vlr_core.h"
@@ -77,7 +78,8 @@ static void to_null(struct osmo_fsm_inst *fi)
vsub->tmsi_new = GSM_RESERVED_TMSI;
/* Make sure any ongoing paging is aborted. */
- vsub->cs.is_paging = false;
+ if (vsub->cs.is_paging)
+ paging_expired(vsub);
/* Ensure that Ts5 (pending paging via SGs) is deleted */
if (vlr_sgs_pag_pend(vsub))
@@ -344,7 +346,7 @@ static struct osmo_fsm sgs_ue_fsm = {
void vlr_sgs_fsm_init(void)
{
if (osmo_fsm_find_by_name(sgs_ue_fsm.name) != &sgs_ue_fsm)
- osmo_fsm_register(&sgs_ue_fsm);
+ OSMO_ASSERT(osmo_fsm_register(&sgs_ue_fsm) == 0);
}
/*! Crate SGs FSM in struct vlr_subscr.
diff --git a/src/osmo-msc/Makefile.am b/src/osmo-msc/Makefile.am
index abe9ad3b0..9b5471618 100644
--- a/src/osmo-msc/Makefile.am
+++ b/src/osmo-msc/Makefile.am
@@ -51,6 +51,7 @@ osmo_msc_LDADD = \
$(NULL)
if BUILD_IU
osmo_msc_LDADD += \
+ $(LIBASN1C_LIBS) \
$(LIBOSMORANAP_LIBS) \
$(NULL)
endif
diff --git a/src/osmo-msc/msc_main.c b/src/osmo-msc/msc_main.c
index cd30bdb51..857a6a691 100644
--- a/src/osmo-msc/msc_main.c
+++ b/src/osmo-msc/msc_main.c
@@ -1,7 +1,7 @@
/* OsmoMSC - Circuit-Switched Core Network (MSC+VLR+HLR+SMSC) implementation
*/
-/* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+/* (C) 2016-2019 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
* All Rights Reserved
*
* Based on OsmoNITB:
@@ -63,16 +63,21 @@
#include <osmocom/mgcp_client/mgcp_client.h>
#include <osmocom/msc/sgs_iface.h>
#include <osmocom/msc/sgs_server.h>
+#include <osmocom/msc/ran_infra.h>
+#include <osmocom/msc/ran_peer.h>
+#include <osmocom/msc/ran_msg_a.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/msc_ho.h>
+#include <osmocom/msc/gsup_client_mux.h>
+#include <osmocom/msc/e_link.h>
+#include <osmocom/msc/mncc_call.h>
#ifdef BUILD_IU
#include <osmocom/ranap/iu_client.h>
+#include <asn1c/asn_internal.h>
#endif
-#include <osmocom/msc/msc_ifaces.h>
-#include <osmocom/msc/iucs.h>
-#include <osmocom/msc/iucs_ranap.h>
-#include <osmocom/msc/a_iface.h>
-
static const char * const osmomsc_copyright =
"OsmoMSC - Osmocom Circuit-Switched Core Network implementation\r\n"
"Copyright (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>\r\n"
@@ -216,6 +221,7 @@ struct gsm_network *msc_network_alloc(void *ctx,
net->gsup_server_port = MSC_HLR_REMOTE_PORT_DEFAULT;
mgcp_client_conf_init(&net->mgw.conf);
+ net->mgw.tdefs = g_mgw_tdefs;
return net;
}
@@ -320,27 +326,6 @@ static struct vty_app_info msc_vty_info = {
.is_config_node = msc_vty_is_config_node,
};
-#ifdef BUILD_IU
-static int rcvmsg_iu_cs(struct msgb *msg, struct gprs_ra_id *ra_id, uint16_t *sai)
-{
- DEBUGP(DIUCS, "got IuCS message %d bytes: %s\n", msg->len, msgb_hexdump(msg));
- if (ra_id) {
- DEBUGP(DIUCS, "got IuCS message on %s\n", osmo_rai_name(ra_id));
- }
-
- return gsm0408_rcvmsg_iucs(msc_network, msg, ra_id? &ra_id->lac : NULL);
-}
-
-static int rx_iu_event(struct ranap_ue_conn_ctx *ctx, enum ranap_iu_event_type type,
- void *data)
-{
- DEBUGP(DIUCS, "got IuCS event %u: %s\n", type,
- ranap_iu_event_type_str(type));
-
- return iucs_rx_ranap_event(msc_network, ctx, type, data);
-}
-#endif
-
#define DEFAULT_M3UA_REMOTE_IP "127.0.0.1"
#define DEFAULT_PC "0.23.1"
@@ -361,42 +346,38 @@ static struct osmo_sccp_instance *sccp_setup(void *ctx, uint32_t cs7_instance,
* Similarly, 'cs7' / 'listen' can specify the local IP address. */
}
-static int ss7_setup(void *ctx)
+static int ss7_setup(void *ctx, struct osmo_sccp_instance **sccp_a, struct osmo_sccp_instance **sccp_iu)
{
- uint32_t cs7_instance_a = msc_network->a.cs7_instance;
+ uint32_t i_a = msc_network->a.cs7_instance;
+ uint32_t i_iu = msc_network->iu.cs7_instance;
+
+ const char *name_a = "OsmoMSC-A";
+ const char *name_iu = NULL;
+
#if BUILD_IU
- uint32_t cs7_instance_iu = msc_network->iu.cs7_instance;
-
- if (cs7_instance_a == cs7_instance_iu) {
- /* Create one single SCCP instance which will be used for both,
- * Iu and A at the same time, under the same point-code */
- LOGP(DMSC, LOGL_NOTICE, "CS7 Instance identifiers: A = Iu = %u\n", cs7_instance_a);
-
- msc_network->a.sccp = sccp_setup(ctx, cs7_instance_a, "OsmoMSC-A-Iu", DEFAULT_PC);
- if (!msc_network->a.sccp)
- return -EINVAL;
-
- msc_network->iu.sccp = msc_network->a.sccp;
- } else {
- /* Create two separate SCCP instances to run A and Iu independently on different
- * pointcodes */
- LOGP(DMSC, LOGL_NOTICE, "CS7 Instance identifiers: A = %u, Iu = %u\n",
- cs7_instance_a, cs7_instance_iu);
-
- msc_network->a.sccp = sccp_setup(ctx, cs7_instance_a, "OsmoMSC-A", DEFAULT_PC);
- if (!msc_network->a.sccp)
- return -EINVAL;
-
- msc_network->iu.sccp = sccp_setup(ctx, cs7_instance_iu, "OsmoMSC-Iu", DEFAULT_PC);
- if (!msc_network->iu.sccp)
- return -EINVAL;
+ if (i_a == i_iu)
+ name_a = name_iu = "OsmoMSC-A-Iu";
+ else
+ name_iu = "OsmoMSC-Iu";
+#endif
+
+ *sccp_a = sccp_setup(ctx, i_a, name_a, DEFAULT_PC);
+ if (!*sccp_a)
+ return -EINVAL;
+
+ if (!name_iu) {
+ *sccp_iu = NULL;
+ return 0;
+ }
+
+ if (i_a == i_iu) {
+ *sccp_iu = *sccp_a;
+ return 0;
}
-#else
- /* No Iu support, just open up an A instance */
- msc_network->a.sccp = sccp_setup(ctx, cs7_instance_a, "OsmoMSC-A", DEFAULT_PC);
- if (!msc_network->a.sccp)
+
+ *sccp_iu = sccp_setup(ctx, i_iu, name_iu, DEFAULT_PC);
+ if (!*sccp_iu)
return -EINVAL;
-#endif
return 0;
}
@@ -451,6 +432,7 @@ static const struct log_info_cat msc_default_categories[] = {
[DHO] = {
.name = "DHO",
.description = "Hand-Over",
+ .color = "\033[1;38m",
.enabled = 1, .loglevel = LOGL_NOTICE,
},
[DDB] = {
@@ -527,6 +509,9 @@ int main(int argc, char **argv)
{
int rc;
+ struct osmo_sccp_instance *sccp_a;
+ struct osmo_sccp_instance *sccp_iu;
+
/* Track the use of talloc NULL memory contexts */
talloc_enable_null_tracking();
@@ -544,6 +529,10 @@ int main(int argc, char **argv)
tall_trans_ctx = talloc_named_const(tall_msc_ctx, 0, "transaction");
osmo_init_logging2(tall_msc_ctx, &log_info);
+
+ osmo_fsm_log_timeouts(true);
+ osmo_fsm_log_addr(true);
+
osmo_stats_init(tall_msc_ctx);
/* For --version, vty_init() must be called before handling options */
@@ -562,6 +551,9 @@ int main(int argc, char **argv)
if (!msc_network)
return -ENOMEM;
+ call_leg_init(msc_network);
+ mncc_call_fsm_init(msc_network);
+
if (msc_vlr_alloc(msc_network)) {
fprintf(stderr, "Failed to allocate VLR\n");
exit(1);
@@ -653,14 +645,18 @@ TODO: we probably want some of the _net_ ctrl commands from bsc_base_ctrl_cmds_i
return 4;
}
- osmo_fsm_log_addr(true);
+ if (msc_gsup_client_start(msc_network)) {
+ fprintf(stderr, "Failed to start GSUP client\n");
+ exit(1);
+ }
+
+ msc_a_i_t_gsup_init(msc_network);
+
if (msc_vlr_start(msc_network)) {
fprintf(stderr, "Failed to start VLR\n");
exit(1);
}
- ran_conn_init();
-
if (db_prepare()) {
printf("DB: Failed to prepare database.\n");
return 5;
@@ -690,7 +686,7 @@ TODO: we probably want some of the _net_ ctrl commands from bsc_base_ctrl_cmds_i
return 7;
}
- if (ss7_setup(tall_msc_ctx)) {
+ if (ss7_setup(tall_msc_ctx, &sccp_a, &sccp_iu)) {
printf("Setting up SCCP client failed.\n");
return 8;
}
@@ -700,13 +696,37 @@ TODO: we probably want some of the _net_ ctrl commands from bsc_base_ctrl_cmds_i
return 9;
}
+ msc_network->a.sri = sccp_ran_init(msc_network, sccp_a, OSMO_SCCP_SSN_BSSAP,
+ "OsmoMSC-A", &msc_ran_infra[OSMO_RAT_GERAN_A],
+ msc_network);
+ if (!msc_network->a.sri) {
+ printf("Setting up A receiver failed\n");
+ return 10;
+ }
+ LOGP(DMSC, LOGL_NOTICE, "A-interface: SCCP user %s, cs7-instance %u (%s)\n",
+ osmo_sccp_user_name(msc_network->a.sri->scu),
+ osmo_sccp_get_ss7(msc_network->a.sri->sccp)->cfg.id,
+ osmo_sccp_get_ss7(msc_network->a.sri->sccp)->cfg.name);
+
#ifdef BUILD_IU
- /* Set up IuCS */
- ranap_iu_init(tall_msc_ctx, DRANAP, "OsmoMSC-IuCS", msc_network->iu.sccp, rcvmsg_iu_cs, rx_iu_event);
-#endif
+ talloc_asn1_ctx = talloc_named_const(tall_msc_ctx, 0, "asn1");
+
+ msc_network->iu.sri = sccp_ran_init(msc_network, sccp_iu, OSMO_SCCP_SSN_RANAP,
+ "OsmoMSC-IuCS", &msc_ran_infra[OSMO_RAT_UTRAN_IU],
+ msc_network);
+ if (!msc_network->iu.sri) {
+ printf("Setting up IuCS receiver failed\n");
+ return 11;
+ }
- /* Set up A interface */
- a_init(msc_network->a.sccp, msc_network);
+ /* Compatibility with legacy osmo-hnbgw that was unable to properly handle RESET messages. */
+ msc_network->iu.sri->ignore_missing_reset = true;
+
+ LOGP(DMSC, LOGL_NOTICE, "Iu-interface: SCCP user %s, cs7-instance %u (%s)\n",
+ osmo_sccp_user_name(msc_network->iu.sri->scu),
+ osmo_sccp_get_ss7(msc_network->iu.sri->sccp)->cfg.id,
+ osmo_sccp_get_ss7(msc_network->iu.sri->sccp)->cfg.name);
+#endif
/* Init RRLP handlers */
msc_rrlp_init();
diff --git a/tests/Makefile.am b/tests/Makefile.am
index dc5194c0a..ee4f47a0c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -70,7 +70,7 @@ vty-transcript-test:
osmo_verify_transcript_vty.py -v \
-n OsmoMSC -p 4254 \
-r "$(top_builddir)/src/osmo-msc/osmo-msc -c $(top_srcdir)/doc/examples/osmo-msc/osmo-msc.cfg" \
- $(U) $(srcdir)/*.vty
+ $(U) $${T:-$(srcdir)/*.vty}
rm -f $(builddir)/sms.db
# don't run multiple tests concurrently so that the ports don't conflict
diff --git a/tests/msc_vlr/Makefile.am b/tests/msc_vlr/Makefile.am
index dea63e588..29c5fb1a1 100644
--- a/tests/msc_vlr/Makefile.am
+++ b/tests/msc_vlr/Makefile.am
@@ -21,21 +21,10 @@ AM_CFLAGS = \
AM_LDFLAGS = \
-Wl,--wrap=osmo_gsup_client_create2 \
-Wl,--wrap=osmo_gsup_client_send \
- -Wl,--wrap=a_iface_tx_dtap \
- -Wl,--wrap=a_iface_tx_clear_cmd \
- -Wl,--wrap=a_iface_tx_paging \
- -Wl,--wrap=ranap_iu_tx \
- -Wl,--wrap=ranap_iu_tx_release \
- -Wl,--wrap=ranap_iu_tx_common_id \
- -Wl,--wrap=ranap_iu_page_cs \
- -Wl,--wrap=msc_stop_paging \
-Wl,--wrap=gsm340_gen_scts \
-Wl,--wrap=osmo_get_rand_id \
- -Wl,--wrap=msc_mgcp_call_release \
- -Wl,--wrap=msc_mgcp_try_call_assignment \
- -Wl,--wrap=a_iface_tx_cipher_mode \
- -Wl,--wrap=ranap_iu_tx_sec_mode_cmd \
- -Wl,--wrap=osmo_sccp_tx_data_msg \
+ -Wl,--wrap=ran_peers_down_paging \
+ -Wl,--wrap=call_leg_ensure_ci \
$(NULL)
LDADD = \
@@ -48,6 +37,7 @@ LDADD = \
$(LIBOSMOABIS_LIBS) \
$(LIBOSMOSIGTRAN_LIBS) \
$(LIBOSMORANAP_LIBS) \
+ $(LIBASN1C_LIBS) \
$(LIBOSMOMGCPCLIENT_LIBS) \
$(LIBOSMOGSUPCLIENT_LIBS) \
$(LIBRARY_GSM) \
diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c
index f847bb306..9eadec7f9 100644
--- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c
+++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c
@@ -44,7 +44,7 @@ static void _test_auth_reuse(enum osmo_rat_type 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");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -79,14 +79,14 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
/* TL AUTN */
"2510" "8704f5ba55f30000d2ee44b22c8ea919"
/* TL RES */
- "2708" "e229c19e791f2e41",
+ "2708" "e229c19e791f2e41" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
if (via_ran == OSMO_RAT_GERAN_A) {
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -99,19 +99,19 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
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("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000000156f00804032443f2" HLR_TO_VLR,
+ "12010809710000000156f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
+ gsup_rx("06010809710000000156f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
@@ -132,7 +132,7 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
expect_release_clear(via_ran);
ms_sends_msg("055b");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
btw("LU was successful, and the conn has already been closed");
EXPECT_CONN_COUNT(0);
@@ -151,12 +151,9 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
" and reuses old auth vector");
auth_request_sent = true;
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052474"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -180,8 +177,8 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
/* Release connection */
expect_release_clear(via_ran);
- conn_conclude_cm_service_req(g_conn, via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
+ ran_sends_clear_complete(via_ran);
btw("all requests serviced, conn has been released");
EXPECT_CONN_COUNT(0);
@@ -199,13 +196,10 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
" and needs to request a second auth vector from HLR");
auth_request_sent = false;
cm_service_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("052478"
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
+ ms_sends_msg("052474"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == false, "%d");
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
@@ -227,7 +221,7 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
"2310" "1159ec926a50e98c034a6b7d7c9f418d"
"2410" "df3a03d9ca5335641efc8e36d76cd20b"
"2510" "1843a645b98d00005b2d666af46c45d9"
- "2708" "7db47cf7f81e4dc7",
+ "2708" "7db47cf7f81e4dc7" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
@@ -252,8 +246,8 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
/* Release connection */
expect_release_clear(via_ran);
- conn_conclude_cm_service_req(g_conn, via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
+ ran_sends_clear_complete(via_ran);
btw("all requests serviced, conn has been released");
EXPECT_CONN_COUNT(0);
@@ -264,7 +258,7 @@ static void _test_auth_reuse(enum osmo_rat_type via_ran,
ms_sends_msg("050130"
"089910070000106005" /* IMSI */);
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
EXPECT_CONN_COUNT(0);
clear_vlr();
diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.err b/tests/msc_vlr/msc_vlr_test_authen_reuse.err
index 56da5b9c2..9b8555d8c 100644
--- a/tests/msc_vlr/msc_vlr_test_authen_reuse.err
+++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.err
@@ -1,2534 +1,3079 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_auth_use_twice_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT, only one tuple; 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (conn,_test_auth_reuse)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (active-conn,_test_auth_reuse)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=2 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=2 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 2, as much as is allowed.
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 2
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and needs to request a second auth vector from HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){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(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 0
gsup_tx_confirmed == 1
- from HLR, rx _SEND_AUTH_INFO_RESULT, second tuple; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DVLR GSUP rx 111: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc70a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Received 1 auth tuples
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
auth_request_sent == 1
cm_service_result_sent == 0
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_auth_use_twice_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_auth_use_twice_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT, only one tuple; 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (conn,_test_auth_reuse)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (active-conn,_test_auth_reuse)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=2 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=2 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 2, as much as is allowed.
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 2
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and needs to request a second auth vector from HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){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(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 0
gsup_tx_confirmed == 1
- from HLR, rx _SEND_AUTH_INFO_RESULT, second tuple; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DVLR GSUP rx 111: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc70a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Received 1 auth tuples
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
auth_request_sent == 1
cm_service_result_sent == 0
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- Iu Release --UTRAN-Iu--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_auth_use_twice_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_auth_use_infinitely_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT, only one tuple; 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (conn,_test_auth_reuse)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (active-conn,_test_auth_reuse)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=2 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=2 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 2
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 2
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=3 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=3 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=3 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=3 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 3
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 3
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=4 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=4 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=4 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=4 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_auth_use_infinitely_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_auth_use_infinitely_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT, only one tuple; 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (conn,_test_auth_reuse)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (active-conn,_test_auth_reuse)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=2 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=2 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 2
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 2
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=3 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=3 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=3 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=3 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 3
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 3
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and reuses old auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=4 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=4 key_seq=0 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=4 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=4 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- Iu Release --UTRAN-Iu--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_auth_use_infinitely_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_auth_reuse_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT, only one tuple; 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (conn,_test_auth_reuse)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (active-conn,_test_auth_reuse)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 1, as much as is allowed.
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and needs to request a second auth vector from HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){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(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 0
gsup_tx_confirmed == 1
- from HLR, rx _SEND_AUTH_INFO_RESULT, second tuple; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DVLR GSUP rx 111: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc70a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Received 1 auth tuples
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
auth_request_sent == 1
cm_service_result_sent == 0
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_auth_reuse_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_auth_reuse_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT, only one tuple; 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (conn,_test_auth_reuse)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_auth_reuse: now used by 2 (active-conn,_test_auth_reuse)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_auth_reuse: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- Now the auth tuple has use_count == 1, as much as is allowed.
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_auth_reuse: now used by 2 (attached,_test_auth_reuse)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_auth_reuse: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, and needs to request a second auth vector from HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){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(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 0
gsup_tx_confirmed == 1
- from HLR, rx _SEND_AUTH_INFO_RESULT, second tuple; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DVLR GSUP rx 111: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f003622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc70a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Received 1 auth tuples
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
auth_request_sent == 1
cm_service_result_sent == 0
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- Iu Release --UTRAN-Iu--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_auth_reuse_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c
index b3a6471fe..9ca3bf175 100644
--- a/tests/msc_vlr/msc_vlr_test_call.c
+++ b/tests/msc_vlr/msc_vlr_test_call.c
@@ -32,11 +32,13 @@ static void mncc_sends_to_cc(uint32_t msg_type, struct gsm_mncc *mncc)
mncc_tx_to_cc(net, msg_type, mncc);
}
+/*
static void on_call_release_mncc_sends_to_cc(uint32_t msg_type, struct gsm_mncc *mncc)
{
mncc->msg_type = msg_type;
on_call_release_mncc_sends_to_cc_data = mncc;
}
+*/
#define IMSI "901700000010650"
@@ -50,7 +52,7 @@ static void standard_lu()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -111,7 +113,8 @@ static void standard_lu()
"2310" "65af0527fda95b0dc5ae4aa515cdf32f"
"2410" "537c3b35a3b13b08d08eeb28098f45cc"
"2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
+ "2708" "0edb0eadbea94ac2"
+ HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -123,18 +126,18 @@ static void standard_lu()
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("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000000156f00804032443f2" HLR_TO_VLR,
+ "12010809710000000156f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
+ gsup_rx("06010809710000000156f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
@@ -149,7 +152,7 @@ static void standard_lu()
VERBOSE_ASSERT(iu_release_sent, == true, "%d"); \
btw("LU was successful, and the conn has already been closed");
- rnc_sends_release_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
vsub = vlr_subscr_find_by_imsi(net->vlr, IMSI, __func__);
@@ -176,12 +179,9 @@ static void test_call_mo()
auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9";
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052471"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -254,7 +254,7 @@ static void test_call_mo()
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
OSMO_ASSERT(iu_release_sent);
- rnc_sends_release_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -274,13 +274,12 @@ static void test_call_mt()
standard_lu();
BTW("after a while, MNCC asks us to setup a call, causing Paging");
-
+
paging_expect_imsi(IMSI);
paging_sent = false;
mncc_sends_to_cc(MNCC_SETUP_REQ, &mncc);
VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
btw("MS replies with Paging Response, and VLR sends Auth Request");
auth_request_sent = false;
@@ -299,7 +298,6 @@ static void test_call_mt()
btw("MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup");
dtap_expect_tx("0305" /* CC: Setup */);
ms_sends_security_mode_complete();
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
cc_to_mncc_expect_tx(IMSI, MNCC_CALL_CONF_IND);
ms_sends_msg("8348" /* CC: Call Confirmed */
@@ -338,7 +336,7 @@ static void test_call_mt()
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
OSMO_ASSERT(iu_release_sent);
- rnc_sends_release_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -358,13 +356,12 @@ static void test_call_mt2()
standard_lu();
BTW("after a while, MNCC asks us to setup a call, causing Paging");
-
+
paging_expect_imsi(IMSI);
paging_sent = false;
mncc_sends_to_cc(MNCC_SETUP_REQ, &mncc);
VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
btw("MS replies with Paging Response, and VLR sends Auth Request");
auth_request_sent = false;
@@ -383,7 +380,6 @@ static void test_call_mt2()
btw("MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup");
dtap_expect_tx("0305" /* CC: Setup */);
ms_sends_security_mode_complete();
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
cc_to_mncc_expect_tx(IMSI, MNCC_CALL_CONF_IND);
ms_sends_msg("8348" /* CC: Call Confirmed */
@@ -401,15 +397,19 @@ static void test_call_mt2()
fake_time_passes(15, 23);
btw("The call failed, the BSC sends a BSSMAP Clear Request");
- on_call_release_mncc_sends_to_cc(MNCC_REL_REQ, &mncc);
+ /* FIXME: in this scenario, we send an MNCC_REL_CNF even though MNCC never asked us to MNCC_REL_REQ. Legacy
+ * behavior did get to both MNCC_REL_IND, then an MNCC_REL_REQ from MNCC as well as a final MNCC_REL_CNF, but
+ * this only worked synchronously, i.e. only with internal MNCC. Instead of mimicking that, we need a proper
+ * async solution that also works with a PBX. */
cc_to_mncc_expect_tx("", MNCC_REL_CNF);
- dtap_expect_tx("032d"); /* CC: Release */
+ dtap_expect_tx("032d080281af"); /* CC: Release */
expect_iu_release();
- ran_conn_clear_request(g_conn, 0);
+ msc_a_release_cn(msub_msc_a(g_msub));
+ OSMO_ASSERT(dtap_tx_confirmed);
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
OSMO_ASSERT(iu_release_sent);
- rnc_sends_release_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
/* Make sure a pending release timer doesn't fire later to access freed data */
@@ -436,12 +436,9 @@ static void test_call_mo_to_unknown()
auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9";
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052471"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -493,7 +490,7 @@ static void test_call_mo_to_unknown()
OSMO_ASSERT(iu_release_sent);
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
- rnc_sends_release_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -516,12 +513,9 @@ static void test_call_mo_to_unknown_timeout()
auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9";
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052471"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -574,7 +568,7 @@ static void test_call_mo_to_unknown_timeout()
OSMO_ASSERT(cc_to_mncc_tx_confirmed);
OSMO_ASSERT(iu_release_sent);
- rnc_sends_release_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
diff --git a/tests/msc_vlr/msc_vlr_test_call.err b/tests/msc_vlr/msc_vlr_test_call.err
index e36416205..620ec0eb0 100644
--- a/tests/msc_vlr/msc_vlr_test_call.err
+++ b/tests/msc_vlr/msc_vlr_test_call.err
@@ -1,1787 +1,2001 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_call_mo
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 23/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 901-70-23
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
- LU was successful, and the conn has already been closed
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + standard_lu: now used by 2 (attached,standard_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - standard_lu: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=MO-Call
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_cc: now used by 2 (rx_from_ms,cm_service_cc)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_cc)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_cc)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
----
+
+
- a call is initiated
- SETUP gets forwarded to MNCC
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_SETUP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DCC Unknown transaction ID 8, creating new trans.
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,conn,CC)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,active-conn,CC)
DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x80000001 tid-8) New transaction
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_cc == 3 (0x1a: dtap,cm_service,trans_cc)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: rx msg GSM48_MT_CC_SETUP: received_cm_service_request changes to false
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 2 (0x12: dtap,trans_cc)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx SETUP in state NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state NULL -> INITIATED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) SETUP to 123
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_SETUP_IND
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + cc: now used by 3 (cm_service_cc,rx_from_ms,cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cm_service_cc: now used by 2 (rx_from_ms,cc)
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx SETUP in state NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state NULL -> INITIATED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) SETUP to 123
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_SETUP_IND
MSC --> MNCC: callref 0x80000001: MNCC_SETUP_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- MNCC says that's fine
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_CALL_PROC_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_CALL_PROC_REQ in state INITIATED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state INITIATED -> MO_CALL_PROC
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_CALL_PROC_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_CALL_PROC_REQ in state INITIATED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state INITIATED -> MO_CALL_PROC
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_CALL_PROC: 8302
- DTAP matches expected message
- MS <--Call Assignment-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x80000001
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Starting call assignment
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: Allocated
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: is child of msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+ MS <--Call Assignment-- MSC: callref=0x80000001
- Total time passed: 1.000023 s
- The other call leg got established (not shown here), MNCC tells us so
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_ALERT_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_ALERT_REQ in state MO_CALL_PROC
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state MO_CALL_PROC -> CALL_DELIVERED
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_ALERT_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_ALERT_REQ in state MO_CALL_PROC
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state MO_CALL_PROC -> CALL_DELIVERED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_ALERTING: 8301
- DTAP matches expected message
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_SETUP_RSP
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_SETUP_RSP in state CALL_DELIVERED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting timer T313 with 30 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state CALL_DELIVERED -> CONNECT_IND
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_SETUP_RSP
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_SETUP_RSP in state CALL_DELIVERED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting timer T313 with 30 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state CALL_DELIVERED -> CONNECT_IND
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_CONNECT: 8307
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
- Total time passed: 2.000046 s
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_CONNECT_ACK
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_CONNECT_ACK (0x3:0xf)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx CONNECT_ACK in state CONNECT_IND
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending timer T313
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state CONNECT_IND -> ACTIVE
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_SETUP_COMPL_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_CONNECT_ACK
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx CONNECT_ACK in state CONNECT_IND
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending timer T313
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state CONNECT_IND -> ACTIVE
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending guard timer
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_SETUP_COMPL_IND
MSC --> MNCC: callref 0x80000001: MNCC_SETUP_COMPL_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
----
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
+
+
- RTP stream goes ahead, not shown here.
- Total time passed: 125.000091 s
----
+
+
- Call ends
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_DISCONNECT
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_DISCONNECT (0x3:0x25)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx DISCONNECT in state ACTIVE
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state ACTIVE -> DISCONNECT_IND
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_DISC_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_DISCONNECT
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx DISCONNECT in state ACTIVE
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state ACTIVE -> DISCONNECT_IND
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_DISC_IND
MSC --> MNCC: callref 0x80000001: MNCC_DISC_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_REL_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_REL_REQ in state DISCONNECT_IND
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) starting timer T308 with 10 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) new state DISCONNECT_IND -> RELEASE_REQ
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_REL_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx MNCC_REL_REQ in state DISCONNECT_IND
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) starting timer T308 with 10 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) new state DISCONNECT_IND -> RELEASE_REQ
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 832d
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_RELEASE_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_RELEASE_COMPL (0x3:0x2a)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) rx RELEASE_COMPL in state RELEASE_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending timer T308
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_REL_CNF
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_RELEASE_COMPL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) rx RELEASE_COMPL in state RELEASE_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) stopping pending timer T308
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000001 tid-8) tx MNCC_REL_CNF
MSC --> MNCC: callref 0x80000001: MNCC_REL_CNF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x0 tid-8) Freeing transaction
- MS <--Call Release-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x0
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x0 tid-8) new state RELEASE_REQ -> NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x0 tid-8) stopping pending guard timer
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_cc == 1 (0x2: dtap)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x0 tid-8) Freeing transaction
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x0 tid-8) new state RELEASE_REQ -> NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x0 tid-8) stopping pending guard timer
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cc: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: state_chg to RELEASING
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_EV_CALL_LEG_TERM
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
===== test_call_mo: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_call_mt
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 23/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 901-70-23
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
- LU was successful, and the conn has already been closed
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + standard_lu: now used by 2 (attached,standard_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - standard_lu: now used by 1 (attached)
----
+
+
- after a while, MNCC asks us to setup a call, causing Paging
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + mncc_tx_to_cc: now used by 2 (attached,mncc_tx_to_cc)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,mncc_tx_to_cc,CC)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + mncc_tx_to_gsm_cc: now used by 2 (attached,mncc_tx_to_gsm_cc)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,mncc_tx_to_gsm_cc,CC)
DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x423 tid-255) New transaction
-DMM Subscriber IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 not paged yet, start paging.
- UTRAN-Iu sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + Paging: now used by 4 (attached,mncc_tx_to_cc,CC,Paging)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - mncc_tx_to_cc: now used by 3 (attached,CC,Paging)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MNCC: establish call: Starting paging
+ paging request (CALL_CONVERSATIONAL) to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 on UTRAN-Iu
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + Paging: now used by 4 (attached,mncc_tx_to_gsm_cc,CC,Paging)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - mncc_tx_to_gsm_cc: now used by 3 (attached,CC,Paging)
paging_sent == 1
- paging_stopped == 0
- MS replies with Paging Response, and VLR sends Auth Request
MSC <--UTRAN-Iu-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 4 (attached,CC,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 5 (attached,CC,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 5 (attached,CC,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 4 (attached,CC,Paging,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 4 (attached,CC,Paging,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
security_mode_ctrl_sent == 1
- MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x423 tid-255,PAGING) Paging succeeded
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_cc == 1 (0x10: trans_cc)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T303 with 30 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state NULL -> CALL_PRESENT
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MNCC: establish call: Paging Response action (success)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MNCC: establish call: Removing Paging Request
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x423 tid-255) Paging succeeded
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + cc: now used by 2 (paging-response,cc)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T303 with 30 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state NULL -> CALL_PRESENT
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_SETUP: 0305
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 3 (attached,CC,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: CC
- paging_stopped == 1
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 3 (attached,CC,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - paging-response: now used by 1 (cc)
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_CALL_CONF
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_CALL_CONF (0x3:0x8)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx CALL_CONF in state CALL_PRESENT
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T303
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T310 with 30 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state CALL_PRESENT -> MO_TERM_CALL_CONF
- MS <--Call Assignment-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x423
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_CALL_CONF_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_CALL_CONF
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx CALL_CONF in state CALL_PRESENT
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T303
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T310 with 30 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state CALL_PRESENT -> MO_TERM_CALL_CONF
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Starting call assignment
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){ESTABLISHING}: Allocated
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){ESTABLISHING}: is child of msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+ MS <--Call Assignment-- MSC: callref=0x423
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_CALL_CONF_IND
MSC --> MNCC: callref 0x423: MNCC_CALL_CONF_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- Total time passed: 1.000023 s
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_ALERTING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_ALERTING (0x3:0x1)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx ALERTING in state MO_TERM_CALL_CONF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T310
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T301 with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state MO_TERM_CALL_CONF -> CALL_RECEIVED
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_ALERT_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_ALERTING
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx ALERTING in state MO_TERM_CALL_CONF
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T310
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T301 with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state MO_TERM_CALL_CONF -> CALL_RECEIVED
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_ALERT_IND
MSC --> MNCC: callref 0x423: MNCC_ALERT_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- Total time passed: 2.000046 s
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_CONNECT
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_CONNECT (0x3:0x7)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx CONNECT in state CALL_RECEIVED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T301
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state CALL_RECEIVED -> CONNECT_REQUEST
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_SETUP_CNF
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_CONNECT
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx CONNECT in state CALL_RECEIVED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T301
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state CALL_RECEIVED -> CONNECT_REQUEST
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_SETUP_CNF
MSC --> MNCC: callref 0x423: MNCC_SETUP_CNF
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx MNCC_SETUP_COMPL_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx MNCC_SETUP_COMPL_REQ in state CONNECT_REQUEST
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state CONNECT_REQUEST -> ACTIVE
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending guard timer
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx MNCC_SETUP_COMPL_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx MNCC_SETUP_COMPL_REQ in state CONNECT_REQUEST
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state CONNECT_REQUEST -> ACTIVE
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending guard timer
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_CONNECT_ACK: 030f
- DTAP matches expected message
----
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+
+
- RTP stream goes ahead, not shown here.
- Total time passed: 125.000091 s
----
+
+
- Call ends
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_DISCONNECT
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_DISCONNECT (0x3:0x25)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx DISCONNECT in state ACTIVE
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state ACTIVE -> DISCONNECT_IND
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_DISC_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_DISCONNECT
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx DISCONNECT in state ACTIVE
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state ACTIVE -> DISCONNECT_IND
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_DISC_IND
MSC --> MNCC: callref 0x423: MNCC_DISC_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx MNCC_REL_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx MNCC_REL_REQ in state DISCONNECT_IND
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T308 with 10 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state DISCONNECT_IND -> RELEASE_REQ
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx MNCC_REL_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx MNCC_REL_REQ in state DISCONNECT_IND
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T308 with 10 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state DISCONNECT_IND -> RELEASE_REQ
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 032d
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_RELEASE_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_RELEASE_COMPL (0x3:0x2a)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx RELEASE_COMPL in state RELEASE_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T308
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_REL_CNF
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_RELEASE_COMPL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx RELEASE_COMPL in state RELEASE_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T308
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_REL_CNF
MSC --> MNCC: callref 0x423: MNCC_REL_CNF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x0 tid-0) Freeing transaction
- MS <--Call Release-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x0
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x0 tid-0) new state RELEASE_REQ -> NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x0 tid-0) stopping pending guard timer
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_cc == 1 (0x2: dtap)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x0 tid-0) Freeing transaction
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x0 tid-0) new state RELEASE_REQ -> NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x0 tid-0) stopping pending guard timer
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - cc: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){ESTABLISHING}: state_chg to RELEASING
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){RELEASING}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){RELEASING}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_EV_CALL_LEG_TERM
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){RELEASING}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 5)
===== test_call_mt: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_call_mt2
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 23/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 901-70-23
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
- LU was successful, and the conn has already been closed
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + standard_lu: now used by 2 (attached,standard_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - standard_lu: now used by 1 (attached)
----
+
+
- after a while, MNCC asks us to setup a call, causing Paging
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + mncc_tx_to_cc: now used by 2 (attached,mncc_tx_to_cc)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,mncc_tx_to_cc,CC)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + mncc_tx_to_gsm_cc: now used by 2 (attached,mncc_tx_to_gsm_cc)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,mncc_tx_to_gsm_cc,CC)
DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x423 tid-255) New transaction
-DMM Subscriber IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 not paged yet, start paging.
- UTRAN-Iu sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + Paging: now used by 4 (attached,mncc_tx_to_cc,CC,Paging)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - mncc_tx_to_cc: now used by 3 (attached,CC,Paging)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MNCC: establish call: Starting paging
+ paging request (CALL_CONVERSATIONAL) to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 on UTRAN-Iu
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + Paging: now used by 4 (attached,mncc_tx_to_gsm_cc,CC,Paging)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - mncc_tx_to_gsm_cc: now used by 3 (attached,CC,Paging)
paging_sent == 1
- paging_stopped == 0
- MS replies with Paging Response, and VLR sends Auth Request
MSC <--UTRAN-Iu-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 4 (attached,CC,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 5 (attached,CC,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 5 (attached,CC,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 4 (attached,CC,Paging,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 4 (attached,CC,Paging,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
security_mode_ctrl_sent == 1
- MS sends SecurityModeControl acceptance, VLR accepts, sends CC Setup
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x423 tid-255,PAGING) Paging succeeded
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_cc == 1 (0x10: trans_cc)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T303 with 30 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state NULL -> CALL_PRESENT
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MNCC: establish call: Paging Response action (success)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MNCC: establish call: Removing Paging Request
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x423 tid-255) Paging succeeded
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + cc: now used by 2 (paging-response,cc)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T303 with 30 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state NULL -> CALL_PRESENT
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_SETUP: 0305
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 3 (attached,CC,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: CC
- paging_stopped == 1
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 3 (attached,CC,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - paging-response: now used by 1 (cc)
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_CALL_CONF
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_CALL_CONF (0x3:0x8)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx CALL_CONF in state CALL_PRESENT
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T303
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T310 with 30 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state CALL_PRESENT -> MO_TERM_CALL_CONF
- MS <--Call Assignment-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x423
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_CALL_CONF_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_CALL_CONF
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx CALL_CONF in state CALL_PRESENT
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T303
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T310 with 30 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state CALL_PRESENT -> MO_TERM_CALL_CONF
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Starting call assignment
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){ESTABLISHING}: Allocated
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){ESTABLISHING}: is child of msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+ MS <--Call Assignment-- MSC: callref=0x423
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_CALL_CONF_IND
MSC --> MNCC: callref 0x423: MNCC_CALL_CONF_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- Total time passed: 1.000023 s
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_ALERTING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_ALERTING (0x3:0x1)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx ALERTING in state MO_TERM_CALL_CONF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T310
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T301 with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state MO_TERM_CALL_CONF -> CALL_RECEIVED
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_ALERT_IND
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_ALERTING
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) rx ALERTING in state MO_TERM_CALL_CONF
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T310
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T301 with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state MO_TERM_CALL_CONF -> CALL_RECEIVED
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_ALERT_IND
MSC --> MNCC: callref 0x423: MNCC_ALERT_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- Total time passed: 16.000046 s
- The call failed, the BSC sends a BSSMAP Clear Request
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x110: trans_cc,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,CC,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,CC,conn)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) Freeing transaction
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T301
- MS <--Call Release-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x423
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx MNCC_REL_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) rx MNCC_REL_REQ in state CALL_RECEIVED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) starting timer T308 with 10 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state CALL_RECEIVED -> RELEASE_REQ
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
-- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 032d
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_COMMUNICATING}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (cc)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 4 (attached,CC,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,CC,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,CC,active-conn,msc_a_fsm_releasing_onenter)
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) Freeing transaction
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T301
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) starting timer T308 with 10 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state CALL_RECEIVED -> RELEASE_REQ
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: DTAP on UTRAN-Iu
+- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 032d080281af
- DTAP matches expected message
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) tx MNCC_REL_CNF
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) tx MNCC_REL_CNF
MSC --> MNCC: callref 0x423: MNCC_REL_CNF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending timer T308
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) new state RELEASE_REQ -> NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x423 tid-0) stopping pending guard timer
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_cc == 1 (0x100: release)
-- Iu Release --UTRAN-Iu--> MS
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) stopping pending timer T308
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x423 tid-0) new state RELEASE_REQ -> NULL
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: - cc: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){ESTABLISHING}: state_chg to RELEASING
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){RELEASING}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){RELEASING}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_EV_CALL_LEG_TERM
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){RELEASING}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Total time passed: 31.000069 s
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 5)
===== test_call_mt2: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_call_mo_to_unknown
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 23/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 901-70-23
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
- LU was successful, and the conn has already been closed
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + standard_lu: now used by 2 (attached,standard_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - standard_lu: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=MO-Call
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_cc: now used by 2 (rx_from_ms,cm_service_cc)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_cc)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_cc)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
----
+
+
- a call is initiated
- SETUP gets forwarded to MNCC
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_SETUP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DCC Unknown transaction ID 8, creating new trans.
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,conn,CC)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,active-conn,CC)
DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x80000002 tid-8) New transaction
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_cc == 3 (0x1a: dtap,cm_service,trans_cc)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: rx msg GSM48_MT_CC_SETUP: received_cm_service_request changes to false
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 2 (0x12: dtap,trans_cc)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) rx SETUP in state NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) new state NULL -> INITIATED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) SETUP to 123
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) tx MNCC_SETUP_IND
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + cc: now used by 3 (cm_service_cc,rx_from_ms,cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cm_service_cc: now used by 2 (rx_from_ms,cc)
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) rx SETUP in state NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) new state NULL -> INITIATED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) SETUP to 123
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) tx MNCC_SETUP_IND
MSC --> MNCC: callref 0x80000002: MNCC_SETUP_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- MNCC says that's fine
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_CALL_PROC_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_CALL_PROC_REQ in state INITIATED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) new state INITIATED -> MO_CALL_PROC
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_CALL_PROC_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_CALL_PROC_REQ in state INITIATED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) new state INITIATED -> MO_CALL_PROC
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_CALL_PROC: 8302
- DTAP matches expected message
- MS <--Call Assignment-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x80000002
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Starting call assignment
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: Allocated
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: is child of msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+ MS <--Call Assignment-- MSC: callref=0x80000002
- But the other side's MSISDN could not be resolved, MNCC tells us to cancel
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_REL_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_REL_REQ in state MO_CALL_PROC
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) starting timer T308 with 10 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) new state MO_CALL_PROC -> RELEASE_REQ
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_REL_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) rx MNCC_REL_REQ in state MO_CALL_PROC
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) starting timer T308 with 10 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) new state MO_CALL_PROC -> RELEASE_REQ
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 832d
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
- Total time passed: 10.000023 s
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) starting timer T308 with 10 seconds
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) starting timer T308 with 10 seconds
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 832d
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_RELEASE_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x12: dtap,trans_cc)
-DRLL Dispatching 04.08 message GSM48_MT_CC_RELEASE_COMPL (0x3:0x2a)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) rx RELEASE_COMPL in state RELEASE_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) stopping pending timer T308
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000002 tid-8) tx MNCC_REL_CNF
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + rx_from_ms: now used by 2 (cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Dispatching 04.08 message: CC GSM48_MT_CC_RELEASE_COMPL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) rx RELEASE_COMPL in state RELEASE_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) stopping pending timer T308
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000002 tid-8) tx MNCC_REL_CNF
MSC --> MNCC: callref 0x80000002: MNCC_REL_CNF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x0 tid-8) Freeing transaction
- MS <--Call Release-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x0
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x0 tid-8) new state RELEASE_REQ -> NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x0 tid-8) stopping pending guard timer
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_cc == 1 (0x2: dtap)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x0 tid-8) Freeing transaction
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x0 tid-8) new state RELEASE_REQ -> NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x0 tid-8) stopping pending guard timer
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cc: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: state_chg to RELEASING
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_EV_CALL_LEG_TERM
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
===== test_call_mo_to_unknown: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_call_mo_to_unknown_timeout
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 23/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 901-70-23
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
- LU was successful, and the conn has already been closed
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + standard_lu: now used by 2 (attached,standard_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - standard_lu: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=MO-Call
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_cc: now used by 2 (rx_from_ms,cm_service_cc)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_cc)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_cc)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
----
+
+
- a call is initiated
- SETUP gets forwarded to MNCC
MSC <--UTRAN-Iu-- MS: GSM48_MT_CC_SETUP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DCC Unknown transaction ID 8, creating new trans.
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,conn,CC)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_cc,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + CC: now used by 3 (attached,active-conn,CC)
DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x80000003 tid-8) New transaction
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_cc == 3 (0x1a: dtap,cm_service,trans_cc)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: rx msg GSM48_MT_CC_SETUP: received_cm_service_request changes to false
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 2 (0x12: dtap,trans_cc)
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) rx SETUP in state NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) new state NULL -> INITIATED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) SETUP to 123
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) tx MNCC_SETUP_IND
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: + cc: now used by 3 (cm_service_cc,rx_from_ms,cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cm_service_cc: now used by 2 (rx_from_ms,cc)
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) rx SETUP in state NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) new state NULL -> INITIATED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) SETUP to 123
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) tx MNCC_SETUP_IND
MSC --> MNCC: callref 0x80000003: MNCC_SETUP_IND
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x10: trans_cc)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (cc)
- MNCC says that's fine
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_CALL_PROC_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_CALL_PROC_REQ in state INITIATED
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) new state INITIATED -> MO_CALL_PROC
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_CALL_PROC_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_CALL_PROC_REQ in state INITIATED
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) new state INITIATED -> MO_CALL_PROC
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_CALL_PROC: 8302
- DTAP matches expected message
- MS <--Call Assignment-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x80000003
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Starting call assignment
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: Allocated
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: is child of msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+ MS <--Call Assignment-- MSC: callref=0x80000003
- But the other side's MSISDN could not be resolved, MNCC tells us to cancel
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_REL_REQ
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) stopping pending guard timer
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) starting guard timer with 180 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_REL_REQ in state MO_CALL_PROC
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) starting timer T308 with 10 seconds
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) new state MO_CALL_PROC -> RELEASE_REQ
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_REL_REQ
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) stopping pending guard timer
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) starting guard timer with 180 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) rx MNCC_REL_REQ in state MO_CALL_PROC
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) starting timer T308 with 10 seconds
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) new state MO_CALL_PROC -> RELEASE_REQ
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 832d
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
- Despite our repeated CC Release Requests, the MS does not respond anymore
- Total time passed: 10.000023 s
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) starting timer T308 with 10 seconds
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) starting timer T308 with 10 seconds
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: GSM48_MT_CC_RELEASE: 832d
- DTAP matches expected message
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
- The CC Release times out and we still properly clear the conn
- Total time passed: 20.000046 s
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) Freeing transaction
- MS <--Call Release-- MSC: subscr=IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref=0x80000003
-DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) tx MNCC_REL_CNF
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) Freeing transaction
+DMNCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) tx MNCC_REL_CNF
MSC --> MNCC: callref 0x80000003: MNCC_REL_CNF
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) new state RELEASE_REQ -> NULL
-DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ callref-0x80000003 tid-8) stopping pending guard timer
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_cc == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) new state RELEASE_REQ -> NULL
+DCC trans(CC IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ callref-0x80000003 tid-8) stopping pending guard timer
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - CC: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cc: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){ESTABLISHING}: state_chg to RELEASING
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_EV_CALL_LEG_TERM
+DCC call_leg(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){RELEASING}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
===== test_call_mo_to_unknown_timeout: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
index 015360914..d68ce056e 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
@@ -35,7 +35,7 @@ static void test_gsm_authen()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -62,13 +62,14 @@ static void test_gsm_authen()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000"
+ HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@@ -76,33 +77,30 @@ static void test_gsm_authen()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -117,10 +115,10 @@ static void test_gsm_authen()
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -138,7 +136,6 @@ static void test_gsm_authen()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -180,7 +177,6 @@ static void test_gsm_authen()
"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, __func__);
@@ -203,7 +199,7 @@ static void test_gsm_authen()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -211,7 +207,7 @@ static void test_gsm_authen()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -229,7 +225,7 @@ static void test_gsm_authen_tmsi()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -256,13 +252,14 @@ static void test_gsm_authen_tmsi()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000"
+ HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@@ -270,17 +267,17 @@ static void test_gsm_authen_tmsi()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -302,7 +299,7 @@ static void test_gsm_authen_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the new TMSI");
@@ -317,10 +314,7 @@ static void test_gsm_authen_tmsi()
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886" "05f4" "03020100");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -335,10 +329,10 @@ static void test_gsm_authen_tmsi()
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -356,7 +350,6 @@ static void test_gsm_authen_tmsi()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -398,7 +391,6 @@ static void test_gsm_authen_tmsi()
"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, __func__);
@@ -421,7 +413,7 @@ static void test_gsm_authen_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
/* TODO: when the subscriber detaches, the vlr_subscr gets
@@ -431,7 +423,7 @@ static void test_gsm_authen_tmsi()
expect_bssap_clear();
ms_sends_msg("050130" "05f4" "03020100");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
*/
@@ -447,17 +439,17 @@ static void test_gsm_authen_tmsi()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -479,7 +471,7 @@ static void test_gsm_authen_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("subscriber has the new TMSI");
@@ -495,7 +487,7 @@ static void test_gsm_authen_tmsi()
ms_sends_msg("050130" "05f4" "07060504");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -513,7 +505,7 @@ static void test_gsm_authen_imei()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -540,30 +532,31 @@ static void test_gsm_authen_imei()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000"
+ HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, 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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -575,19 +568,19 @@ static void test_gsm_authen_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
btw("HLR accepts the IMEI");
expect_bssap_clear();
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI");
@@ -601,7 +594,7 @@ static void test_gsm_authen_imei()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -619,7 +612,7 @@ static void test_gsm_authen_imei_nack()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -646,13 +639,14 @@ static void test_gsm_authen_imei_nack()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000"
+ HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@@ -660,18 +654,18 @@ static void test_gsm_authen_imei_nack()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -683,18 +677,18 @@ static void test_gsm_authen_imei_nack()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
expect_bssap_clear();
btw("HLR does not like the IMEI and sends NACK");
- gsup_rx("32010809710000004026f0510101", NULL);
+ gsup_rx("32010809710000004026f0510101" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -712,7 +706,7 @@ static void test_gsm_authen_imei_err()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -739,13 +733,13 @@ static void test_gsm_authen_imei_err()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@@ -753,18 +747,18 @@ static void test_gsm_authen_imei_err()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -776,18 +770,18 @@ static void test_gsm_authen_imei_err()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
expect_bssap_clear();
btw("HLR can't parse the message and returns ERR");
- gsup_rx("31010809710000004026f0020160", NULL);
+ gsup_rx("31010809710000004026f0020160" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -806,7 +800,7 @@ static void test_gsm_authen_tmsi_imei()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -833,13 +827,13 @@ static void test_gsm_authen_tmsi_imei()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@@ -847,18 +841,18 @@ static void test_gsm_authen_tmsi_imei()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -870,13 +864,13 @@ static void test_gsm_authen_tmsi_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
btw("HLR accepts the IMEI");
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -898,7 +892,7 @@ static void test_gsm_authen_tmsi_imei()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI and TMSI");
@@ -913,7 +907,7 @@ static void test_gsm_authen_tmsi_imei()
ms_sends_msg("050130" "05f4" "03020100");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -931,7 +925,7 @@ static void test_gsm_milenage_authen()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -978,29 +972,29 @@ static void test_gsm_milenage_authen()
"2310" "eb50e770ddcc3060101d2f43b6c2b884"
"2410" "76542abce5ff9345b0e8947f4c6e019c"
"2510" "f9375e6d41e1000096e7fe4ff1c27e39"
- "2708" "706f996719ba609c"
- ,NULL);
+ "2708" "706f996719ba609c" HLR_TO_VLR,
+ 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("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000000156f00804032443f2" HLR_TO_VLR,
+ "12010809710000000156f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000000156f0", NULL);
+ gsup_rx("06010809710000000156f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
@@ -1008,12 +1002,9 @@ static void test_gsm_milenage_authen()
auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
auth_request_expect_autn = NULL;
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052474"
"03305886" /* classmark 2: GSM phase 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -1028,10 +1019,10 @@ static void test_gsm_milenage_authen()
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -1049,7 +1040,6 @@ static void test_gsm_milenage_authen()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -1094,7 +1084,6 @@ static void test_gsm_milenage_authen()
"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, __func__);
@@ -1117,7 +1106,7 @@ static void test_gsm_milenage_authen()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -1126,7 +1115,7 @@ static void test_gsm_milenage_authen()
"089910070000106005" /* IMSI */);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -1141,7 +1130,7 @@ static void test_wrong_sres_length()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("0508020081680001"
"30" /* <-- Revision Level == 1, i.e. is_r99 == false */
"089910070000006402");
@@ -1168,13 +1157,13 @@ static void test_wrong_sres_length()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
@@ -1182,12 +1171,12 @@ static void test_wrong_sres_length()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("MS sends Authen Response with too short SRES data, auth is thwarted.");
- gsup_expect_tx("0b010809710000004026f0"); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000004026f0" VLR_TO_HLR); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_bssap_clear();
ms_sends_msg("05542d8b2c");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
index 457b77f67..0567938b1 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
@@ -1,263 +1,317 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_authen
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen: now used by 2 (attached,test_gsm_authen)
llist_count(&vsub->cs.requests) == 0
@@ -266,6 +320,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -273,14 +329,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,test_gsm_authen,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen: now used by 5 (attached,SMS-receiver,SMS,Paging,test_gsm_authen)
llist_count(&vsub->cs.requests) == 1
@@ -288,382 +343,468 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen: now used by
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x1 and...
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
- ...expecting sres=a29514ae
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and sends pending SMS
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,rx_from_ms,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen: now used by 5 (attached,SMS-receiver,SMS,conn,test_gsm_authen)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_gsm_authen)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_authen: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_authen_tmsi
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_gsm_authen_tmsi: now used by 2 (conn,test_gsm_authen_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_gsm_authen_tmsi: now used by 2 (active-conn,test_gsm_authen_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_gsm_authen_tmsi: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_gsm_authen_tmsi: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the new TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_authen_tmsi: now used by 2 (attached,test_gsm_authen_tmsi)
vsub != NULL == 1
@@ -671,104 +812,135 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_aut
vsub->tmsi_new == 0xffffffff
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_gsm_authen_tmsi: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_authen_tmsi: now used by 2 (attached,test_gsm_authen_tmsi)
llist_count(&vsub->cs.requests) == 0
@@ -777,6 +949,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + SMS: now use
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -784,14 +958,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 23
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 on GERAN-A
paging_expecting_tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + Paging: now used by 5 (attached,test_gsm_authen_tmsi,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_gsm_authen_tmsi: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_authen_tmsi: now used by 5 (attached,SMS-receiver,SMS,Paging,test_gsm_authen_tmsi)
llist_count(&vsub->cs.requests) == 1
@@ -799,315 +972,369 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_gsm_aut
- MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: tuple use_count=1 key_seq=2 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x1 and...
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
- ...expecting sres=a29514ae
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and sends pending SMS
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH on GERAN received SRES/RES: a29514ae (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,rx_from_ms,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_authen_tmsi: now used by 5 (attached,SMS-receiver,SMS,conn,test_gsm_authen_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_authen_tmsi: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_gsm_authen_tmsi)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_gsm_authen_tmsi: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_gsm_authen_tmsi: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber sends LU Request, this time with the TMSI
- Location Update request causes an Auth Req to MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=TMSI-0x03020100 LU-type=IMSI-ATTACH
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=TMSI-0x03020100 LU-type=IMSI-ATTACH
+DMM msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=3 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: tuple use_count=1 key_seq=3 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=3 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU: tuple use_count=1 key_seq=3 auth_types=0x1 and...
- ...rand=fa8f20b781b5881329d4fea26b1a3c51
- ...expecting sres=5afc8d72
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
auth_request_sent == 1
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MM GSM AUTHENTICATION RESPONSE (sres = 5afc8d72)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 5afc8d72)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 5afc8d72 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504, with TMSI 0x07060504
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU, with TMSI 0x07060504
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 + test_gsm_authen_tmsi: now used by 3 (attached,conn,test_gsm_authen_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 + test_gsm_authen_tmsi: now used by 3 (attached,active-conn,test_gsm_authen_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x07060504
vsub->tmsi == 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - test_gsm_authen_tmsi: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - test_gsm_authen_tmsi: now used by 2 (attached,active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use - dtap == 1 (0x100: release)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- subscriber has the new TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + test_gsm_authen_tmsi: now used by 2 (attached,test_gsm_authen_tmsi)
vsub != NULL == 1
@@ -1115,1243 +1342,1544 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + test_gsm_aut
vsub->tmsi_new == 0xffffffff
vsub->tmsi == 0x07060504
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - test_gsm_authen_tmsi: now used by 1 (attached)
----
+
+
- subscriber detaches, using new TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(TMSI)=117835012
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_authen_tmsi: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_authen_imei
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei: now used by 2 (conn,test_gsm_authen_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei: now used by 2 (active-conn,test_gsm_authen_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
-ran_conn_is_accepted() == false
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei: now used by 2 (attached,test_gsm_authen_imei)
strcmp(vsub->imei, "423423423423420") == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei: now used by 1 (attached)
----
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_authen_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_authen_imei_nack
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei_nack: now used by 2 (conn,test_gsm_authen_imei_nack)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei_nack: now used by 2 (active-conn,test_gsm_authen_imei_nack)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei_nack: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei_nack: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
-ran_conn_is_accepted() == false
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- HLR does not like the IMEI and sends NACK
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510101
-DVLR GSUP rx 14: 32010809710000004026f0510101
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_NACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_NACK
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 6
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_FAILURE
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 6
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101010a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_NACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_NACK
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 6
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_FAILURE
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 6
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_authen_imei_nack: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_authen_imei_err
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei_err: now used by 2 (conn,test_gsm_authen_imei_err)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_imei_err: now used by 2 (active-conn,test_gsm_authen_imei_err)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei_err: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_imei_err: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
-ran_conn_is_accepted() == false
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- HLR can't parse the message and returns ERR
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_ERROR: 31010809710000004026f0020160
-DVLR GSUP rx 14: 31010809710000004026f0020160
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_ERROR: 31010809710000004026f00201600a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) Check_IMEI_VLR failed; gmm_cause: Invalid mandatory information
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_NACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_NACK
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 6
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_FAILURE
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 6
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_NACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_NACK
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 6
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_FAILURE
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 6
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_ERROR: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_authen_imei_err: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_authen_tmsi_imei
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_tmsi_imei: now used by 2 (conn,test_gsm_authen_tmsi_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_gsm_authen_tmsi_imei: now used by 2 (active-conn,test_gsm_authen_tmsi_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_tmsi_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_gsm_authen_tmsi_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
-ran_conn_is_accepted() == false
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_gsm_authen_tmsi_imei: now used by 2 (conn,test_gsm_authen_tmsi_imei)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_gsm_authen_tmsi_imei: now used by 2 (active-conn,test_gsm_authen_tmsi_imei)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_gsm_authen_tmsi_imei: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_gsm_authen_tmsi_imei: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI and TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_gsm_authen_tmsi_imei: now used by 2 (attached,test_gsm_authen_tmsi_imei)
strcmp(vsub->imei, "423423423423420") == 0
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_gsm_authen_tmsi_imei: now used by 1 (attached)
----
+
+
- subscriber detaches, using TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(TMSI)=50462976
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_authen_tmsi_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_milenage_authen
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c0a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x3)
-- sending GSM Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x3)
+- sending GSM Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...expecting sres=9b36efdf
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM GSM AUTHENTICATION RESPONSE (sres = 9b36efdf)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 9b36efdf)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: 9b36efdf (4 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:GERAN-A:LU
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x3)
-- sending GSM Auth Request for IMSI-901700000010650:MSISDN-42342: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x3)
+- sending GSM Auth Request for IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...expecting sres=85aa3130
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = 85aa3130)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 85aa3130)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH on GERAN received SRES/RES: 85aa3130 (4 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_milenage_authen: now used by 2 (attached,test_gsm_milenage_authen)
llist_count(&vsub->cs.requests) == 0
@@ -2360,6 +2888,8 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -2367,14 +2897,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000010650:MSISDN-42342 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000010650:MSISDN-42342 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000010650:MSISDN-42342 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + Paging: now used by 5 (attached,test_gsm_milenage_authen,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_milenage_authen: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_milenage_authen: now used by 5 (attached,SMS-receiver,SMS,Paging,test_gsm_milenage_authen)
llist_count(&vsub->cs.requests) == 1
@@ -2382,306 +2911,391 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_milenage_authen: no
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x3)
-- sending GSM Auth Request for IMSI-901700000010650:MSISDN-42342: tuple use_count=1 key_seq=2 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x3)
+- sending GSM Auth Request for IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x3 and...
- ...rand=efa9c29a9742148d5c9070348716e1bb
- ...expecting sres=69d5f9fb
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and sends pending SMS
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = 69d5f9fb)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 69d5f9fb)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH on GERAN received SRES/RES: 69d5f9fb (4 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000010650:MSISDN-42342 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000010650:MSISDN-42342 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,rx_from_ms,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000010650:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_milenage_authen: now used by 5 (attached,SMS-receiver,SMS,conn,test_gsm_milenage_authen)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_milenage_authen: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_gsm_milenage_authen)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_milenage_authen: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_milenage_authen: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000010650:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_milenage_authen: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_wrong_sres_length
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Authen Response with too short SRES data, auth is thwarted.
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM AUTHENTICATION RESPONSE: l3 length invalid: 5
-DMM IMSI-901700000004620: MM AUTHENTICATION RESPONSE: invalid: parsing GSM AKA Auth Response failed with rc=-22; dispatching zero length SRES/RES to trigger failure
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = )
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM AUTHENTICATION RESPONSE: l3 length invalid: 5
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM AUTHENTICATION RESPONSE: invalid: parsing GSM AKA Auth Response failed with rc=-22; dispatching zero length SRES/RES to trigger failure
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = )
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: (0 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH SRES/RES missing
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000004026f0
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000004620, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_wrong_sres_length: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
index cbcc11d36..953b4c909 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
@@ -24,6 +24,11 @@
#include "msc_vlr_tests.h"
#include "stubs.h"
+static const struct osmo_gsm48_classmark classmark = {
+ // TODO
+ //bss_sends_bssap_mgmt("541203505886130b6014042f6503b8800d2100");
+};
+
static void test_ciph()
{
struct vlr_subscr *vsub;
@@ -36,7 +41,7 @@ static void test_ciph()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -61,7 +66,7 @@ static void test_ciph()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -78,33 +83,30 @@ static void test_ciph()
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("04010809710000004026f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
@@ -123,15 +125,15 @@ static void test_ciph()
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");
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -149,7 +151,6 @@ static void test_ciph()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -198,9 +199,8 @@ static void test_ciph()
"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
"0c7ac3e9e9b7db05");
- ms_sends_msg("0632");
+ ms_sends_ciphering_mode_complete(NULL);
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, __func__);
@@ -223,7 +223,7 @@ static void test_ciph()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -231,7 +231,7 @@ static void test_ciph()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -250,7 +250,7 @@ static void test_ciph_tmsi()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -275,7 +275,7 @@ static void test_ciph_tmsi()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -293,17 +293,17 @@ static void test_ciph_tmsi()
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("04010809710000004026f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -325,7 +325,7 @@ static void test_ciph_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the new TMSI");
@@ -341,10 +341,7 @@ static void test_ciph_tmsi()
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886" "05f4" "03020100");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
@@ -363,15 +360,15 @@ static void test_ciph_tmsi()
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");
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -389,7 +386,6 @@ static void test_ciph_tmsi()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -438,9 +434,8 @@ static void test_ciph_tmsi()
"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
"0c7ac3e9e9b7db05");
- ms_sends_msg("0632");
+ ms_sends_ciphering_mode_complete(NULL);
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, __func__);
@@ -463,7 +458,7 @@ static void test_ciph_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches, using TMSI");
@@ -471,7 +466,7 @@ static void test_ciph_tmsi()
ms_sends_msg("050130" "05f4" "03020100");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -490,7 +485,7 @@ static void test_ciph_imei()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -515,7 +510,7 @@ static void test_ciph_imei()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -532,18 +527,18 @@ static void test_ciph_imei()
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("04010809710000004026f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -555,19 +550,19 @@ static void test_ciph_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
btw("HLR accepts the IMEI");
expect_bssap_clear();
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI");
@@ -581,7 +576,7 @@ static void test_ciph_imei()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -600,7 +595,7 @@ static void test_ciph_imeisv()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -625,7 +620,7 @@ static void test_ciph_imeisv()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -648,8 +643,8 @@ static void test_ciph_imeisv()
vlr_subscr_put(vsub, __func__);
btw("MS sends Ciphering Mode Complete with IMEISV, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
- ms_sends_msg("063217094b32244332244372f5");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete("063217094b32244332244372f5");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("Subscriber has the IMEISV");
@@ -662,18 +657,18 @@ static void test_ciph_imeisv()
thwart_rx_non_initial_requests();
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -681,7 +676,7 @@ static void test_ciph_imeisv()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -701,7 +696,7 @@ static void test_ciph_tmsi_imei()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -726,7 +721,7 @@ static void test_ciph_tmsi_imei()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -743,18 +738,18 @@ static void test_ciph_tmsi_imei()
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("04010809710000004026f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -766,13 +761,13 @@ static void test_ciph_tmsi_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
EXPECT_ACCEPTED(false);
thwart_rx_non_initial_requests();
btw("HLR accepts the IMEI");
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -794,7 +789,7 @@ static void test_ciph_tmsi_imei()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI and TMSI");
@@ -809,7 +804,7 @@ static void test_ciph_tmsi_imei()
ms_sends_msg("050130" "05f4" "03020100");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -850,7 +845,7 @@ static void test_gsm_ciph_in_umts_env()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -916,7 +911,7 @@ static void test_gsm_ciph_in_umts_env()
"2310" "fa5d70f929ff298efb160413698dc107"
"2410" "ae9a3d8ce70ce13bac297bdb91cd6c68"
"2510" "5c0dc2eeaefa0000396882a1fe2cf80b"
- "2708" "65ab1cad216bfe87",
+ "2708" "65ab1cad216bfe87" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -928,23 +923,23 @@ static void test_gsm_ciph_in_umts_env()
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("04010809710000000156f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
+ gsup_rx("10010809710000000156f00804032443f2" HLR_TO_VLR,
+ "12010809710000000156f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000000156f0", NULL);
+ gsup_rx("06010809710000000156f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector");
@@ -952,12 +947,9 @@ static void test_gsm_ciph_in_umts_env()
auth_request_expect_rand = "b2661531b97b12c5a2edc21a0ed16fc5";
auth_request_expect_autn = "78cdd96c60840000322f421b3bb778b1";
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052474"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -972,15 +964,15 @@ static void test_gsm_ciph_in_umts_env()
VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept");
- ms_sends_msg("0632");
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -998,7 +990,6 @@ static void test_gsm_ciph_in_umts_env()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -1026,9 +1017,8 @@ static void test_gsm_ciph_in_umts_env()
btw("MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS");
dtap_expect_tx(sms);
- ms_sends_msg("0632");
+ ms_sends_ciphering_mode_complete(NULL);
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, __func__);
@@ -1051,7 +1041,7 @@ static void test_gsm_ciph_in_umts_env()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -1060,7 +1050,7 @@ static void test_gsm_ciph_in_umts_env()
"089910070000106005" /* IMSI */);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -1078,7 +1068,7 @@ static void test_a5_3_supported()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -1103,7 +1093,7 @@ static void test_a5_3_supported()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -1117,38 +1107,35 @@ static void test_a5_3_supported()
btw("BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3");
expect_cipher_mode_cmd("61855fb81fc2a800");
- bss_sends_bssap_mgmt("541203505886130b6014042f6503b8800d2100");
+ ms_sends_classmark_update(&classmark);
OSMO_ASSERT(cipher_mode_cmd_sent);
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("04010809710000004026f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804032443f2",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804032443f2" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
@@ -1168,15 +1155,15 @@ static void test_a5_3_supported()
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");
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -1194,7 +1181,6 @@ static void test_a5_3_supported()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -1243,9 +1229,8 @@ static void test_a5_3_supported()
"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
"0c7ac3e9e9b7db05");
- ms_sends_msg("0632");
+ ms_sends_ciphering_mode_complete(NULL);
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, __func__);
@@ -1268,7 +1253,7 @@ static void test_a5_3_supported()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -1276,7 +1261,7 @@ static void test_a5_3_supported()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -1299,7 +1284,7 @@ static void test_cm_service_needs_classmark_update()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -1324,7 +1309,7 @@ static void test_cm_service_needs_classmark_update()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -1338,28 +1323,28 @@ static void test_cm_service_needs_classmark_update()
btw("BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3");
expect_cipher_mode_cmd("61855fb81fc2a800");
- bss_sends_bssap_mgmt("541203505886130b6014042f6503b8800d2100");
+ ms_sends_classmark_update(&classmark);
OSMO_ASSERT(cipher_mode_cmd_sent);
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("04010809710000004026f0280102");
- ms_sends_msg("0632");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804032443f2",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804032443f2" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@@ -1367,10 +1352,7 @@ static void test_cm_service_needs_classmark_update()
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
@@ -1390,15 +1372,15 @@ static void test_cm_service_needs_classmark_update()
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");
+ ms_sends_ciphering_mode_complete(NULL);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -1414,7 +1396,6 @@ static void test_cm_service_needs_classmark_update()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -1434,7 +1415,6 @@ static void test_cm_service_needs_classmark_update()
vsub->classmark.classmark2_len = 0;
vsub->classmark.classmark3_len = 0;
vlr_subscr_put(vsub, __func__);
-
btw("MS sends Authen Response, VLR accepts and requests Ciphering");
btw("MS sends Authen Response, VLR accepts and requests Ciphering."
@@ -1446,7 +1426,7 @@ static void test_cm_service_needs_classmark_update()
btw("BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3");
expect_cipher_mode_cmd("e2b234f807886400");
- bss_sends_bssap_mgmt("541203505886130b6014042f6503b8800d2100");
+ ms_sends_classmark_update(&classmark);
OSMO_ASSERT(cipher_mode_cmd_sent);
btw("needs ciph, not yet accepted");
@@ -1474,9 +1454,8 @@ static void test_cm_service_needs_classmark_update()
"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
"0c7ac3e9e9b7db05");
- ms_sends_msg("0632");
+ ms_sends_ciphering_mode_complete(NULL);
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, __func__);
@@ -1499,7 +1478,7 @@ static void test_cm_service_needs_classmark_update()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -1507,7 +1486,7 @@ static void test_cm_service_needs_classmark_update()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
index 9ca5b8cac..869409813 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
+++ b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
@@ -1,291 +1,354 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ciph
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 61855fb81fc2a800
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
auth_request_sent == 1
cm_service_result_sent == 0
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-46071
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-46071: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 07fa7502e07e1c00
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-46071: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (cm_service_sms,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph: now used by 2 (attached,test_ciph)
llist_count(&vsub->cs.requests) == 0
@@ -294,6 +357,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -301,14 +366,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,test_ciph,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph: now used by 5 (attached,SMS-receiver,SMS,Paging,test_ciph)
llist_count(&vsub->cs.requests) == 1
@@ -316,411 +380,508 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph: now used by 4 (at
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x1 and...
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
- ...expecting sres=a29514ae
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH on GERAN received SRES/RES: a29514ae (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-46071
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-46071: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: e2b234f807886400
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-46071: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_sms == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (paging-response,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,ms_sends_ciphering_mode_complete,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (ms_sends_ciphering_mode_complete,sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph: now used by 5 (attached,SMS-receiver,SMS,conn,test_ciph)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_ciph)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_ciph: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ciph_tmsi
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 61855fb81fc2a800
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
auth_request_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_ciph_tmsi: now used by 2 (conn,test_ciph_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_ciph_tmsi: now used by 2 (active-conn,test_ciph_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_ciph_tmsi: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_ciph_tmsi: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the new TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tmsi: now used by 2 (attached,test_ciph_tmsi)
vsub != NULL == 1
@@ -728,128 +889,165 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tm
vsub->tmsi_new == 0xffffffff
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_ciph_tmsi: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
auth_request_sent == 1
cm_service_result_sent == 0
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 07fa7502e07e1c00
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (cm_service_sms,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tmsi: now used by 2 (attached,test_ciph_tmsi)
llist_count(&vsub->cs.requests) == 0
@@ -858,6 +1056,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + SMS: now use
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -865,14 +1065,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 23
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 on GERAN-A
paging_expecting_tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + Paging: now used by 5 (attached,test_ciph_tmsi,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_ciph_tmsi: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tmsi: now used by 5 (attached,SMS-receiver,SMS,Paging,test_ciph_tmsi)
llist_count(&vsub->cs.requests) == 1
@@ -880,1230 +1079,1547 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_ciph_tm
- MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: tuple use_count=1 key_seq=2 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x1 and...
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
- ...expecting sres=a29514ae
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH on GERAN received SRES/RES: a29514ae (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: e2b234f807886400
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + trans_sms == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (paging-response,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,ms_sends_ciphering_mode_complete,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (ms_sends_ciphering_mode_complete,sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tmsi: now used by 5 (attached,SMS-receiver,SMS,conn,test_ciph_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tmsi: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_ciph_tmsi)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_ciph_tmsi: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_ciph_tmsi: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches, using TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(TMSI)=50462976
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_ciph_tmsi: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ciph_imei
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 61855fb81fc2a800
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph_imei: now used by 2 (conn,test_ciph_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph_imei: now used by 2 (active-conn,test_ciph_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
-ran_conn_is_accepted() == false
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph_imei: now used by 2 (attached,test_ciph_imei)
strcmp(vsub->imei, "423423423423420") == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph_imei: now used by 1 (attached)
----
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_ciph_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ciph_imeisv
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=1
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=1
- ...perm algo: A5/1
- ...key: 61855fb81fc2a800
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
cipher_mode_cmd_sent == 1
cipher_mode_cmd_sent_with_imeisv == 1
lu_result_sent == 0
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
-DREF VLR subscr IMSI-901700000004620 + test_ciph_imeisv: now used by 2 (conn,test_ciph_imeisv)
+DREF VLR subscr IMSI-901700000004620 + test_ciph_imeisv: now used by 2 (active-conn,test_ciph_imeisv)
vsub->imeisv[0] == 0
-DREF VLR subscr IMSI-901700000004620 - test_ciph_imeisv: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - test_ciph_imeisv: now used by 1 (active-conn)
- MS sends Ciphering Mode Complete with IMEISV, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: got IMEISV: 4234234234234275F
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_CIPH_M_COMPL
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Ciphering Mode Complete contains Mobile Identity: IMEI-SV-4234234234234275F
DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_ID_IMEISV
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Event VLR_ULA_E_ID_IMEISV not permitted
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
lu_result_sent == 0
- Subscriber has the IMEISV
-DREF VLR subscr IMSI-901700000004620 + test_ciph_imeisv: now used by 2 (conn,test_ciph_imeisv)
+DREF VLR subscr IMSI-901700000004620 + test_ciph_imeisv: now used by 2 (active-conn,test_ciph_imeisv)
strcmp(vsub->imeisv, "4234234234234275") == 0
-DREF VLR subscr IMSI-901700000004620 - test_ciph_imeisv: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620 - test_ciph_imeisv: now used by 1 (active-conn)
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_ciph_imeisv: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ciph_tmsi_imei
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 61855fb81fc2a800
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph_tmsi_imei: now used by 2 (conn,test_ciph_tmsi_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ciph_tmsi_imei: now used by 2 (active-conn,test_ciph_tmsi_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph_tmsi_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ciph_tmsi_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
-ran_conn_is_accepted() == false
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_ciph_tmsi_imei: now used by 2 (conn,test_ciph_tmsi_imei)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_ciph_tmsi_imei: now used by 2 (active-conn,test_ciph_tmsi_imei)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_ciph_tmsi_imei: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_ciph_tmsi_imei: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI and TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_ciph_tmsi_imei: now used by 2 (attached,test_ciph_tmsi_imei)
strcmp(vsub->imei, "423423423423420") == 0
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_ciph_tmsi_imei: now used by 1 (attached)
----
+
+
- subscriber detaches, using TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(TMSI)=50462976
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_ciph_tmsi_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_gsm_ciph_in_umts_env
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends *UMTS AKA* Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220104ac8d1cd1a51937597ca1016fe69a0fa2104dacc4b2622087a75f0ac9b84440023103747da4e31545baa2db59e500bdae04724108544d35b945ccba01a7f1293575291c325102d837d2b0d6f00004b282d5acf23428d270837527064741f8ddb03622010b2661531b97b12c5a2edc21a0ed16fc521042fb4cfad2208da149b11d473f40023103fe013b1a428ea737c37f8f0288c8edf2410f275438c02b97e4d6f639dddda3d10b9251078cdd96c60840000322f421b3bb778b12708ed3ebf9cb6ea48ed0362201054d8f19778056666b41c8c25e52eb60c21040ff61e0f220826ec67fad307300023102868b0922c652616f1c975e3eaf7943a24106a84a20b1bc13ec9840466406d2dd91e251053f3e5632b3d00008865dd54d49663f2270886e848a9e7ad8cd5036220101f05607ff9c8984f46ad97f8c9a94982210491a36e3d22085d84421884fdcc0023102171fef54b81e30c83a598a5e44f634c2410f02d088697509827565b46938fece21125101b43bbf9815e00001cb9b2a9f6b8a77c2708373e67d62e719c510362201080d89a58a2a41050918caf68a4e93c642104a319f5f12208883df2b8672930002310fa5d70f929ff298efb160413698dc1072410ae9a3d8ce70ce13bac297bdb91cd6c6825105c0dc2eeaefa0000396882a1fe2cf80b270865ab1cad216bfe87
-DVLR GSUP rx 511: 0a010809710000000156f0036220104ac8d1cd1a51937597ca1016fe69a0fa2104dacc4b2622087a75f0ac9b84440023103747da4e31545baa2db59e500bdae04724108544d35b945ccba01a7f1293575291c325102d837d2b0d6f00004b282d5acf23428d270837527064741f8ddb03622010b2661531b97b12c5a2edc21a0ed16fc521042fb4cfad2208da149b11d473f40023103fe013b1a428ea737c37f8f0288c8edf2410f275438c02b97e4d6f639dddda3d10b9251078cdd96c60840000322f421b3bb778b12708ed3ebf9cb6ea48ed0362201054d8f19778056666b41c8c25e52eb60c21040ff61e0f220826ec67fad307300023102868b0922c652616f1c975e3eaf7943a24106a84a20b1bc13ec9840466406d2dd91e251053f3e5632b3d00008865dd54d49663f2270886e848a9e7ad8cd5036220101f05607ff9c8984f46ad97f8c9a94982210491a36e3d22085d84421884fdcc0023102171fef54b81e30c83a598a5e44f634c2410f02d088697509827565b46938fece21125101b43bbf9815e00001cb9b2a9f6b8a77c2708373e67d62e719c510362201080d89a58a2a41050918caf68a4e93c642104a319f5f12208883df2b8672930002310fa5d70f929ff298efb160413698dc1072410ae9a3d8ce70ce13bac297bdb91cd6c6825105c0dc2eeaefa0000396882a1fe2cf80b270865ab1cad216bfe87
-DREF VLR subscr IMSI-901700000010650 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220104ac8d1cd1a51937597ca1016fe69a0fa2104dacc4b2622087a75f0ac9b84440023103747da4e31545baa2db59e500bdae04724108544d35b945ccba01a7f1293575291c325102d837d2b0d6f00004b282d5acf23428d270837527064741f8ddb03622010b2661531b97b12c5a2edc21a0ed16fc521042fb4cfad2208da149b11d473f40023103fe013b1a428ea737c37f8f0288c8edf2410f275438c02b97e4d6f639dddda3d10b9251078cdd96c60840000322f421b3bb778b12708ed3ebf9cb6ea48ed0362201054d8f19778056666b41c8c25e52eb60c21040ff61e0f220826ec67fad307300023102868b0922c652616f1c975e3eaf7943a24106a84a20b1bc13ec9840466406d2dd91e251053f3e5632b3d00008865dd54d49663f2270886e848a9e7ad8cd5036220101f05607ff9c8984f46ad97f8c9a94982210491a36e3d22085d84421884fdcc0023102171fef54b81e30c83a598a5e44f634c2410f02d088697509827565b46938fece21125101b43bbf9815e00001cb9b2a9f6b8a77c2708373e67d62e719c510362201080d89a58a2a41050918caf68a4e93c642104a319f5f12208883df2b8672930002310fa5d70f929ff298efb160413698dc1072410ae9a3d8ce70ce13bac297bdb91cd6c6825105c0dc2eeaefa0000396882a1fe2cf80b270865ab1cad216bfe870a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=4ac8d1cd1a51937597ca1016fe69a0fa
- ...autn=2d837d2b0d6f00004b282d5acf23428d
- ...expecting res=37527064741f8ddb
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 *GSM AKA* Authen Response, VLR accepts and sends Ciphering Mode Command to MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM GSM AUTHENTICATION RESPONSE (sres = dacc4b26)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = dacc4b26)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: dacc4b26 (4 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000010650
-- sending Ciphering Mode Command for IMSI-901700000010650: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 7a75f0ac9b844400
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000010650: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:GERAN-A:LU
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with *UMTS AKA* Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=b2661531b97b12c5a2edc21a0ed16fc5
- ...autn=78cdd96c60840000322f421b3bb778b1
- ...expecting res=ed3ebf9cb6ea48ed
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends *GSM AKA* Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = 2fb4cfad)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2fb4cfad)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH on GERAN received SRES/RES: 2fb4cfad (4 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000010650:MSISDN-42342
-- sending Ciphering Mode Command for IMSI-901700000010650:MSISDN-42342: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: da149b11d473f400
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
cipher_mode_cmd_sent == 1
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000010650:MSISDN-42342: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (cm_service_sms,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_ciph_in_umts_env: now used by 2 (attached,test_gsm_ciph_in_umts_env)
llist_count(&vsub->cs.requests) == 0
@@ -2112,6 +2628,8 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -2119,14 +2637,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000010650:MSISDN-42342 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000010650:MSISDN-42342 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000010650:MSISDN-42342 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + Paging: now used by 5 (attached,test_gsm_ciph_in_umts_env,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_ciph_in_umts_env: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_ciph_in_umts_env: now used by 5 (attached,SMS-receiver,SMS,Paging,test_gsm_ciph_in_umts_env)
llist_count(&vsub->cs.requests) == 1
@@ -2134,491 +2651,600 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_ciph_in_umts_env: n
- MS replies with Paging Response, and VLR sends *UMTS AKA* Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342: tuple use_count=1 key_seq=2 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x3 and...
- ...rand=54d8f19778056666b41c8c25e52eb60c
- ...autn=53f3e5632b3d00008865dd54d49663f2
- ...expecting res=86e848a9e7ad8cd5
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends *GSM AKA* Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = 0ff61e0f)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 0ff61e0f)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH on GERAN received SRES/RES: 0ff61e0f (4 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000010650:MSISDN-42342
-- sending Ciphering Mode Command for IMSI-901700000010650:MSISDN-42342: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/1
- ...key: 26ec67fad3073000
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
cipher_mode_cmd_sent == 1
- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000010650:MSISDN-42342: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000010650:MSISDN-42342 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (paging-response,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000010650:MSISDN-42342 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342 callref-0x40000003 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,ms_sends_ciphering_mode_complete,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000010650:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (ms_sends_ciphering_mode_complete,sms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_ciph_in_umts_env: now used by 5 (attached,SMS-receiver,SMS,conn,test_gsm_ciph_in_umts_env)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + test_gsm_ciph_in_umts_env: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_gsm_ciph_in_umts_env)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_ciph_in_umts_env: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - test_gsm_ciph_in_umts_env: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000010650:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_gsm_ciph_in_umts_env: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_a5_3_supported
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 wants to send Ciphering Mode Command to MS -- but needs Classmark 2 to determine whether A5/3 is supported
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM IMSI-901700000004620: to determine whether A5/3 is supported, first ask for a Classmark Update to obtain Classmark 2
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Tx BSSMAP CLASSMARK REQUEST to BSC
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: N-DATA.req(00 01 58 )
- BSC <--BSSAP-BSS-MANAGEMENT-- MSC: CLASSMARK REQ [L3]> 00 01 58
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_WAIT_CLASSMARK_UPDATE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: For A5/3, we still need Classmark 2
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CLASSMARK_REQUEST on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_WAIT_CLASSMARK_UPDATE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3
-DMSC Looking for A subscriber: conn_id 0
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Found A subscriber for conn_id 0
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP DT1 CLASSMARK UPDATE
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP CLASSMARK UPDATE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_CLASSMARK_UPDATE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: state_chg to RAN_CONN_S_AUTH_CIPH
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: RAN decode: CLASSMARK_UPDATE
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: A5 capabilities recived from Classmark Update: no-cm1 no-cm2 no-cm3
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Received Event MSC_A_EV_CLASSMARK_UPDATE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: state_chg to MSC_A_ST_AUTH_CIPH
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/3
- ...key: 61855fb81fc2a800
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804032443f2
-DVLR GSUP rx 17: 10010809710000004026f00804032443f2
-DREF VLR subscr IMSI-901700000004620 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804032443f20a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) VLR: update for IMSI=901700000004620 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-42342
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-42342:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
auth_request_sent == 1
cm_service_result_sent == 0
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering. We already know Classmark 3, so no need to request Classmark Update.
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-42342
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-42342: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/3
- ...key: 07fa7502e07e1c00
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-42342: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (cm_service_sms,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_a5_3_supported: now used by 2 (attached,test_a5_3_supported)
llist_count(&vsub->cs.requests) == 0
@@ -2627,6 +3253,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000004 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000004 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -2634,14 +3262,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000004 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-42342 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-42342 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-42342 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + Paging: now used by 5 (attached,test_a5_3_supported,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_a5_3_supported: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_a5_3_supported: now used by 5 (attached,SMS-receiver,SMS,Paging,test_a5_3_supported)
llist_count(&vsub->cs.requests) == 1
@@ -2649,501 +3276,618 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_a5_3_supported: now use
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342: tuple use_count=1 key_seq=2 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x1 and...
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
- ...expecting sres=a29514ae
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH on GERAN received SRES/RES: a29514ae (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-42342
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-42342: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/3
- ...key: e2b234f807886400
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-42342: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-42342 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000004 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (paging-response,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-42342 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-42342 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000004 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,ms_sends_ciphering_mode_complete,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (ms_sends_ciphering_mode_complete,sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_a5_3_supported: now used by 5 (attached,SMS-receiver,SMS,conn,test_a5_3_supported)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_a5_3_supported: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_a5_3_supported)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_a5_3_supported: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_a5_3_supported: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000004 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000004 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-42342
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-42342
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-42342 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_a5_3_supported: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_cm_service_needs_classmark_update
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 wants to send Ciphering Mode Command to MS -- but needs Classmark 2 to determine whether A5/3 is supported
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM IMSI-901700000004620: to determine whether A5/3 is supported, first ask for a Classmark Update to obtain Classmark 2
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Tx BSSMAP CLASSMARK REQUEST to BSC
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: N-DATA.req(00 01 58 )
- BSC <--BSSAP-BSS-MANAGEMENT-- MSC: CLASSMARK REQ [L3]> 00 01 58
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_WAIT_CLASSMARK_UPDATE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: For A5/3, we still need Classmark 2
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CLASSMARK_REQUEST on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_WAIT_CLASSMARK_UPDATE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3
-DMSC Looking for A subscriber: conn_id 0
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Found A subscriber for conn_id 0
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP DT1 CLASSMARK UPDATE
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP CLASSMARK UPDATE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_CLASSMARK_UPDATE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: state_chg to RAN_CONN_S_AUTH_CIPH
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620
-- sending Ciphering Mode Command for IMSI-901700000004620: include_imeisv=0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: RAN decode: CLASSMARK_UPDATE
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: A5 capabilities recived from Classmark Update: no-cm1 no-cm2 no-cm3
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Received Event MSC_A_EV_CLASSMARK_UPDATE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: state_chg to MSC_A_ST_AUTH_CIPH
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/3
- ...key: 61855fb81fc2a800
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
lu_result_sent == 0
- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (lu,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - ms_sends_ciphering_mode_complete: now used by 1 (lu)
lu_result_sent == 0
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804032443f2
-DVLR GSUP rx 17: 10010809710000004026f00804032443f2
-DREF VLR subscr IMSI-901700000004620 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804032443f20a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) VLR: update for IMSI=901700000004620 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-42342
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-42342:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
auth_request_sent == 1
cm_service_result_sent == 0
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and requests Ciphering. We already know Classmark 3, so no need to request Classmark Update.
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH on GERAN received SRES/RES: 20bde240 (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-42342
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-42342: include_imeisv=0
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/3
- ...key: 07fa7502e07e1c00
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
cipher_mode_cmd_sent == 1
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-42342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-42342: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (cm_service_sms,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_cm_service_needs_classmark_update: now used by 2 (attached,test_cm_service_needs_classmark_update)
llist_count(&vsub->cs.requests) == 0
@@ -3152,6 +3896,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000005 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000005 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -3159,14 +3905,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000005 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-42342 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-42342 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-42342 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + Paging: now used by 5 (attached,test_cm_service_needs_classmark_update,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_cm_service_needs_classmark_update: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_cm_service_needs_classmark_update: now used by 5 (attached,SMS-receiver,SMS,Paging,test_cm_service_needs_classmark_update)
llist_count(&vsub->cs.requests) == 1
@@ -3174,210 +3919,257 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_cm_service_needs_classm
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342: tuple use_count=1 key_seq=2 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x1 and...
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
- ...expecting sres=a29514ae
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
----
+
+
- Fake a situation where Classmark 2 is unknown during proc_arq_fsm
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_cm_service_needs_classmark_update: now used by 6 (attached,SMS-receiver,SMS,Paging,conn,test_cm_service_needs_classmark_update)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_cm_service_needs_classmark_update: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_cm_service_needs_classmark_update: now used by 6 (attached,SMS-receiver,SMS,Paging,active-conn,test_cm_service_needs_classmark_update)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_cm_service_needs_classmark_update: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
- MS sends Authen Response, VLR accepts and requests Ciphering
- MS sends Authen Response, VLR accepts and requests Ciphering. Normally, we'd know Classmark 3, but this test removed it. Hence a Classmark Request is generated.
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-42342: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH on GERAN received SRES/RES: a29514ae (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-42342) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM IMSI-901700000004620:MSISDN-42342: to determine whether A5/3 is supported, first ask for a Classmark Update to obtain Classmark 2
-DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Tx BSSMAP CLASSMARK REQUEST to BSC
-DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: N-DATA.req(00 01 58 )
- BSC <--BSSAP-BSS-MANAGEMENT-- MSC: CLASSMARK REQ [L3]> 00 01 58
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_WAIT_CLASSMARK_UPDATE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: For A5/3, we still need Classmark 2
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CLASSMARK_REQUEST on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_WAIT_CLASSMARK_UPDATE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: - rx_from_ms: now used by 1 (paging-response)
- BSC sends back a BSSMAP Classmark Update, that triggers the Ciphering Mode Command in A5/3
-DMSC Looking for A subscriber: conn_id 0
-DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Found A subscriber for conn_id 0
-DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP DT1 CLASSMARK UPDATE
-DBSSAP RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Rx BSSMAP CLASSMARK UPDATE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_CLASSMARK_UPDATE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: state_chg to RAN_CONN_S_AUTH_CIPH
-DMM -> CIPHER MODE COMMAND IMSI-901700000004620:MSISDN-42342
-- sending Ciphering Mode Command for IMSI-901700000004620:MSISDN-42342: include_imeisv=0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: RAN decode: CLASSMARK_UPDATE
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: A5 capabilities recived from Classmark Update: no-cm1 no-cm2 no-cm3
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Received Event MSC_A_EV_CLASSMARK_UPDATE
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: state_chg to MSC_A_ST_AUTH_CIPH
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on GERAN-A
+- sending Ciphering Mode Command: retrieve_imeisv=0
- ...perm algo: A5/3
- ...key: e2b234f807886400
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
- needs ciph, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--GERAN-A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI-901700000004620:MSISDN-42342: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-42342 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000005 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + trans_sms == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + ms_sends_ciphering_mode_complete: now used by 2 (paging-response,ms_sends_ciphering_mode_complete)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-42342 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-42342 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342 callref-0x40000005 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,ms_sends_ciphering_mode_complete,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (ms_sends_ciphering_mode_complete,sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - ms_sends_ciphering_mode_complete: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_cm_service_needs_classmark_update: now used by 5 (attached,SMS-receiver,SMS,conn,test_cm_service_needs_classmark_update)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + test_cm_service_needs_classmark_update: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_cm_service_needs_classmark_update)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_cm_service_needs_classmark_update: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - test_cm_service_needs_classmark_update: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-42342 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP callref-0x40000005 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP callref-0x40000005 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-42342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-42342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-42342:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-42342
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-42342
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-42342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-42342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-42342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-42342 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-42342 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-42342:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_cm_service_needs_classmark_update: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c
index 3a1dffae7..1134d8971 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c
+++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.c
@@ -32,7 +32,7 @@ static void test_hlr_rej_auth_info_unknown_imsi()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -40,12 +40,12 @@ static void test_hlr_rej_auth_info_unknown_imsi()
btw("HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI");
auth_request_sent = false;
expect_bssap_clear();
- gsup_rx("09" "010809710000004026f0" "020102", NULL);
+ gsup_rx("09" "010809710000004026f0" "020102" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(auth_request_sent, == false, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -59,7 +59,7 @@ static void test_hlr_rej_auth_info_net_fail()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -67,12 +67,12 @@ static void test_hlr_rej_auth_info_net_fail()
btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail");
auth_request_sent = false;
expect_bssap_clear();
- gsup_rx("09" "010809710000004026f0" "020111", NULL);
+ gsup_rx("09" "010809710000004026f0" "020111" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(auth_request_sent, == false, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -92,7 +92,7 @@ static void test_hlr_rej_auth_info_net_fail_no_reuse_tuples()
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");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -109,29 +109,29 @@ static void test_hlr_rej_auth_info_net_fail_no_reuse_tuples()
/* TL TL rand */
"0322" "2010" "585df1ae287f6e273dce07090d61320b"
/* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
+ "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" HLR_TO_VLR,
+ 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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@@ -148,7 +148,7 @@ static void test_hlr_rej_auth_info_net_fail_no_reuse_tuples()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -156,12 +156,12 @@ static void test_hlr_rej_auth_info_net_fail_no_reuse_tuples()
btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail");
auth_request_sent = false;
expect_bssap_clear();
- gsup_rx("09" "010809710000004026f0" "020111", NULL);
+ gsup_rx("09" "010809710000004026f0" "020111" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(auth_request_sent, == false, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -181,7 +181,7 @@ static void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples()
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");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -198,29 +198,29 @@ static void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples()
/* TL TL rand */
"0322" "2010" "585df1ae287f6e273dce07090d61320b"
/* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
+ "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" HLR_TO_VLR,
+ 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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@@ -238,7 +238,7 @@ static void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -246,12 +246,12 @@ static void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples()
btw("HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI");
auth_request_sent = false;
expect_bssap_clear();
- gsup_rx("09" "010809710000004026f0" "020102", NULL);
+ gsup_rx("09" "010809710000004026f0" "020102" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(auth_request_sent, == false, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -267,7 +267,7 @@ static void test_hlr_acc_but_no_auth_tuples()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -279,12 +279,13 @@ static void test_hlr_acc_but_no_auth_tuples()
/* imsi */
"0108" "09710000004026f0"
/* NO auth vectors */
- ,NULL);
+ HLR_TO_VLR,
+ NULL);
VERBOSE_ASSERT(auth_request_sent, == false, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -304,7 +305,7 @@ static void test_hlr_rej_auth_info_net_fail_reuse_tuples()
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");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -322,28 +323,29 @@ static void test_hlr_rej_auth_info_net_fail_reuse_tuples()
"0322" "2010" "585df1ae287f6e273dce07090d61320b"
/* TL sres TL kc */
"2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
+ HLR_TO_VLR,
+ 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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@@ -360,35 +362,35 @@ static void test_hlr_rej_auth_info_net_fail_reuse_tuples()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
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);
+ gsup_rx("09" "010809710000004026f0" "020111" HLR_TO_VLR, 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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -401,18 +403,18 @@ static void test_hlr_rej_lu()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends UPDATE_LOCATION_ERROR");
expect_bssap_clear();
- gsup_rx("05" "010809710000004026f0" "020102",
+ gsup_rx("05" "010809710000004026f0" "020102" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -425,14 +427,14 @@ static void test_hlr_no_insert_data()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
/* TODO should we wait for OSMO_GSUP_MSGT_INSERT_DATA_REQUEST? */
@@ -440,7 +442,7 @@ static void test_hlr_no_insert_data()
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err
index 7afad90ba..811445954 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err
+++ b/tests/msc_vlr/msc_vlr_test_hlr_reject.err
@@ -1,1153 +1,1382 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_hlr_rej_auth_info_unknown_imsi
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000004620, cause 2
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f00201020a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 2
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
auth_request_sent == 0
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_hlr_rej_auth_info_net_fail
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000004620, cause 17
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f00201110a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 17
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
auth_request_sent == 0
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- Now one auth tuple is available, but used.
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_hlr_rej_auth_info_net_fail_reuse_tuples: now used by 2 (attached,test_hlr_rej_auth_info_net_fail_reuse_tuples)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_hlr_rej_auth_info_net_fail_reuse_tuples: now used by 1 (attached)
----
+
+
- 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){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(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071: tuple use_count=2 key_seq=0 auth_types=0x1 and...
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f00201110a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU: tuple use_count=2 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620:MSISDN-46071: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- Now one auth tuple is available, but used.
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_hlr_rej_auth_info_net_fail_no_reuse_tuples: now used by 2 (attached,test_hlr_rej_auth_info_net_fail_no_reuse_tuples)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_hlr_rej_auth_info_net_fail_no_reuse_tuples: now used by 1 (attached)
----
+
+
- 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){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(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 17
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f00201110a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 17
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
auth_request_sent == 0
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- Now one auth tuple is available, but used.
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: now used by 2 (attached,test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples)
vsub->last_tuple->use_count == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: now used by 1 (attached)
----
+
+
- 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){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(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 2
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f00201020a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result IMSI unknown in HLR
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 2
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
auth_request_sent == 0
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_hlr_acc_but_no_auth_tuples
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000004620, cause 17
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result Network failure
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 17
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
auth_request_sent == 0
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_hlr_rej_lu
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: 05010809710000004026f00201020a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR SUBSCR(IMSI-901700000004620) UpdateLocation failed; gmm_cause: IMSI unknown in HLR
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_NACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_NACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 2
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,vlr_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_hlr_rej_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_hlr_no_insert_data
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){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 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 5)
===== test_hlr_no_insert_data: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
index bb7ef1995..af5441b7c 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
+++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
@@ -36,7 +36,7 @@ static void test_hlr_timeout_lu_auth_info()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -58,7 +58,7 @@ static void test_hlr_timeout_lu_auth_info()
fake_time_passes(1, 235);
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
@@ -74,14 +74,14 @@ static void test_hlr_timeout_lu_upd_loc_result()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
BTW("HLR never sends GSUP _UPDATE_LOCATION_RESULT");
@@ -106,7 +106,7 @@ static void test_hlr_timeout_lu_upd_loc_result()
fake_time_passes(1, 235);
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
index 900488a93..9c8a97f70 100644
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
+++ b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
@@ -1,198 +1,244 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
----
+
+
- HLR never replies
- At first, we're still waiting
- Total time passed: 0.000423 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- Total time passed: 1.000658 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- Total time passed: 2.000893 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- Total time passed: 3.001128 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- Total time passed: 4.001363 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- Total time passed: 5.001598 s
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-- sending LU Reject for IMSI-901700000004620, cause 22
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Timeout of X1
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 22
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Event MSC_A_EV_CN_CLOSE not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_hlr_timeout_lu_upd_loc_result
- Total time passed: 0.000000 s
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 1.000658 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 2.000893 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 3.001128 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 4.001363 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 5.001598 s
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-- sending LU Reject for IMSI-901700000004620:MSISDN-46071, cause 22
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Timeout of X1
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+- sending LU Reject for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU, cause 22
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Event MSC_A_EV_CN_CLOSE not permitted
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c
index 489b98c9a..450909fe9 100644
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c
+++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.c
@@ -34,7 +34,7 @@ static void test_ms_timeout_lu_auth_resp()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -52,7 +52,7 @@ static void test_ms_timeout_lu_auth_resp()
"0322" "2010" "585df1ae287f6e273dce07090d61320b"
/* TL sres TL kc */
"2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
+ HLR_TO_VLR,NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -78,7 +78,7 @@ static void test_ms_timeout_lu_auth_resp()
fake_time_passes(1, 235);
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
@@ -95,7 +95,7 @@ static void test_ms_timeout_cm_auth_resp()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -120,39 +120,36 @@ static void test_ms_timeout_cm_auth_resp()
"0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
"2104" "5afc8d72" "2208" "2392f14f709ae000"
"0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
+ "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000" HLR_TO_VLR,
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -178,7 +175,7 @@ static void test_ms_timeout_cm_auth_resp()
fake_time_passes(1, 235);
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d");
@@ -199,24 +196,24 @@ static void test_ms_timeout_paging()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -234,14 +231,12 @@ static void test_ms_timeout_paging()
vlr_subscr_put(vsub, __func__);
vsub = NULL;
VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
btw("time passes and no paging result is received");
fake_time_passes(MSC_PAGING_RESPONSE_TIMER_DEFAULT - 1, 0);
btw("the paging timeout has not yet expired");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
vsub = vlr_subscr_find_by_imsi(net->vlr, imsi, __func__);
OSMO_ASSERT(vsub);
VERBOSE_ASSERT(vsub->cs.is_paging, == true, "%d");
@@ -257,7 +252,6 @@ static void test_ms_timeout_paging()
btw("the paging timeout expires, the paging as well as the requests are canceled");
fake_time_passes(2, 0);
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
vsub = vlr_subscr_find_by_imsi(net->vlr, imsi, __func__);
OSMO_ASSERT(vsub);
@@ -276,19 +270,18 @@ static void test_ms_timeout_paging()
vlr_subscr_put(vsub, __func__);
vsub = NULL;
VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
BTW("subscriber detaches, pagings are canceled");
expect_bssap_clear();
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
+
+ ran_sends_clear_complete();
+ EXPECT_CONN_COUNT(0);
vsub = vlr_subscr_find_by_imsi(net->vlr, imsi, __func__);
OSMO_ASSERT(!vsub);
- bss_sends_clear_complete();
- EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
}
@@ -304,7 +297,7 @@ static void test_classmark_update_timeout()
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
+ gsup_expect_tx("08010809710000004026f0" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -321,7 +314,7 @@ static void test_classmark_update_timeout()
"0322" "2010" "585df1ae287f6e273dce07090d61320b"
/* TL sres TL kc */
"2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,
+ HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -354,7 +347,7 @@ static void test_classmark_update_timeout()
fake_time_passes(1, 235);
btw("RAN_CONN_TIMEOUT has passed, conn is gone.");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err
index 8ff251a3c..963974b85 100644
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err
+++ b/tests/msc_vlr/msc_vlr_test_ms_timeout.err
@@ -1,447 +1,529 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 1.000658 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 2.000893 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 3.001128 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 4.001363 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 5.001598 s
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-- sending LU Reject for IMSI-901700000004620, cause 22
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Timeout of X1
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 22
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Event MSC_A_EV_CN_CLOSE not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: transition to state MSC_A_ST_RELEASING not permitted!
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== 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 <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d70000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x1 and...
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
- ...expecting sres=20bde240
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
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->ran_conns) == 1
+ llist_count(&msub_list) == 1
cm_service_result_sent == 0
- Total time passed: 1.000658 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
cm_service_result_sent == 0
- Total time passed: 2.000893 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
cm_service_result_sent == 0
- Total time passed: 3.001128 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
cm_service_result_sent == 0
- Total time passed: 4.001363 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
cm_service_result_sent == 0
- Total time passed: 5.001598 s
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Timeout of T0
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Close event, cause: CONGESTION
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Cancel: OSMO_FSM_TERM_ERROR
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(CONGESTION)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: CONGESTION
-- sending CM Service Reject for IMSI-901700000004620:MSISDN-46071, cause: CONGESTION
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Timeout of X1
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (cm_service_sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Cancel: OSMO_FSM_TERM_ERROR
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(CONGESTION)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: CONGESTION
+- sending CM Service Reject (Short-Messaging-Service) for IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ, cause: CONGESTION
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Event MSC_A_EV_CN_CLOSE not permitted
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: canceling still pending use: cm_service_sms (1)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Removing from parent Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
cm_service_result_sent == 2
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_ms_timeout_cm_auth_resp: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ms_timeout_paging
- Total time passed: 0.000000 s
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- LU was successful, and the conn has already been closed
lu_result_sent == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ms_timeout_paging: now used by 2 (attached,test_ms_timeout_paging)
llist_count(&vsub->cs.requests) == 0
@@ -450,6 +532,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -457,18 +541,16 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,test_ms_timeout_paging,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ms_timeout_paging: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- time passes and no paging result is received
- Total time passed: 9.000000 s
- the paging timeout has not yet expired
- paging_stopped == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ms_timeout_paging: now used by 5 (attached,SMS-receiver,SMS,Paging,test_ms_timeout_paging)
vsub->cs.is_paging == 1
- another request is added to the list but does not cause another paging
@@ -477,6 +559,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 7 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-1) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-1) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -484,15 +568,15 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-1) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 already paged.
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Already paging, not starting another request
llist_count(&vsub->cs.requests) == 2
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ms_timeout_paging: now used by 6 (attached,2*SMS-receiver,2*SMS,Paging)
paging_sent == 0
- the paging timeout expires, the paging as well as the requests are canceled
- Total time passed: 11.000000 s
-DPAG Paging failure for IMSI-901700000004620:MSISDN-46071 (event=1)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0,PAGING) paging_cb_mmsms_est_req(expired)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (expired)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) mmsms_paging_cb(expired)
DLSMS SMC(0) message MMSMS-REL-IND received in state MM_CONN_PENDING
DLSMS SMC(0) MM layer is released
DLSMS SMC(0) new CP state MM_CONN_PENDING -> IDLE
@@ -507,8 +591,9 @@ DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Free
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 4 (attached,SMS-receiver,SMS,Paging)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-1,PAGING) paging_cb_mmsms_est_req(expired)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (expired)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-1) mmsms_paging_cb(expired)
DLSMS SMC(0) message MMSMS-REL-IND received in state MM_CONN_PENDING
DLSMS SMC(0) MM layer is released
DLSMS SMC(0) new CP state MM_CONN_PENDING -> IDLE
@@ -524,17 +609,19 @@ DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,Paging)
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 1 (attached)
- paging_stopped == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_ms_timeout_paging: now used by 2 (attached,test_ms_timeout_paging)
vsub->cs.is_paging == 0
llist_count(&vsub->cs.requests) == 0
----
+
+
- Now that the timeout has expired, another Paging is sent on request
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS-receiver: now used by 3 (attached,test_ms_timeout_paging,SMS-receiver)
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached,test_ms_timeout_paging,SMS-receiver,SMS)
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -542,27 +629,34 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,test_ms_timeout_paging,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_ms_timeout_paging: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
----
+
+
- subscriber detaches, pagings are canceled
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 5 (attached,SMS-receiver,SMS,Paging,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DPAG Paging failure for IMSI-901700000004620:MSISDN-46071 (event=1)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0,PAGING) paging_cb_mmsms_est_req(expired)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (expired)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) mmsms_paging_cb(expired)
DLSMS SMC(0) message MMSMS-REL-IND received in state MM_CONN_PENDING
DLSMS SMC(0) MM layer is released
DLSMS SMC(0) new CP state MM_CONN_PENDING -> IDLE
@@ -572,167 +666,208 @@ DLSMS SMR(0) TX SMS MNSMS-ERROR-IND
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state IDLE
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 4 (attached,SMS,Paging,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 5 (attached,SMS,Paging,gsm48_rx_mm_imsi_detach_ind,active-conn)
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 3 (attached,Paging,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 4 (attached,Paging,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
- paging_stopped == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 7)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_ms_timeout_paging: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_classmark_update_timeout
- Total time passed: 0.000000 s
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f00a0101
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
-- sending GSM Auth Request for IMSI-901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use GSM AKA (is_r99=no, at->vec.auth_types=0x1)
+- sending GSM Auth Request for IMSI-901700000004620:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x1 and...
- ...rand=585df1ae287f6e273dce07090d61320b
- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI-901700000004620 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 wants to send Ciphering Mode Command to MS -- but needs Classmark 2 to determine whether A5/3 is supported
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000004620) AUTH on GERAN received SRES/RES: 2d8b2c3e (4 bytes)
DVLR SUBSCR(IMSI-901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM IMSI-901700000004620: to determine whether A5/3 is supported, first ask for a Classmark Update to obtain Classmark 2
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Tx BSSMAP CLASSMARK REQUEST to BSC
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: N-DATA.req(00 01 58 )
- BSC <--BSSAP-BSS-MANAGEMENT-- MSC: CLASSMARK REQ [L3]> 00 01 58
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_WAIT_CLASSMARK_UPDATE
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: For A5/3, we still need Classmark 2
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CLASSMARK_REQUEST on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_WAIT_CLASSMARK_UPDATE
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
----
+
+
- But the BSSMAP Classmark Update never arrives
- At first, we're still waiting
- Total time passed: 0.000423 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 1.000658 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 2.000893 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 3.001128 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 4.001363 s
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 0
- Total time passed: 5.001598 s
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Timeout of T0
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: Close event, cause: CONGESTION
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_WAIT_CLASSMARK_UPDATE}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-- sending LU Reject for IMSI-901700000004620, cause 22
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Event RAN_CONN_E_CN_CLOSE not permitted
-DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Timeout of X1
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: Event MSC_A_EV_UNUSED not permitted
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_WAIT_CLASSMARK_UPDATE}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 22
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Event MSC_A_EV_CN_CLOSE not permitted
+DREF VLR subscr IMSI-901700000004620 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
- RAN_CONN_TIMEOUT has passed, conn is gone.
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL IMSI-901700000004620: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620) MSC-A terminated
+DMSC msub(IMSI-901700000004620) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620) Free
+DREF VLR subscr IMSI-901700000004620 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
lu_result_sent == 2
===== test_classmark_update_timeout: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c
index 2a4a14ed7..d9ec091ac 100644
--- a/tests/msc_vlr/msc_vlr_test_no_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_no_authen.c
@@ -28,7 +28,6 @@ static void test_no_authen()
{
struct vlr_subscr *vsub;
const char *imsi = "901700000004620";
-
/* No auth only works on GERAN */
rx_from_ran = OSMO_RAT_GERAN_A;
@@ -36,14 +35,14 @@ static void test_no_authen()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -55,30 +54,27 @@ static void test_no_authen()
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
- BTW("after a while, a new conn sends a CM Service Request");
+ BTW("after a while, a new conn sends a CM Service Request (MO SMS)");
cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05 24 74 03 30 58 86 08 99 10 07 00 00 00 64 02");
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
EXPECT_ACCEPTED(true);
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged");
@@ -96,7 +92,6 @@ static void test_no_authen()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -128,7 +123,6 @@ static void test_no_authen()
"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, __func__);
@@ -151,7 +145,7 @@ static void test_no_authen()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -159,7 +153,7 @@ static void test_no_authen()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -178,14 +172,14 @@ static void test_no_authen_tmsi()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -194,7 +188,7 @@ static void test_no_authen_tmsi()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -216,7 +210,7 @@ static void test_no_authen_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the new TMSI");
@@ -229,19 +223,16 @@ static void test_no_authen_tmsi()
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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886" "05f4" "03020100");
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
EXPECT_ACCEPTED(true);
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("an SMS is sent, MS is paged using above TMSI");
@@ -259,7 +250,6 @@ static void test_no_authen_tmsi()
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -291,7 +281,6 @@ static void test_no_authen_tmsi()
"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, __func__);
@@ -314,7 +303,7 @@ static void test_no_authen_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("SMS is done, conn is gone");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
/* TODO: when the subscriber detaches, the vlr_subscr gets
@@ -328,14 +317,14 @@ static void test_no_authen_tmsi()
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -344,7 +333,7 @@ static void test_no_authen_tmsi()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -366,7 +355,7 @@ static void test_no_authen_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("subscriber has the new TMSI");
@@ -382,7 +371,7 @@ static void test_no_authen_tmsi()
ms_sends_msg("050130" "05f4" "07060504");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -401,14 +390,14 @@ static void test_no_authen_imei()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -418,7 +407,7 @@ static void test_no_authen_imei()
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -430,19 +419,19 @@ static void test_no_authen_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
/* 3GPP TS 23.003: 6.2.1 Composition of IMEI: the IMEI ends with a
* spare digit that shall be sent as zero by the MS. */
ms_sends_msg("0559084a32244332244302");
btw("HLR accepts the IMEI");
expect_bssap_clear();
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI");
@@ -456,7 +445,7 @@ static void test_no_authen_imei()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -476,14 +465,14 @@ static void test_no_authen_tmsi_imei()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -493,7 +482,7 @@ static void test_no_authen_tmsi_imei()
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -505,11 +494,11 @@ static void test_no_authen_tmsi_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
btw("HLR accepts the IMEI");
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -524,7 +513,7 @@ static void test_no_authen_tmsi_imei()
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI and TMSI");
@@ -539,7 +528,7 @@ static void test_no_authen_tmsi_imei()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -549,7 +538,7 @@ static void test_no_authen_imeisv()
{
struct vlr_subscr *vsub;
const char *imsi = "901700000004620";
-
+
/* No auth only works on GERAN */
rx_from_ran = OSMO_RAT_GERAN_A;
@@ -564,7 +553,7 @@ static void test_no_authen_imeisv()
OSMO_ASSERT(dtap_tx_confirmed);
btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("0559094332244332244372f5");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -576,8 +565,8 @@ static void test_no_authen_imeisv()
vlr_subscr_put(vsub, __func__);
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -589,12 +578,12 @@ static void test_no_authen_imeisv()
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -602,7 +591,7 @@ static void test_no_authen_imeisv()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -627,7 +616,7 @@ static void test_no_authen_imeisv_imei()
OSMO_ASSERT(dtap_tx_confirmed);
btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("0559094332244332244372f5");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -639,8 +628,8 @@ static void test_no_authen_imeisv_imei()
vlr_subscr_put(vsub, __func__);
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -650,7 +639,7 @@ static void test_no_authen_imeisv_imei()
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -662,17 +651,17 @@ static void test_no_authen_imeisv_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
btw("HLR accepts the IMEI");
expect_bssap_clear();
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEI");
@@ -686,7 +675,7 @@ static void test_no_authen_imeisv_imei()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -711,7 +700,7 @@ static void test_no_authen_imeisv_tmsi()
OSMO_ASSERT(dtap_tx_confirmed);
btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("0559094332244332244372f5");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -723,8 +712,8 @@ static void test_no_authen_imeisv_tmsi()
vlr_subscr_put(vsub, __func__);
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -733,7 +722,7 @@ static void test_no_authen_imeisv_tmsi()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -755,7 +744,7 @@ static void test_no_authen_imeisv_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
@@ -767,7 +756,7 @@ static void test_no_authen_imeisv_tmsi()
OSMO_ASSERT(dtap_tx_confirmed);
btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("0559095332244332244372f6");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -779,8 +768,8 @@ static void test_no_authen_imeisv_tmsi()
vlr_subscr_put(vsub, __func__);
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -789,7 +778,7 @@ static void test_no_authen_imeisv_tmsi()
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -811,7 +800,7 @@ static void test_no_authen_imeisv_tmsi()
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("subscriber has the new TMSI");
@@ -827,7 +816,7 @@ static void test_no_authen_imeisv_tmsi()
ms_sends_msg("050130" "05f4" "07060504");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -853,7 +842,7 @@ static void test_no_authen_imeisv_tmsi_imei()
OSMO_ASSERT(dtap_tx_confirmed);
btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("0559094332244332244372f5");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -865,8 +854,8 @@ static void test_no_authen_imeisv_tmsi_imei()
vlr_subscr_put(vsub, __func__);
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -876,7 +865,7 @@ static void test_no_authen_imeisv_tmsi_imei()
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);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("We will only do business when the IMEI is known");
EXPECT_CONN_COUNT(1);
@@ -888,11 +877,11 @@ static void test_no_authen_imeisv_tmsi_imei()
thwart_rx_non_initial_requests();
btw("MS replies with an Identity Response, VLR sends the IMEI to HLR");
- gsup_expect_tx("30010809710000004026f050090824433224433224f0");
+ gsup_expect_tx("30010809710000004026f050090824433224433224f0" VLR_TO_HLR);
ms_sends_msg("0559084a32244332244302");
btw("HLR accepts the IMEI");
- gsup_rx("32010809710000004026f0510100", NULL);
+ gsup_rx("32010809710000004026f0510100" HLR_TO_VLR, NULL);
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
EXPECT_CONN_COUNT(1);
@@ -907,7 +896,7 @@ static void test_no_authen_imeisv_tmsi_imei()
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
btw("Subscriber has the IMEISV, IMEI and TMSI");
@@ -923,7 +912,7 @@ static void test_no_authen_imeisv_tmsi_imei()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -951,25 +940,25 @@ static void test_no_authen_subscr_expire()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
vsub = vlr_subscr_find_by_imsi(net->vlr, imsi, __func__);
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err
index 6f5adb6d7..321889be4 100644
--- a/tests/msc_vlr/msc_vlr_test_no_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_no_authen.err
@@ -1,177 +1,229 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- LU was successful, and the conn has already been closed
lu_result_sent == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
-- after a while, a new conn sends a CM Service Request
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
+- after a while, a new conn sends a CM Service Request (MO SMS)
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
-ran_conn_is_accepted() == true
+msc_a_is_accepted() == true
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen: now used by 2 (attached,test_no_authen)
llist_count(&vsub->cs.requests) == 0
@@ -180,6 +232,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -187,14 +241,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,test_no_authen,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen: now used by 5 (attached,SMS-receiver,SMS,Paging,test_no_authen)
llist_count(&vsub->cs.requests) == 1
@@ -202,296 +255,380 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen: now used by
- MS replies with Paging Response, we deliver the SMS
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (rx_from_ms,paging-response,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen: now used by 5 (attached,SMS-receiver,SMS,conn,test_no_authen)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_no_authen)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_tmsi
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_no_authen_tmsi: now used by 2 (conn,test_no_authen_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_no_authen_tmsi: now used by 2 (active-conn,test_no_authen_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_no_authen_tmsi: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_no_authen_tmsi: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the new TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_tmsi: now used by 2 (attached,test_no_authen_tmsi)
vsub != NULL == 1
@@ -499,65 +636,90 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_auth
vsub->tmsi_new == 0xffffffff
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_tmsi: now used by 1 (attached)
----
+
+
- after a while, a new conn sends a CM Service Request using above TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
-ran_conn_is_accepted() == true
+msc_a_is_accepted() == true
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged using above TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_tmsi: now used by 2 (attached,test_no_authen_tmsi)
llist_count(&vsub->cs.requests) == 0
@@ -566,6 +728,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + SMS: now use
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -573,14 +737,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 23
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 on GERAN-A
paging_expecting_tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + Paging: now used by 5 (attached,test_no_authen_tmsi,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_tmsi: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_tmsi: now used by 5 (attached,SMS-receiver,SMS,Paging,test_no_authen_tmsi)
llist_count(&vsub->cs.requests) == 1
@@ -588,260 +751,317 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_auth
- MS replies with Paging Response using TMSI, we deliver the SMS
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 callref-0x40000002 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (rx_from_ms,paging-response,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_tmsi: now used by 5 (attached,SMS-receiver,SMS,conn,test_no_authen_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_tmsi: now used by 5 (attached,SMS-receiver,SMS,active-conn,test_no_authen_tmsi)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_tmsi: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_tmsi: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- SMS is done, conn is gone
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber sends LU Request, this time with the TMSI
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=TMSI-0x03020100 LU-type=IMSI-ATTACH
-DMM RAN_conn(TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=TMSI-0x03020100 LU-type=IMSI-ATTACH
+DMM msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504, with TMSI 0x07060504
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU, with TMSI 0x07060504
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 + test_no_authen_tmsi: now used by 3 (attached,conn,test_no_authen_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 + test_no_authen_tmsi: now used by 3 (attached,active-conn,test_no_authen_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x07060504
vsub->tmsi == 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - test_no_authen_tmsi: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - test_no_authen_tmsi: now used by 2 (attached,active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use - dtap == 1 (0x100: release)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- subscriber has the new TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + test_no_authen_tmsi: now used by 2 (attached,test_no_authen_tmsi)
vsub != NULL == 1
@@ -849,1141 +1069,1477 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + test_no_auth
vsub->tmsi_new == 0xffffffff
vsub->tmsi == 0x07060504
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - test_no_authen_tmsi: now used by 1 (attached)
----
+
+
- subscriber detaches, using new TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(TMSI)=117835012
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_tmsi: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_imei
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imei: now used by 2 (conn,test_no_authen_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imei: now used by 2 (active-conn,test_no_authen_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imei: now used by 2 (attached,test_no_authen_imei)
strcmp(vsub->imei, "423423423423420") == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imei: now used by 1 (attached)
----
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_tmsi_imei
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_tmsi_imei: now used by 2 (conn,test_no_authen_tmsi_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_tmsi_imei: now used by 2 (active-conn,test_no_authen_tmsi_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_tmsi_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_tmsi_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI and TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_tmsi_imei: now used by 2 (attached,test_no_authen_tmsi_imei)
strcmp(vsub->imei, "423423423423420") == 0
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_tmsi_imei: now used by 1 (attached)
----
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_tmsi_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_imeisv
- Location Update request causes an IMEISV ID request back to the MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DMSC msc_tx 3 bytes to IMSI-901700000004620 via GERAN-A
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051803
- DTAP matches expected message
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275
DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- Subscriber has the IMEISV from the ID Response
-DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv: now used by 2 (conn,test_no_authen_imeisv)
+DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv: now used by 2 (active-conn,test_no_authen_imeisv)
strcmp(vsub->imeisv, "4234234234234275") == 0
-DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv: now used by 1 (active-conn)
- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- LU was successful, and the conn has already been closed
lu_result_sent == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_imeisv: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_imeisv_imei
- Location Update request causes an IMEISV ID request back to the MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DMSC msc_tx 3 bytes to IMSI-901700000004620 via GERAN-A
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051803
- DTAP matches expected message
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275
DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- Subscriber has the IMEISV from the ID Response
-DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv_imei: now used by 2 (conn,test_no_authen_imeisv_imei)
+DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv_imei: now used by 2 (active-conn,test_no_authen_imeisv_imei)
strcmp(vsub->imeisv, "4234234234234275") == 0
-DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv_imei: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv_imei: now used by 1 (active-conn)
- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imeisv_imei: now used by 2 (conn,test_no_authen_imeisv_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imeisv_imei: now used by 2 (active-conn,test_no_authen_imeisv_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imeisv_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imeisv_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imeisv_imei: now used by 2 (attached,test_no_authen_imeisv_imei)
strcmp(vsub->imei, "423423423423420") == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imeisv_imei: now used by 1 (attached)
----
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_imeisv_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_imeisv_tmsi
- Location Update request causes an IMEISV ID request back to the MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DMSC msc_tx 3 bytes to IMSI-901700000004620 via GERAN-A
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051803
- DTAP matches expected message
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275
DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- Subscriber has the IMEISV from the ID Response
-DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv_tmsi: now used by 2 (conn,test_no_authen_imeisv_tmsi)
+DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv_tmsi: now used by 2 (active-conn,test_no_authen_imeisv_tmsi)
strcmp(vsub->imeisv, "4234234234234275") == 0
-DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv_tmsi: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv_tmsi: now used by 1 (active-conn)
- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_no_authen_imeisv_tmsi: now used by 2 (conn,test_no_authen_imeisv_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 + test_no_authen_imeisv_tmsi: now used by 2 (active-conn,test_no_authen_imeisv_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_no_authen_imeisv_tmsi: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - test_no_authen_imeisv_tmsi: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber sends LU Request, this time with the TMSI
- Location Update request causes an IMEISV ID request back to the MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 via GERAN-A
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051803
- DTAP matches expected message
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-SV-5234234234234276
DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=5234234234234276
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- Subscriber has the IMEISV from the ID Response
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_imeisv_tmsi: now used by 3 (attached,conn,test_no_authen_imeisv_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_imeisv_tmsi: now used by 3 (attached,active-conn,test_no_authen_imeisv_tmsi)
strcmp(vsub->imeisv, "5234234234234276") == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_imeisv_tmsi: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_imeisv_tmsi: now used by 2 (attached,active-conn)
- 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:MSISDN-46071:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504, with TMSI 0x07060504
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU, with TMSI 0x07060504
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 + test_no_authen_imeisv_tmsi: now used by 3 (attached,conn,test_no_authen_imeisv_tmsi)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 + test_no_authen_imeisv_tmsi: now used by 3 (attached,active-conn,test_no_authen_imeisv_tmsi)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x07060504
vsub->tmsi == 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - test_no_authen_imeisv_tmsi: now used by 2 (attached,conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504 - test_no_authen_imeisv_tmsi: now used by 2 (attached,active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:TMSInew-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use - dtap == 1 (0x100: release)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- subscriber has the new TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + test_no_authen_imeisv_tmsi: now used by 2 (attached,test_no_authen_imeisv_tmsi)
vsub != NULL == 1
@@ -1991,275 +2547,370 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + test_no_auth
vsub->tmsi_new == 0xffffffff
vsub->tmsi == 0x07060504
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - test_no_authen_imeisv_tmsi: now used by 1 (attached)
----
+
+
- subscriber detaches, using new TMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(TMSI)=117835012
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x07060504:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_imeisv_tmsi: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_imeisv_tmsi_imei
- Location Update request causes an IMEISV ID request back to the MS
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DMSC msc_tx 3 bytes to IMSI-901700000004620 via GERAN-A
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051803
- DTAP matches expected message
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMEISV
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-SV-4234234234234275
DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: Received Event VLR_ULA_E_ID_IMEISV
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_IMEISV}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- Subscriber has the IMEISV from the ID Response
-DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv_tmsi_imei: now used by 2 (conn,test_no_authen_imeisv_tmsi_imei)
+DREF VLR subscr IMSI-901700000004620 + test_no_authen_imeisv_tmsi_imei: now used by 2 (active-conn,test_no_authen_imeisv_tmsi_imei)
strcmp(vsub->imeisv, "4234234234234275") == 0
-DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv_tmsi_imei: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000004620 - test_no_authen_imeisv_tmsi_imei: now used by 1 (active-conn)
- 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051802
- DTAP matches expected message
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imeisv_tmsi_imei: now used by 2 (conn,test_no_authen_imeisv_tmsi_imei)
+ llist_count(&msub_list) == 1
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_imeisv_tmsi_imei: now used by 2 (active-conn,test_no_authen_imeisv_tmsi_imei)
vsub->imei[0] == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imeisv_tmsi_imei: now used by 1 (conn)
-ran_conn_is_accepted() == false
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_imeisv_tmsi_imei: now used by 1 (active-conn)
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS replies with an Identity Response, VLR sends the IMEI to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMEI-423423423423420
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR GSUP tx: 30010809710000004026f050090824433224433224f0
-GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f0
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
+GSUP --> HLR: OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST: 30010809710000004026f050090824433224433224f00a0101
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
- HLR accepts the IMEI
-<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f0510100
-DVLR GSUP rx 14: 32010809710000004026f0510100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: 32010809710000004026f05101000a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_HLR_IMEI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100, with TMSI 0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_CHECK_IMEI_RESULT: vlr_gsupc_read_cb() returns 0
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
lu_result_sent == 1
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
- Subscriber has the IMEISV, IMEI and TMSI
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + test_no_authen_imeisv_tmsi_imei: now used by 2 (attached,test_no_authen_imeisv_tmsi_imei)
strcmp(vsub->imeisv, "4234234234234275") == 0
strcmp(vsub->imei, "423423423423420") == 0
vsub->tmsi == 0x03020100
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - test_no_authen_imeisv_tmsi_imei: now used by 1 (attached)
----
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100 (max total use count was 4)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_no_authen_imeisv_tmsi_imei: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_no_authen_subscr_expire
- Total time passed: 0.000000 s
@@ -2267,102 +2918,120 @@ talloc_total_blocks(tall_bsc_ctx) == 13
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- LU was successful, and the conn has already been closed
lu_result_sent == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + test_no_authen_subscr_expire: now used by 2 (attached,test_no_authen_subscr_expire)
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - test_no_authen_subscr_expire: now used by 1 (attached)
- Total time passed: 3901.000000 s
@@ -2370,13 +3039,13 @@ DVLR IMSI-901700000004620:MSISDN-46071: Location Update expired
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 2 (attached,vlr_subscr_cancel_attach_fsm)
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 1 (attached)
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
- llist_count(&net->ran_conns) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+ llist_count(&msub_list) == 0
===== test_no_authen_subscr_expire: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
index 6293ad20a..7eaedb27c 100644
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
@@ -26,44 +26,44 @@
static void test_reject_2nd_conn()
{
- struct ran_conn *conn1;
+ struct msub *conn1;
comment_start();
btw("Location Update Request on one connection");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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;
+ conn1 = g_msub;
+ g_msub = NULL;
expect_bssap_clear();
ms_sends_msg("050802008168000130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
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;
+ g_msub = conn1;
lu_result_sent = RES_NONE;
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0"HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -74,7 +74,7 @@ static void _normal_lu_part1()
{
btw("Location Update Request");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
ms_sends_msg("050802008168000130089910070000006402");
OSMO_ASSERT(gsup_tx_confirmed);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -85,18 +85,18 @@ static 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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
}
@@ -111,10 +111,7 @@ static 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->fi);
- OSMO_ASSERT(g_conn->vsub);
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
EXPECT_ACCEPTED(true);
}
@@ -139,7 +136,6 @@ static void _page()
vlr_subscr_put(vsub, __func__);
vsub = NULL;
VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
}
static void _paging_resp_part1()
@@ -168,7 +164,6 @@ static void _paging_resp_part1()
"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);
@@ -188,7 +183,7 @@ static void _paging_resp_part2(int expect_conn_count, bool expect_clear)
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
if (expect_clear) {
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
}
btw("SMS is done");
@@ -221,11 +216,9 @@ static void test_reject_cm_during_lu()
BTW("A CM Service Request in the middle of a LU is rejected");
cm_service_result_sent = RES_NONE;
- dtap_expect_tx("052216");
- ms_sends_msg("05247803305886089910070000006402");
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
+ VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d");
EXPECT_CONN_COUNT(1);
BTW("The first LU can still complete");
@@ -271,7 +264,7 @@ static void test_reject_lu_during_cm()
expect_bssap_clear();
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -287,7 +280,7 @@ static void test_reject_cm_during_cm()
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");
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
EXPECT_CONN_COUNT(1);
@@ -295,7 +288,7 @@ static void test_reject_cm_during_cm()
expect_bssap_clear();
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -317,10 +310,10 @@ static void test_reject_paging_resp_during_cm()
/* Release connection */
expect_bssap_clear(OSMO_RAT_GERAN_A);
- conn_conclude_cm_service_req(g_conn, OSMO_RAT_GERAN_A);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -374,10 +367,10 @@ static void test_accept_cm_during_paging_resp()
BTW("CM Service Request during open connection is accepted");
cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(g_conn->received_cm_service_request, == true, "%d");
+ VERBOSE_ASSERT(osmo_use_count_by(&msub_msc_a(g_msub)->use_count, MSC_A_USE_CM_SERVICE_SMS), == 1, "%d");
_paging_resp_part2(1, false);
@@ -385,7 +378,7 @@ static void test_accept_cm_during_paging_resp()
expect_bssap_clear();
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
index 71bf73285..ec7220414 100644
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
+++ b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
@@ -1,1176 +1,1438 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_2nd_conn
- Location Update Request on one connection
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- Another Location Update Request from the same subscriber on another connection is rejected
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr IMSI-901700000004620 + _lu_fsm_associate_vsub: now used by 2 (conn,_lu_fsm_associate_vsub)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){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(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: internal error during Location Updating attempt
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DREF VLR subscr IMSI-901700000004620 + _lu_fsm_associate_vsub: now used by 2 (active-conn,_lu_fsm_associate_vsub)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: A Location Updating process is already pending for this subscriber. Aborting.
+- sending LU Reject for IMSI-901700000004620:GERAN-A:LU, cause 22
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: - lu: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
lu_result_sent == 2
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 1
----
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(unknown) MSC-A terminated
+DMSC msub(unknown) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msub(unknown) Free
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_reject_2nd_conn: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_lu_during_lu
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- Another Location Update Request from the same subscriber on the same conn is dropped silently
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Cannot accept another LU, conn already busy establishing authenticity; extraneous LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Cannot accept another LU, conn already busy establishing authenticity; extraneous LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-22) for DTAP from MSC-I
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_reject_lu_during_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_cm_during_lu
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- A CM Service Request in the middle of a LU is rejected
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Cannot accept CM Service Request, conn already busy establishing authenticity
-DMM -> CM SERVICE Reject cause: 22
-DMSC msc_tx 3 bytes to IMSI-901700000004620 via GERAN-A
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Cannot accept CM Service Request, conn already busy establishing authenticity
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: -> CM SERVICE Reject cause: 22
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052216
-- DTAP matches expected message
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- cm_service_result_sent == 0
- dtap_tx_confirmed == 1
- llist_count(&net->ran_conns) == 1
----
+ cm_service_result_sent == 2
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_reject_cm_during_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_paging_resp_during_lu
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- An erratic Paging Response is dropped silently
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
-DREF IMSI-901700000004620: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM Ignoring Paging Response, conn already busy establishing authenticity
-DREF IMSI-901700000004620: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Ignoring Paging Response, conn already busy establishing authenticity
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_reject_paging_resp_during_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_lu_during_cm
----
+
+
- Subscriber does a normal LU
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- Subscriber does a normal CM Service Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
-ran_conn_is_accepted() == true
+msc_a_is_accepted() == true
- A LU request on an open conn is dropped silently
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Cannot accept another LU, conn already established; extraneous LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x8: cm_service)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Cannot accept another LU, conn already established; extraneous LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode error (rc=-22) for DTAP from MSC-I
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (conn,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 3 (0x10a: dtap,cm_service,release)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (active-conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 2 (cm_service_sms,rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: canceling still pending use: cm_service_sms (1)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - cm_service_sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_reject_lu_during_cm: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_cm_during_cm
----
+
+
- Subscriber does a normal LU
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- Subscriber does a normal CM Service Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
-ran_conn_is_accepted() == true
+msc_a_is_accepted() == true
- A second CM Service Request on the same conn is accepted without another auth dance
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DMM IMSI-901700000004620:MSISDN-46071: re-using already accepted connection
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Updated ID
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x8: cm_service)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: re-using already accepted connection
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + cm_service_sms: now used by 3 (2*cm_service_sms,rx_from_ms)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 2 (2*cm_service_sms)
cm_service_result_sent == 1
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 3 (2*cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (conn,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 3 (0x10a: dtap,cm_service,release)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (active-conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 3 (2*cm_service_sms,rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: canceling still pending use: cm_service_sms (2)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - cm_service_sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_reject_cm_during_cm: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_paging_resp_during_cm
----
+
+
- Subscriber does a normal LU
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- Subscriber does a normal CM Service Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
-ran_conn_is_accepted() == true
----
+msc_a_is_accepted() == true
+
+
- An erratic Paging Response on the same conn is dropped silently
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM Ignoring Paging Response, conn already established
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x8: cm_service)
- llist_count(&net->ran_conns) == 1
----
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Ignoring Paging Response, conn already established
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
+ llist_count(&msub_list) == 1
+
+
- The original CM Service Request can conclude
- Concluding CM Service Request
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_reject_paging_resp_during_cm: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_lu_during_paging_resp
----
+
+
- Subscriber does a normal LU
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _page: now used by 2 (attached,_page)
llist_count(&vsub->cs.requests) == 0
@@ -1179,6 +1441,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -1186,243 +1450,288 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,_page,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _page: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- MS replies with Paging Response, we deliver the SMS
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000001 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (rx_from_ms,paging-response,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- MS sends erratic LU Request, which is dropped silently
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Cannot accept another LU, conn already established; extraneous LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Cannot accept another LU, conn already established; extraneous LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode error (rc=-22) for DTAP from MSC-I
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- SMS is done
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
===== test_reject_lu_during_paging_resp: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_accept_cm_during_paging_resp
----
+
+
- Subscriber does a normal LU
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _page: now used by 2 (attached,_page)
llist_count(&vsub->cs.requests) == 0
@@ -1431,6 +1740,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -1438,264 +1749,311 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,_page,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _page: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- MS replies with Paging Response, we deliver the SMS
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000002 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (rx_from_ms,paging-response,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- CM Service Request during open connection is accepted
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DMM IMSI-901700000004620:MSISDN-46071: re-using already accepted connection
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 3 (0x2a: dtap,cm_service,trans_sms)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Updated ID
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 2 (0x28: cm_service,trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: re-using already accepted connection
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + cm_service_sms: now used by 3 (sms,rx_from_ms,cm_service_sms)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 2 (sms,cm_service_sms)
cm_service_result_sent == 1
- llist_count(&net->ran_conns) == 1
- g_conn->received_cm_service_request == 1
+ llist_count(&msub_list) == 1
+ osmo_use_count_by(&msub_msc_a(g_msub)->use_count, MSC_A_USE_CM_SERVICE_SMS) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 3 (0x2a: dtap,cm_service,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 3 (sms,cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 2 (0x28: cm_service,trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 2 (sms,cm_service_sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 3 (0x2a: dtap,cm_service,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 3 (sms,cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x40000002 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x40000002 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_sms == 2 (0xa: dtap,cm_service)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - sms: now used by 2 (cm_service_sms,rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
dtap_tx_confirmed == 1
- SMS is done
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (conn,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 3 (0x10a: dtap,cm_service,release)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (active-conn,gsm48_rx_mm_imsi_detach_ind)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 2 (cm_service_sms,rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: canceling still pending use: cm_service_sms (1)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - cm_service_sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_accept_cm_during_paging_resp: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_reject_paging_resp_during_paging_resp
----
+
+
- Subscriber does a normal LU
- Location Update Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _page: now used by 2 (attached,_page)
llist_count(&vsub->cs.requests) == 0
@@ -1704,6 +2062,8 @@ DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + SMS: now used by 4 (attached
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -1711,137 +2071,161 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,_page,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _page: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- MS replies with Paging Response, we deliver the SMS
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_sms == 2 (0x21: compl_l3,trans_sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071 callref-0x40000003 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (rx_from_ms,paging-response,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 64 70 f1 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,SMS-receiver,SMS,proc_arq_vlr_fn_init,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
----
+ llist_count(&msub_list) == 1
+
+
- MS sends another erratic Paging Response which is dropped silently
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM Ignoring Paging Response, conn already established
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Ignoring Paging Response, conn already established
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x40000003 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x40000003 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- SMS is done
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
===== 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) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c
index 0e8cfba5c..620652c95 100644
--- a/tests/msc_vlr/msc_vlr_test_rest.c
+++ b/tests/msc_vlr/msc_vlr_test_rest.c
@@ -25,6 +25,7 @@
#include "stubs.h"
#include <osmocom/msc/vlr.h>
+#if 0
static void test_early_stage()
{
comment_start();
@@ -57,12 +58,13 @@ static void test_early_stage()
expect_bssap_clear();
osmo_fsm_inst_dispatch(g_conn->fi, RAN_CONN_E_CN_CLOSE, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
}
+#endif
static void test_cm_service_without_lu()
{
@@ -70,11 +72,11 @@ static void test_cm_service_without_lu()
btw("CM Service Request without a prior Location Updating");
expect_bssap_clear();
- ms_sends_msg("05247803305886089910070000006402");
+ ms_sends_msg("05247403305886089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("conn was released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -87,14 +89,14 @@ static void test_two_lu()
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -106,26 +108,26 @@ static void test_two_lu()
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
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("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -137,12 +139,12 @@ static void test_two_lu()
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
BTW("subscriber detaches");
@@ -150,7 +152,7 @@ static void test_two_lu()
ms_sends_msg("050130089910070000006402");
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
@@ -170,14 +172,14 @@ static void test_lu_unknown_tmsi()
thwart_rx_non_initial_requests();
btw("MS tells us the IMSI, causes a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("having received subscriber data does not mean acceptance");
@@ -187,19 +189,19 @@ static void test_lu_unknown_tmsi()
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(bssap_clear_sent, == true, "%d");
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
clear_vlr();
comment_end();
}
msc_vlr_test_func_t msc_vlr_tests[] = {
- test_early_stage,
+ //test_early_stage,
test_cm_service_without_lu,
test_two_lu,
test_lu_unknown_tmsi,
diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err
index 9989c66d2..1f3700002 100644
--- a/tests/msc_vlr/msc_vlr_test_rest.err
+++ b/tests/msc_vlr/msc_vlr_test_rest.err
@@ -1,497 +1,587 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
-
-===== test_early_stage
-- NULL conn
-ran_conn_is_accepted() == false
-- freshly allocated conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-ran_conn_is_accepted() == false
-- conn_fsm present, in state NEW
-ran_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 SMS:0x01 (0x9:0x1)
-DRLL subscr unknown: Message not permitted for initial conn: SMS:0x01
-- fake: acceptance
-DREF VLR subscr unknown + conn: now used by 1 (conn)
-DVLR set IMSI on subscriber; IMSI=135111 id=135111
-DVLR New subscr, IMSI: 135111
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn{RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: silent call still active
- llist_count(&net->ran_conns) == 1
-ran_conn_is_accepted() == true
-- CLOSE event marks conn_fsm as released and frees the conn
-DMM RAN_conn{RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-135111: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-135111 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-135111 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
- bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-135111: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DMM RAN_conn{RAN_CONN_S_RELEASED}: ran_conn_fsm_has_active_transactions: silent call still active
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocating despite active transactions
-DRLL IMSI-135111: Freeing RAN connection
-DREF VLR subscr IMSI-135111 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-135111
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-===== test_early_stage: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_cm_service_without_lu
- CM Service Request without a prior Location Updating
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(IMSI_UNKNOWN_IN_VLR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: IMSI_UNKNOWN_IN_VLR
-- sending CM Service Reject for unknown, cause: IMSI_UNKNOWN_IN_VLR
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DBSSAP RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: subscriber not allowed to do a CM Service Request
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(IMSI_UNKNOWN_IN_VLR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: IMSI_UNKNOWN_IN_VLR
+- sending CM Service Reject (Short-Messaging-Service) for IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ, cause: IMSI_UNKNOWN_IN_VLR
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 2 (rx_from_ms,cm_service_sms)
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: canceling still pending use: cm_service_sms (1)
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - cm_service_sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: subscriber not allowed to do a CM Service Request
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode error (rc=-5) for COMPL_L3 from MSC-I
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
- conn was released
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(unknown) MSC-A terminated
+DMSC msub(unknown) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(unknown) Free
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_cm_service_without_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_two_lu
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- verify that the MS can send another LU request
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _lu_fsm_associate_vsub: now used by 2 (attached,_lu_fsm_associate_vsub)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _lu_fsm_associate_vsub: now used by 2 (attached,active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,vlr_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,vlr_gsup_rx)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (attached,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_two_lu: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_lu_unknown_tmsi
- Location Update request with unknown TMSI sends ID Request for IMSI
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=TMSI-0x23422342 LU-type=IMSI-ATTACH
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(TMSI-0x23422342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=TMSI-0x23422342 LU-type=IMSI-ATTACH
+DMM msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(TMSI-0x23422342:GERAN-A:LU)
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR New subscr, TMSI: 0x23422342
-DREF VLR subscr TMSI-0x23422342 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr TMSI-0x23422342 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_want_imsi()
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMSI
-DMSC msc_tx 3 bytes to TMSI-0x23422342 via GERAN-A
+DREF VLR subscr TMSI-0x23422342 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr TMSI-0x23422342 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_want_imsi()
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMSI
+DMSC msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM48_MT_MM_ID_REQ: 051801
- DTAP matches expected message
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF TMSI-0x23422342: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DMSC dummy_msc_i(TMSI-0x23422342:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
lu_result_sent == 0
-ran_conn_is_accepted() == false
+msc_a_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 SMS:0x01 (0x9:0x1)
-DRLL subscr TMSI-0x23422342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS tells us the IMSI, causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_ID_RESP
-DREF TMSI-0x23422342: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
+DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_ID_RESP
DMM IDENTITY RESPONSE: MI=IMSI-901700000004620
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMSI}: Received Event VLR_ULA_E_ID_IMSI
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){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(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_IMSI}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(TMSI-0x23422342:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF IMSI-901700000004620:TMSI-0x23422342: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_IMSI}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(TMSI-0x23422342:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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:TMSI-0x23422342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620:TMSI-0x23422342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
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 IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(TMSI-0x23422342:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
bssap_clear_sent == 1
- LU was successful, and the conn has already been closed
lu_result_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071:TMSI-0x23422342 (max total use count was 5)
===== test_lu_unknown_tmsi: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_ss.c b/tests/msc_vlr/msc_vlr_test_ss.c
index 42c133c01..e4b3a4e4d 100644
--- a/tests/msc_vlr/msc_vlr_test_ss.c
+++ b/tests/msc_vlr/msc_vlr_test_ss.c
@@ -48,19 +48,19 @@ static void perform_lu(void)
btw("Location Update request causes a GSUP LU request to HLR");
lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0280102");
+ gsup_expect_tx("04010809710000004026f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000004026f00804036470f1" HLR_TO_VLR,
+ "12010809710000004026f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
expect_bssap_clear();
- gsup_rx("06010809710000004026f0", NULL);
+ gsup_rx("06010809710000004026f0"HLR_TO_VLR, NULL);
btw("LU was successful, and the conn has already been closed");
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
@@ -72,7 +72,7 @@ static void perform_lu(void)
VAL_ASSERT("LAC", vsub->cgi.lai.lac, == 23, "%u");
vlr_subscr_put(vsub, __func__);
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
}
@@ -88,9 +88,6 @@ static void _test_ss_ussd_mo(enum osmo_rat_type via_ran)
cm_service_result_sent = RES_NONE;
ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
EXPECT_ACCEPTED(true);
@@ -99,7 +96,7 @@ static void _test_ss_ussd_mo(enum osmo_rat_type via_ran)
"0108" "09710000004026f0" /* IMSI TLV */
"3004" "20000001" /* Session ID TLV */
"3101" "01" /* Session state: BEGIN */
- "3515" FACILITY_IE_REQ);
+ "3515" FACILITY_IE_REQ MSC_USSD_TO_EUSE);
dtap_expect_tx("8b2a" "1c27" FACILITY_IE_RSP);
expect_release_clear(via_ran);
@@ -109,12 +106,12 @@ static void _test_ss_ussd_mo(enum osmo_rat_type via_ran)
"0108" "09710000004026f0" /* IMSI TLV */
"3004" "20000001" /* Session ID TLV */
"3101" "03" /* Session state: END */
- "3527" FACILITY_IE_RSP, NULL);
+ "3527" FACILITY_IE_RSP EUSE_TO_MSC_USSD, NULL);
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
ASSERT_RELEASE_CLEAR(via_ran);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
}
@@ -141,13 +138,12 @@ static void _test_ss_ussd_no(enum osmo_rat_type via_ran)
"0108" "09710000004026f0" /* IMSI TLV */
"3004" "20000101" /* Session ID TLV */
"3101" "01" /* Session state: BEGIN */
- "3515" FACILITY_IE_REQ, NULL);
+ "3515" FACILITY_IE_REQ EUSE_TO_MSC_USSD, NULL);
VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -160,7 +156,6 @@ static void _test_ss_ussd_no(enum osmo_rat_type via_ran)
dtap_expect_tx("0b3b" "1c15" FACILITY_IE_REQ);
ms_sends_msg("06270703305882089910070000006402");
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
btw("MS responds to SS/USSD request");
@@ -169,10 +164,9 @@ static void _test_ss_ussd_no(enum osmo_rat_type via_ran)
"0108" "09710000004026f0" /* IMSI TLV */
"3004" "20000101" /* Session ID TLV */
"3101" "02" /* Session state: CONTINUE */
- "3527" FACILITY_IE_RSP);
+ "3527" FACILITY_IE_RSP MSC_USSD_TO_EUSE);
ms_sends_msg("8b3a" "27" FACILITY_IE_RSP);
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
btw("HLR terminates the session");
@@ -182,13 +176,13 @@ static void _test_ss_ussd_no(enum osmo_rat_type via_ran)
gsup_rx("20" /* OSMO_GSUP_MSGT_PROC_SS_REQUEST */
"0108" "09710000004026f0" /* IMSI TLV */
"3004" "20000101" /* Session ID TLV */
- "3101" "03", /* Session state: END */
+ "3101" "03" EUSE_TO_MSC_USSD, /* Session state: END */
NULL);
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
ASSERT_RELEASE_CLEAR(via_ran);
btw("all requests serviced, conn has been released");
- bss_sends_clear_complete();
+ ran_sends_clear_complete();
EXPECT_CONN_COUNT(0);
}
diff --git a/tests/msc_vlr/msc_vlr_test_ss.err b/tests/msc_vlr/msc_vlr_test_ss.err
index fa091ceee..5592488a5 100644
--- a/tests/msc_vlr/msc_vlr_test_ss.err
+++ b/tests/msc_vlr/msc_vlr_test_ss.err
@@ -1,422 +1,497 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ss_ussd_mo_geran
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- LU was successful, and the conn has already been closed
lu_result_sent == 1
bssap_clear_sent == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + perform_lu: now used by 3 (conn,attached,perform_lu)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + perform_lu: now used by 3 (active-conn,attached,perform_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - perform_lu: now used by 2 (conn,attached)
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - perform_lu: now used by 2 (active-conn,attached)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Supplementary-Service
+DREF msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_ss: now used by 2 (rx_from_ms,cm_service_ss)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000004620:MSISDN-46071
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + cm_service == 2 (0x9: compl_l3,cm_service)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x8: cm_service)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_ss)
cm_service_result_sent == 1
-ran_conn_is_accepted() == true
+msc_a_is_accepted() == true
MSC <--GERAN-A-- MS: GSM0480_MTYPE_REGISTER
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0xa: dtap,cm_service)
-DRLL Dispatching 04.08 message GSM0480_MTYPE_REGISTER (0xb:0x3b)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + NCSS: now used by 3 (attached,conn,NCSS)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (cm_service_ss,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: NCSS GSM0480_MTYPE_REGISTER
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + NCSS: now used by 3 (attached,active-conn,NCSS)
DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000001 tid-8) New transaction
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_nc_ss == 3 (0x4a: dtap,cm_service,trans_nc_ss)
-DMM IMSI-901700000004620:MSISDN-46071: rx msg GSM0480_MTYPE_REGISTER: received_cm_service_request changes to false
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - cm_service == 2 (0x42: dtap,trans_nc_ss)
-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x20000001 tid-8) Received SS/USSD msg GSM0480_MTYPE_REGISTER
-GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101013515a11302010102013b300b04010f0406aa510c061b01
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x40: trans_nc_ss)
-<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101033527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-DVLR GSUP rx 61: 20010809710000004026f03004200000013101033527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 4 (attached,conn,NCSS,vlr_gsupc_read_cb)
-DMSC Routed to GSM 09.11 SS/USSD handler
-DMSC msc_tx 43 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: + nc_ss: now used by 3 (cm_service_ss,rx_from_ms,nc_ss)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_TRANSACTION_ACCEPTED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_COMMUNICATING
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - cm_service_ss: now used by 2 (rx_from_ms,nc_ss)
+DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x20000001 tid-8) Received SS/USSD msg GSM0480_MTYPE_REGISTER
+GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101013515a11302010102013b300b04010f0406aa510c061b010a0103
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - rx_from_ms: now used by 1 (nc_ss)
+<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200000013101033527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d0a0103
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm0911_gsup_rx: now used by 4 (attached,active-conn,NCSS,gsm0911_gsup_rx)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 8b2a1c27a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
- DTAP matches expected message
-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ callref-0x20000001 tid-8) Freeing transaction
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - NCSS: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_nc_ss == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ callref-0x20000001 tid-8) Freeing transaction
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - NCSS: now used by 3 (attached,active-conn,gsm0911_gsup_rx)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: - nc_ss: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_COMMUNICATING}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (attached,active-conn,gsm0911_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (attached,active-conn,gsm0911_gsup_rx,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,gsm0911_gsup_rx,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,gsm0911_gsup_rx)
<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: vlr_gsupc_read_cb() returns 0
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 2 (attached,gsm0911_gsup_rx)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 5)
===== test_ss_ussd_mo_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_ss_ussd_no_geran
- Location Update request causes a GSUP LU request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 1/23
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000004620 LU-type=IMSI-ATTACH
+DMM msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 001-868-1
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI-901700000004620 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000004620: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000004620 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000004620 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000004620:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f10a0101
+DREF VLR subscr IMSI-901700000004620 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000004620 has MSISDN:46071
DVLR SUBSCR(IMSI-901700000004620:MSISDN-46071) VLR: update for IMSI=901700000004620 (MSISDN=46071)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI-901700000004620:MSISDN-46071
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU))
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (conn,vlr_gsupc_read_cb,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (conn,vlr_gsupc_read_cb,attached)
-- BSSAP Clear --GERAN-A--> MS
-DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (conn,attached)
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f00a0101
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+- sending LU Accept for IMSI-901700000004620:MSISDN-46071:GERAN-A:LU
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + attached: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU))
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deferring: will deallocate with upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 5 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,vlr_gsup_rx,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 3 (active-conn,vlr_gsup_rx,attached)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000004620:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated, including all deferred deallocations
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsup_rx: now used by 2 (active-conn,attached)
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- LU was successful, and the conn has already been closed
lu_result_sent == 1
bssap_clear_sent == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + perform_lu: now used by 3 (conn,attached,perform_lu)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + perform_lu: now used by 3 (active-conn,attached,perform_lu)
vsub != NULL == 1
strcmp(vsub->imsi, IMSI) == 0
LAC == 23
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - perform_lu: now used by 2 (conn,attached)
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
----
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - perform_lu: now used by 2 (active-conn,attached)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+
+
- after a while, HLR initiates SS/USSD session
DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _test_ss_ussd_no: now used by 2 (attached,_test_ss_ussd_no)
llist_count(&vsub->cs.requests) == 0
-<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101013515a11302010102013b300b04010f0406aa510c061b01
-DVLR GSUP rx 43: 20010809710000004026f03004200001013101013515a11302010102013b300b04010f0406aa510c061b01
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 3 (attached,_test_ss_ussd_no,vlr_gsupc_read_cb)
-DMSC Routed to GSM 09.11 SS/USSD handler
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + NCSS: now used by 4 (attached,_test_ss_ussd_no,vlr_gsupc_read_cb,NCSS)
+<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101013515a11302010102013b300b04010f0406aa510c061b010a0103
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm0911_gsup_rx: now used by 3 (attached,_test_ss_ussd_no,gsm0911_gsup_rx)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + NCSS: now used by 4 (attached,_test_ss_ussd_no,gsm0911_gsup_rx,NCSS)
DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-255) New transaction
DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-255) Establishing network-originated session
DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071 callref-0x20000101 tid-0) Triggering Paging Request
-DMM Subscriber IMSI-901700000004620:MSISDN-46071 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,_test_ss_ussd_no,vlr_gsupc_read_cb,NCSS,Paging)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 4 (attached,_test_ss_ussd_no,NCSS,Paging)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for GSM 09.11 SS/USSD: Starting paging
+ paging request (SIGNALLING_HIGH_PRIO) to IMSI-901700000004620:MSISDN-46071 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + Paging: now used by 5 (attached,_test_ss_ussd_no,gsm0911_gsup_rx,NCSS,Paging)
<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: vlr_gsupc_read_cb() returns -22
llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _test_ss_ussd_no: now used by 3 (attached,NCSS,Paging)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _test_ss_ussd_no: now used by 4 (attached,gsm0911_gsup_rx,NCSS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _test_ss_ussd_no: now used by 4 (attached,NCSS,Paging,_test_ss_ussd_no)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + _test_ss_ussd_no: now used by 5 (attached,gsm0911_gsup_rx,NCSS,Paging,_test_ss_ussd_no)
llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _test_ss_ussd_no: now used by 3 (attached,NCSS,Paging)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - _test_ss_ussd_no: now used by 4 (attached,gsm0911_gsup_rx,NCSS,Paging)
- MS replies with Paging Response, we deliver the NC/USSD
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000004620:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 4 (attached,NCSS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + conn: now used by 5 (attached,NCSS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000004620:MSISDN-46071 (event=0)
-DPAG Calling paging cbfn.
-DMM Paging subscr 46071 succeeded!
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + trans_nc_ss == 2 (0x41: compl_l3,trans_nc_ss)
-DMSC msc_tx 25 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000004620:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + proc_arq_vlr_fn_init: now used by 5 (attached,gsm0911_gsup_rx,NCSS,Paging,proc_arq_vlr_fn_init)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + active-conn: now used by 6 (attached,gsm0911_gsup_rx,NCSS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for GSM 09.11 SS/USSD: Paging Response action (success)
+DPAG Paging: IMSI-901700000004620:MSISDN-46071 for GSM 09.11 SS/USSD: Removing Paging Request
+DMM msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Paging succeeded
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + nc_ss: now used by 3 (rx_from_ms,paging-response,nc_ss)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM0480_MTYPE_REGISTER: 0b3b1c15a11302010102013b300b04010f0406aa510c061b01
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 4 (attached,NCSS,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: NCSS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 3 (attached,NCSS,conn)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - compl_l3 == 1 (0x40: trans_nc_ss)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - Paging: now used by 5 (attached,gsm0911_gsup_rx,NCSS,proc_arq_vlr_fn_init,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,nc_ss)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - proc_arq_vlr_fn_init: now used by 4 (attached,gsm0911_gsup_rx,NCSS,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (nc_ss)
dtap_tx_confirmed == 1
- paging_stopped == 1
- MS responds to SS/USSD request
MSC <--GERAN-A-- MS: GSM0480_MTYPE_FACILITY
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + dtap == 2 (0x42: dtap,trans_nc_ss)
-DRLL Dispatching 04.08 message GSM0480_MTYPE_FACILITY (0xb:0x3a)
-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x20000101 tid-0) Received SS/USSD msg GSM0480_MTYPE_FACILITY
-GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101023527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - dtap == 1 (0x40: trans_nc_ss)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (nc_ss,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: NCSS GSM0480_MTYPE_FACILITY
+DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x20000101 tid-0) Received SS/USSD msg GSM0480_MTYPE_FACILITY
+GSUP --> HLR: OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101023527a225020101302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d0a0103
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (nc_ss)
dtap_tx_confirmed == 1
- paging_stopped == 1
- HLR terminates the session
-<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f0300420000101310103
-DVLR GSUP rx 20: 20010809710000004026f0300420000101310103
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_gsupc_read_cb: now used by 4 (attached,NCSS,conn,vlr_gsupc_read_cb)
-DMSC Routed to GSM 09.11 SS/USSD handler
-DMSC msc_tx 2 bytes to IMSI-901700000004620:MSISDN-46071 via GERAN-A
+<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: 20010809710000004026f03004200001013101030a0103
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + gsm0911_gsup_rx: now used by 5 (attached,2*gsm0911_gsup_rx,NCSS,active-conn)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: GSM0480_MTYPE_RELEASE_COMPLETE: 0b2a
- DTAP matches expected message
-DMSC trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP callref-0x20000101 tid-0) Freeing transaction
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - NCSS: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - trans_nc_ss == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,conn,vlr_gsupc_read_cb,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_gsupc_read_cb)
-- BSSAP Clear --GERAN-A--> MS
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_gsupc_read_cb: now used by 2 (attached,conn)
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DBSSAP trans(NCSS IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP callref-0x20000101 tid-0) Freeing transaction
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - NCSS: now used by 4 (attached,2*gsm0911_gsup_rx,active-conn)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - nc_ss: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + msc_a_fsm_releasing_onenter: now used by 5 (attached,2*gsm0911_gsup_rx,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 + vlr_subscr_cancel_attach_fsm: now used by 6 (attached,2*gsm0911_gsup_rx,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - vlr_subscr_cancel_attach_fsm: now used by 5 (attached,2*gsm0911_gsup_rx,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - msc_a_fsm_releasing_onenter: now used by 4 (attached,2*gsm0911_gsup_rx,active-conn)
<-- GSUP rx OSMO_GSUP_MSGT_PROC_SS_REQUEST: vlr_gsupc_read_cb() returns 0
dtap_tx_confirmed == 1
bssap_clear_sent == 1
- all requests serviced, conn has been released
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000004620:MSISDN-46071: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000004620:MSISDN-46071: Freeing RAN connection
-DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000004620:MSISDN-46071:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000004620:MSISDN-46071
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000004620:MSISDN-46071) MSC-A terminated
+DMSC msub(IMSI-901700000004620:MSISDN-46071) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000004620:MSISDN-46071) Free
+DREF VLR subscr IMSI-901700000004620:MSISDN-46071 - active-conn: now used by 3 (attached,2*gsm0911_gsup_rx)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000004620:MSISDN-46071:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000004620:MSISDN-46071 (max total use count was 6)
===== test_ss_ussd_no_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c
index ff692ae4a..cb8a03291 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c
@@ -57,7 +57,7 @@ static void _test_umts_authen(enum osmo_rat_type 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");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -118,14 +118,14 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
"2310" "65af0527fda95b0dc5ae4aa515cdf32f"
"2410" "537c3b35a3b13b08d08eeb28098f45cc"
"2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
+ "2708" "0edb0eadbea94ac2" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
if (via_ran == OSMO_RAT_GERAN_A) {
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -138,19 +138,19 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
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("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000000156f00804032443f2" HLR_TO_VLR,
+ "12010809710000000156f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
+ gsup_rx("06010809710000000156f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
@@ -171,7 +171,7 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
expect_release_clear(via_ran);
ms_sends_msg("055b");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
btw("LU was successful, and the conn has already been closed");
EXPECT_CONN_COUNT(0);
@@ -181,12 +181,9 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9";
cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
+ ms_sends_msg("052474"
"03575886" /* classmark 2 */
"089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->fi);
- OSMO_ASSERT(g_conn->vsub);
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
@@ -214,8 +211,8 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
/* Release connection */
expect_release_clear(via_ran);
- conn_conclude_cm_service_req(g_conn, via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ conn_conclude_cm_service_req(g_msub, MSC_A_USE_CM_SERVICE_SMS);
+ ran_sends_clear_complete(via_ran);
btw("all requests serviced, conn has been released");
EXPECT_CONN_COUNT(0);
@@ -235,7 +232,6 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
vlr_subscr_put(vsub, __func__);
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, __func__);
@@ -261,19 +257,16 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
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");
expect_security_mode_ctrl(NULL, "eb50e770ddcc3060101d2f43b6c2b884");
ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
VERBOSE_ASSERT(security_mode_ctrl_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");
@@ -295,7 +288,7 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
ms_sends_msg("890106020041020000");
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
btw("SMS is done, conn is gone");
EXPECT_CONN_COUNT(0);
@@ -305,7 +298,7 @@ static void _test_umts_authen(enum osmo_rat_type via_ran)
ms_sends_msg("050130"
"089910070000106005" /* IMSI */);
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -346,7 +339,7 @@ static void _test_umts_authen_resync(enum osmo_rat_type 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");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -383,7 +376,7 @@ static void _test_umts_authen_resync(enum osmo_rat_type via_ran)
"2510" "8704f5ba55f30000d2ee44b22c8ea919"
/* TL RES */
"2708" "e229c19e791f2e41"
- ,NULL);
+ HLR_TO_VLR,NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -447,7 +440,8 @@ static void _test_umts_authen_resync(enum osmo_rat_type via_ran)
gsup_expect_tx("08" /* OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST */
"0108" "09710000000156f0" /* IMSI */
"260e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */
- "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" /* RAND */);
+ "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" /* RAND */
+ VLR_TO_HLR);
ms_sends_msg("051c" /* 05 = MM; 1c = Auth Failure */
"15" /* cause = Synch Failure */
"220e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */);
@@ -487,14 +481,14 @@ static void _test_umts_authen_resync(enum osmo_rat_type via_ran)
"2510" "8a43b91898e500002cf354c6f5d1f8c3"
/* TL RES */
"2708" "f748a7078f5018db"
- ,NULL);
+ HLR_TO_VLR,NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
if (via_ran == OSMO_RAT_GERAN_A) {
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -507,19 +501,19 @@ static void _test_umts_authen_resync(enum osmo_rat_type via_ran)
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("04010809710000000156f0280102");
+ gsup_expect_tx("04010809710000000156f0280102" VLR_TO_HLR);
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");
+ gsup_rx("10010809710000000156f00804032443f2" HLR_TO_VLR,
+ "12010809710000000156f0" VLR_TO_HLR);
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
+ gsup_rx("06010809710000000156f0" HLR_TO_VLR, NULL);
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
@@ -540,7 +534,7 @@ static void _test_umts_authen_resync(enum osmo_rat_type via_ran)
expect_release_clear(via_ran);
ms_sends_msg("055b");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
btw("LU was successful, and the conn has already been closed");
EXPECT_CONN_COUNT(0);
@@ -570,7 +564,7 @@ static void _test_umts_authen_too_short_res(enum osmo_rat_type 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");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -631,18 +625,18 @@ static void _test_umts_authen_too_short_res(enum osmo_rat_type via_ran)
"2310" "65af0527fda95b0dc5ae4aa515cdf32f"
"2410" "537c3b35a3b13b08d08eeb28098f45cc"
"2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
+ "2708" "0edb0eadbea94ac2" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("MS sends Authen Response of wrong RES size, VLR thwarts");
- gsup_expect_tx("0b010809710000000156f0"); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000000156f0" VLR_TO_HLR); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_release_clear(via_ran);
ms_sends_msg("0554" "e229c19e" "2103" "791f2e" /* nipped one byte */);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -670,7 +664,7 @@ static void _test_umts_authen_too_long_res(enum osmo_rat_type 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");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -731,18 +725,18 @@ static void _test_umts_authen_too_long_res(enum osmo_rat_type via_ran)
"2310" "65af0527fda95b0dc5ae4aa515cdf32f"
"2410" "537c3b35a3b13b08d08eeb28098f45cc"
"2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
+ "2708" "0edb0eadbea94ac2" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("MS sends Authen Response of wrong RES size, VLR thwarts");
- gsup_expect_tx("0b010809710000000156f0"); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000000156f0" VLR_TO_HLR); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_release_clear(via_ran);
ms_sends_msg("0554" "e229c19e" "2105" "791f2e4123" /* added one byte */);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
EXPECT_CONN_COUNT(0);
clear_vlr();
@@ -770,7 +764,7 @@ static void _test_umts_authen_only_sres(enum osmo_rat_type 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");
+ gsup_expect_tx("080108" "09710000000156f0" VLR_TO_HLR);
ms_sends_msg("0508" /* MM LU */
"7" /* ciph key seq: no key available */
"0" /* LU type: normal */
@@ -831,7 +825,7 @@ static void _test_umts_authen_only_sres(enum osmo_rat_type via_ran)
"2310" "65af0527fda95b0dc5ae4aa515cdf32f"
"2410" "537c3b35a3b13b08d08eeb28098f45cc"
"2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
+ "2708" "0edb0eadbea94ac2" HLR_TO_VLR,
NULL);
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
@@ -842,12 +836,12 @@ static void _test_umts_authen_only_sres(enum osmo_rat_type via_ran)
else
btw("MS sends Authen Response of wrong RES size, VLR thwarts:"
" UTRAN disallows GSM AKA altogether");
- gsup_expect_tx("0b010809710000000156f0"); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000000156f0" VLR_TO_HLR); /* OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_release_clear(via_ran);
ms_sends_msg("0554" "e229c19e" /* Only the SRES half of the RES */);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
ASSERT_RELEASE_CLEAR(via_ran);
- bss_rnc_sends_release_clear_complete(via_ran);
+ ran_sends_clear_complete(via_ran);
EXPECT_CONN_COUNT(0);
clear_vlr();
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err
index 298d6ad85..eefa96057 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err
@@ -1,280 +1,334 @@
+DLMGCP MGCP client: using endpoint domain '@mgw'
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen: now used by 2 (conn,_test_umts_authen)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen: now used by 2 (active-conn,_test_umts_authen)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--GERAN-A-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts with a CM Service Accept
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-- sending CM Service Accept for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 2 (0xa: dtap,cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x8: cm_service)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: DTAP on GERAN-A
+- DTAP --GERAN-A--> MS: GSM48_MT_MM_CM_SERV_ACC: 0521
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 1
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 2 (attached,_test_umts_authen)
llist_count(&vsub->cs.requests) == 0
@@ -283,6 +337,8 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + SMS: now use
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000001 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000001 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -290,14 +346,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000001 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 not paged yet, start paging.
- GERAN-A sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 on GERAN-A
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + Paging: now used by 5 (attached,_test_umts_authen,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_authen: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 5 (attached,SMS-receiver,SMS,Paging,_test_umts_authen)
llist_count(&vsub->cs.requests) == 1
@@ -305,490 +360,596 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_a
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--GERAN-A-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=2 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x3 and...
- ...rand=efa9c29a9742148d5c9070348716e1bb
- ...autn=f9375e6d41e1000096e7fe4ff1c27e39
- ...expecting res=706f996719ba609c
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and sends pending SMS
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 706f996719ba609c)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 706f996719ba609c)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on GERAN received SRES/RES: 706f996719ba609c (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000001 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_sms == 2 (0x22: dtap,trans_sms)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000001 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 3 (paging-response,rx_from_ms,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 2 (rx_from_ms,sms)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
dtap_tx_confirmed == 1
- paging_stopped == 1
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 5 (attached,SMS-receiver,SMS,conn,_test_umts_authen)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 5 (attached,SMS-receiver,SMS,active-conn,_test_umts_authen)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_authen: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_authen: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--GERAN-A-- MS: SMS:0x04
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--GERAN-A-- MS: SMS:0x01
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via GERAN-A
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on GERAN-A
- DTAP --GERAN-A--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP callref-0x40000001 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- BSSAP Clear --GERAN-A--> MS
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- SMS is done, conn is gone
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--GERAN-A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- BSSAP Clear --GERAN-A--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e41 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=27497388b6cb044648f396aa155b95ef
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=27497388b6cb044648f396aa155b95ef
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen: now used by 2 (conn,_test_umts_authen)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen: now used by 2 (active-conn,_test_umts_authen)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_CM_SERV_REQ
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Rx CM SERVICE REQUEST cm_service_type=0x08
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_CM_SERV_REQ
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Rx CM SERVICE REQUEST cm_service_type=Short-Messaging-Service
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: + cm_service_sms: now used by 2 (rx_from_ms,cm_service_sms)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 2 (attached,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 3 (attached,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=1 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ: tuple use_count=1 key_seq=1 auth_types=0x3 and...
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
- ...autn=1843a645b98d00005b2d666af46c45d9
- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
cm_service_result_sent == 0
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (cm_service_sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 7db47cf7f81e4dc7 (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=1159ec926a50e98c034a6b7d7c9f418d
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=1159ec926a50e98c034a6b7d7c9f418d
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (cm_service_sms)
security_mode_ctrl_sent == 1
cm_service_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + cm_service == 1 (0x8: cm_service)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: still awaiting first request after a CM Service Request
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
cm_service_result_sent == 0
- Concluding CM Service Request
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - cm_service == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: - cm_service_sms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:CM_SERVICE_REQ){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:CM_SERVICE_REQ){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- all requests serviced, conn has been released
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- an SMS is sent, MS is paged
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 2 (attached,_test_umts_authen)
llist_count(&vsub->cs.requests) == 0
@@ -797,6 +958,8 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + SMS: now use
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000002 tid-0) New transaction
DLSMS SMC(0) instance created for network
DLSMS SMR(0) instance created for network.
+DLSMS SMC(0) instance created for network
+DLSMS SMR(0) instance created for network.
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000002 tid-0) Going to send a MT SMS
DLSMS SMR(0) message SM-RL-DATA_REQ received in state IDLE
DLSMS SMR(0) TX SMS RP-DATA
@@ -804,14 +967,13 @@ DLSMS SMR(0) new RP state IDLE -> WAIT_FOR_RP_ACK
DLSMS SMC(0) message MNSMS-EST-REQ received in state IDLE
DLSMS SMC(0) new CP state IDLE -> MM_CONN_PENDING
DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000002 tid-0) Initiating Paging due to MMSMS_EST_REQ
-DMM Subscriber IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 not paged yet, start paging.
- UTRAN-Iu sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 23
- strcmp(paging_expecting_imsi, imsi) == 0
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MT-SMS: Starting paging
+ paging request (SIGNALLING_LOW_PRIO) to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 on UTRAN-Iu
+ strcmp(paging_expecting_imsi, vsub->imsi) == 0
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + Paging: now used by 5 (attached,_test_umts_authen,SMS-receiver,SMS,Paging)
llist_count(&vsub->cs.requests) == 1
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_authen: now used by 4 (attached,SMS-receiver,SMS,Paging)
paging_sent == 1
- paging_stopped == 0
- the subscriber and its pending request should remain
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 5 (attached,SMS-receiver,SMS,Paging,_test_umts_authen)
llist_count(&vsub->cs.requests) == 1
@@ -819,1216 +981,1434 @@ DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_a
- MS replies with Paging Response, and VLR sends Auth Request with third key
MSC <--UTRAN-Iu-- MS: GSM48_MT_RR_PAG_RESP
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DRR RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: PAGING RESPONSE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: RR GSM48_MT_RR_PAG_RESP
+DRR msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Rx PAGING RESPONSE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: + paging-response: now used by 2 (rx_from_ms,paging-response)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Allocated
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Updated ID
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tuple use_count=1 key_seq=2 auth_types=0x3 and...
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 6 (attached,SMS-receiver,SMS,Paging,proc_arq_vlr_fn_init,active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP: tuple use_count=1 key_seq=2 auth_types=0x3 and...
- ...rand=efa9c29a9742148d5c9070348716e1bb
- ...autn=f9375e6d41e1000096e7fe4ff1c27e39
- ...expecting res=706f996719ba609c
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - proc_arq_vlr_fn_init: now used by 5 (attached,SMS-receiver,SMS,Paging,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
auth_request_sent == 1
- needs auth, not yet accepted
-ran_conn_is_accepted() == false
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- MS sends Authen Response, VLR accepts and sends SecurityModeControl
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MM UMTS AUTHENTICATION RESPONSE (res = 706f996719ba609c)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (paging-response,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 706f996719ba609c)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH on UTRAN received RES: 706f996719ba609c (8 bytes)
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=eb50e770ddcc3060101d2f43b6c2b884
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=eb50e770ddcc3060101d2f43b6c2b884
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (paging-response)
security_mode_ctrl_sent == 1
- paging_stopped == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends SMS
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DPAG Paging success for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (event=0)
-DPAG Calling paging cbfn.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000002 tid-0,PAGING) paging_cb_mmsms_est_req(success)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + trans_sms == 1 (0x20: trans_sms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(PASSED)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Process Access Request result: PASSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MT-SMS: Paging Response action (success)
+DPAG Paging: IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 for MT-SMS: Removing Paging Request
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 callref-0x40000002 tid-0) mmsms_paging_cb(success)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + sms: now used by 2 (paging-response,sms)
DLSMS SMC(0) message MMSMS-EST-CNF received in state MM_CONN_PENDING
DLSMS SMC(0) send CP data
DLSMS SMC(0) new CP state MM_CONN_PENDING -> WAIT_CP_ACK
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
-DMSC msc_tx 91 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 01 58 01 00 07 91 44 77 58 10 06 50 00 4c 00 05 80 24 43 f2 00 00 07 10 10 00 00 00 00 44 50 79 da 1e 1e e7 41 69 37 48 5e 9e a7 c9 65 37 3d 1d 66 83 c2 70 38 3b 3d 0e d3 d3 6f f7 1c 94 9e 83 c2 20 72 79 9e 96 87 c5 ec 32 a8 1d 96 af cb f4 b4 fb 0c 7a c3 e9 e9 b7 db 05
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
- DTAP matches expected message
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,conn)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: ran_conn_fsm_has_active_transactions: connection still has active transaction: SMS
- paging_stopped == 1
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - Paging: now used by 4 (attached,SMS-receiver,SMS,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - paging-response: now used by 1 (sms)
- SMS was delivered, no requests pending for subscr
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 5 (attached,SMS-receiver,SMS,conn,_test_umts_authen)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + _test_umts_authen: now used by 5 (attached,SMS-receiver,SMS,active-conn,_test_umts_authen)
llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_authen: now used by 4 (attached,SMS-receiver,SMS,conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - _test_umts_authen: now used by 4 (attached,SMS-receiver,SMS,active-conn)
- conn is still open to wait for SMS ack dance
- llist_count(&net->ran_conns) == 1
+ llist_count(&msub_list) == 1
- MS replies with CP-ACK for received SMS
MSC <--UTRAN-Iu-- MS: SMS:0x04
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x04 (0x9:0x4)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_COMMUNICATING
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x04
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x04
DLSMS SMC(0) message MMSMS-DATA-IND (CP ACK) received in state WAIT_CP_ACK
DLSMS SMC(0) received CP-ACK
DLSMS SMC(0) new CP state WAIT_CP_ACK -> MM_ESTABLISHED
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x20: trans_sms)
- llist_count(&net->ran_conns) == 1
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 1 (sms)
+ llist_count(&msub_list) == 1
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
MSC <--UTRAN-Iu-- MS: SMS:0x01
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + dtap == 2 (0x22: dtap,trans_sms)
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_COMMUNICATING
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: + rx_from_ms: now used by 2 (sms,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Dispatching 04.08 message: SMS SMS:0x01
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) receiving SMS message SMS:0x01
DLSMS SMC(0) message MMSMS-DATA-IND (CP DATA) received in state MM_ESTABLISHED
DLSMS SMC(0) received CP-DATA
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
-DMSC msc_tx 2 bytes to IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 via UTRAN-Iu
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) sending CP message (trans=0)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) GSM4.11 TX 09 04
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: RAN encode: DTAP on UTRAN-Iu
- DTAP --UTRAN-Iu--> MS: SMS:0x04: 0904
- DTAP matches expected message
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) MNSMS-DATA/EST-IND
DLSMS SMR(0) message MNSMS-DATA-IND received in state WAIT_FOR_RP_ACK
DLSMS SMR(0) RX SMS RP-ACK
DLSMS SMR(0) new RP state WAIT_FOR_RP_ACK -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,conn)
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) RX SMS RP-ACK (MO)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS-receiver: now used by 3 (attached,SMS,active-conn)
DLSMS SMR(0) TX: MNSMS-REL-REQ
DLSMS SMC(0) message MNSMS-REL-REQ received in state MM_ESTABLISHED
DLSMS SMC(0) new CP state MM_ESTABLISHED -> IDLE
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
-DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) Got MMSMS_REL_REQ, destroying transaction.
+DLSMS trans(SMS IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP callref-0x40000002 tid-0) Freeing transaction
DLSMS SMR(0) clearing SMR instance
DLSMS SMC(0) clearing instance
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS: now used by 2 (attached,conn)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - trans_sms == 1 (0x2: dtap)
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_COMMUNICATING}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 1 (0x100: release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,conn)
-- Iu Release --UTRAN-Iu--> MS
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - SMS: now used by 2 (attached,active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - sms: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (attached,active-conn)
dtap_tx_confirmed == 1
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP))
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:PAGING_RESP){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DVLR Process_Access_Request_VLR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){PR_ARQ_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:PAGING_RESP){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- SMS is done, conn is gone
- llist_count(&net->ran_conns) == 0
----
+ llist_count(&msub_list) == 0
+
+
- subscriber detaches
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_IMSI_DETACH_IND
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_IMSI_DETACH_IND
DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + gsm48_rx_mm_imsi_detach_ind: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
DMM IMSI DETACH for IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (attached,gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 1 (gsm48_rx_mm_imsi_detach_ind)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
-DMM RAN_conn{RAN_CONN_S_NEW}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn{RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_RELEASING
-DREF unknown: MSC conn use + release == 2 (0x101: compl_l3,release)
-- Iu Release --UTRAN-Iu--> MS
-DREF unknown: MSC conn use - compl_l3 == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + active-conn: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (attached,gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - attached: now used by 2 (gsm48_rx_mm_imsi_detach_ind,active-conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - gsm48_rx_mm_imsi_detach_ind: now used by 1 (active-conn)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_CN_CLOSE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF unknown: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn{RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn{RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DRLL Freeing RAN connection with NULL subscriber
-DMM RAN_conn{RAN_CONN_S_RELEASED}: Deallocated
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: max total use count was 2
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 6)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:NONE){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_resync_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_FAIL
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_FAIL (0x5:0x1c)
-DMM IMSI-901700000010650: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_FAIL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_FAIL
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d0a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db0a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=0f1feb1623e1bf626334e37ec448ac18
- ...autn=02a83f62e9470000660d51afc75f169d
- ...expecting res=1df5f0b4f22b696e
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: 1df5f0b4f22b696e (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A-0:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:GERAN-A:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen_resync: now used by 2 (conn,_test_umts_authen_resync)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen_resync: now used by 2 (active-conn,_test_umts_authen_resync)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen_resync: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen_resync: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--GERAN-A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A-0:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- BSSAP Clear --GERAN-A--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:GERAN-A:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
===== test_umts_authen_resync_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_resync_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e410a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_FAIL
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_FAIL (0x5:0x1c)
-DMM IMSI-901700000010650: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_FAIL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_FAIL
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d0a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db0a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=0f1feb1623e1bf626334e37ec448ac18
- ...autn=02a83f62e9470000660d51afc75f169d
- ...expecting res=1df5f0b4f22b696e
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: 1df5f0b4f22b696e (8 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
-DMM -> SECURITY MODE CONTROL IMSI-901700000010650
-- sending SecurityModeControl for UE ctx 42 send_ck=0 new_key=1
-- ...ik=8a90c769b7272f3bb7a1c1fbb1ea9349
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result PASSED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Set Ciphering Mode
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: CIPHER_MODE_COMMAND on UTRAN-Iu
+- sending SecurityModeControl: ik=8a90c769b7272f3bb7a1c1fbb1ea9349
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTHENTICATED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
security_mode_ctrl_sent == 1
lu_result_sent == 0
- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DMM <- SECURITY MODE COMPLETE IMSI-901700000010650
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI-901700000010650: tx CommonID 901700000010650
-- Iu Common ID --UTRAN-Iu--> MS (IMSI=901700000010650)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0280102
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0280102
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: CIPHER_MODE_COMPLETE
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN encode: COMMON_ID on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Allocated
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f02801020a0101
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
+<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
DVLR IMSI:901700000010650 has MSISDN:42342
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsupc_read_cb: now used by 1 (conn)
+GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 IMSI-901700000010650:MSISDN-42342 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
+<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f00a0101
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Allocated
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100, with TMSI 0x03020100
-DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){UPD_HLR_VLR_S_DONE}: Deallocated
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsupc_read_cb: now used by 1 (conn)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
+- sending LU Accept for IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU, with TMSI 0x03020100
+DVLR upd_hlr_vlr_fsm(IMSI-901700000010650:UTRAN-Iu:LU){UPD_HLR_VLR_S_DONE}: Deallocated
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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->ran_conns) == 1
-ran_conn_is_accepted() == false
+ llist_count(&msub_list) == 1
+msc_a_is_accepted() == false
requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: CC GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_CC_SETUP
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: unknown 0x33
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: RR GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: SMS SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Message not permitted for initial conn: SMS:0x01
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode error (rc=-13) for DTAP from MSC-I
- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen_resync: now used by 2 (conn,_test_umts_authen_resync)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 + _test_umts_authen_resync: now used by 2 (active-conn,_test_umts_authen_resync)
vsub != NULL == 1
strcmp(vsub->imsi, imsi) == 0
vsub->tmsi_new == 0x03020100
vsub->tmsi == 0xffffffff
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen_resync: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100 - _test_umts_authen_resync: now used by 1 (active-conn)
- MS sends TMSI Realloc Complete
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_TMSI_REALL_COMPL
+DMM msc_a(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: TMSI Reallocation Completed
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSInew-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
DVLR SUBSCR(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) VLR: update for IMSI=901700000010650 (MSISDN=42342)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Updated ID
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (conn,attached)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu-42:LU){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_ACCEPTED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_ACCEPTED}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 3 (conn,attached,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 2 (conn,attached)
-- Iu Release --UTRAN-Iu--> MS
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - dtap == 1 (0x100: release)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + attached: now used by 2 (active-conn,attached)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR lu_compl_vlr_fsm(IMSI-901700000010650:MSISDN-42342:UTRAN-Iu:LU){LU_COMPL_VLR_S_DONE}: Deallocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_AUTHENTICATED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_AUTHENTICATED
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - lu: now used by 1 (rx_from_ms)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: - rx_from_ms: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_AUTHENTICATED}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 0 (-)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + msc_a_fsm_releasing_onenter: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 + vlr_subscr_cancel_attach_fsm: now used by 4 (active-conn,attached,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,attached,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 1 (wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - msc_a_fsm_releasing_onenter: now used by 2 (active-conn,attached)
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - conn: now used by 1 (attached)
-DMM RAN_conn(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) MSC-A terminated
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100) Free
+DREF VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 - active-conn: now used by 1 (attached)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
- LU was successful, and the conn has already been closed
- llist_count(&net->ran_conns) == 0
-DREF freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100
+ llist_count(&msub_list) == 0
+DVLR freeing VLR subscr IMSI-901700000010650:MSISDN-42342:TMSI-0x03020100 (max total use count was 4)
===== test_umts_authen_resync_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_too_short_res_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 of wrong RES size, VLR thwarts
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e (7 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH SRES/RES has invalid length: 7. Expected either 4 (GSM AKA) or 8 (UMTS AKA)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000010650, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000010650:GERAN-A:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DRLL IMSI-901700000010650: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650) MSC-A terminated
+DMSC msub(IMSI-901700000010650) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650) Free
+DREF VLR subscr IMSI-901700000010650 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_too_short_res_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_too_short_res_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 of wrong RES size, VLR thwarts
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e (7 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH RES has invalid length: 7. Expected 8 (UMTS AKA)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000010650, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- Iu Release --UTRAN-Iu--> MS
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000010650:UTRAN-Iu:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650) MSC-A terminated
+DMSC msub(IMSI-901700000010650) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650) Free
+DREF VLR subscr IMSI-901700000010650 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_too_short_res_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_too_long_res_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 of wrong RES size, VLR thwarts
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e4123)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e4123)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e791f2e4123 (9 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH SRES/RES has invalid length: 9. Expected either 4 (GSM AKA) or 8 (UMTS AKA)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000010650, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000010650:GERAN-A:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DRLL IMSI-901700000010650: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650) MSC-A terminated
+DMSC msub(IMSI-901700000010650) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650) Free
+DREF VLR subscr IMSI-901700000010650 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_too_long_res_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_too_long_res_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 of wrong RES size, VLR thwarts
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e4123)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM UMTS AUTHENTICATION RESPONSE (res = e229c19e791f2e4123)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e791f2e4123 (9 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH RES has invalid length: 9. Expected 8 (UMTS AKA)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000010650, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- Iu Release --UTRAN-Iu--> MS
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000010650:UTRAN-Iu:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650) MSC-A terminated
+DMSC msub(IMSI-901700000010650) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650) Free
+DREF VLR subscr IMSI-901700000010650 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_too_long_res_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_only_sres_geran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--GERAN-A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DBSSAP msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:GERAN-A:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){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(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:GERAN-A:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 of wrong RES size, VLR thwarts: GERAN reports an SRES mismatch
MSC <--GERAN-A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM GSM AUTHENTICATION RESPONSE (sres = e229c19e)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = e229c19e)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on GERAN received SRES/RES: e229c19e (4 bytes)
DVLR SUBSCR(IMSI-901700000010650) GSM AUTH failure: mismatching sres (expected sres=9b 36 ef df )
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000010650, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- BSSAP Clear --GERAN-A--> MS
-DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A-0:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000010650:GERAN-A:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on GERAN-A
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
bssap_clear_sent == 1
-- BSS sends BSSMAP Clear Complete
-DREF IMSI-901700000010650: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:GERAN-A-0:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A-0:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:GERAN-A-0:LU)
-DRLL IMSI-901700000010650: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650
-DMM RAN_conn(IMSI-901700000010650:GERAN-A-0:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DBSSAP msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:GERAN-A:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650) MSC-A terminated
+DMSC msub(IMSI-901700000010650) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:GERAN-A:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:GERAN-A:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msub(IMSI-901700000010650) Free
+DREF VLR subscr IMSI-901700000010650 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:GERAN-A:LU)
+DMSC msc_a(IMSI-901700000010650:GERAN-A:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_only_sres_geran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
===== test_umts_authen_only_sres_utran
- Location Update request causes a GSUP Send Auth Info request to HLR
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
new conn
-DMM RAN_conn{RAN_CONN_S_NEW}: Allocated
-DREF unknown: MSC conn use + compl_l3 == 1 (0x1: compl_l3)
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: LU/new-LAC: 0/23
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: is child of RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
+DMSC msub_fsm{active}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: Allocated
+DMSC msc_a{MSC_A_ST_VALIDATE_L3}: is child of msub_fsm
+DMSC msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_VALIDATE_L3
+DMSC dummy_msc_i{0}: Allocated
+DMSC dummy_msc_i{0}: is child of msub_fsm
+DREF msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: + rx_from_ms: now used by 1 (rx_from_ms)
+DIUCS msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: RAN decode: COMPL_L3
+DRLL msc_a(unknown:UTRAN-Iu:NONE){MSC_A_ST_VALIDATE_L3}: Dispatching 04.08 message: MM GSM48_MT_MM_LOC_UPD_REQUEST
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: LOCATION UPDATING REQUEST: MI=IMSI-901700000010650 LU-type=NORMAL
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: USIM: old LAI: 1665-165-0
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + mm_rx_loc_upd_req: now used by 2 (rx_from_ms,mm_rx_loc_upd_req)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: + lu: now used by 3 (rx_from_ms,mm_rx_loc_upd_req,lu)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Allocated
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: is child of msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
DREF VLR subscr unknown + _lu_fsm_associate_vsub: now used by 1 (_lu_fsm_associate_vsub)
DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI-901700000010650 + conn: now used by 2 (_lu_fsm_associate_vsub,conn)
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Updated ID
-DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (conn)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: Received Event RAN_CONN_E_COMPLETE_LAYER_3
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_NEW}: state_chg to RAN_CONN_S_AUTH_CIPH
-DREF IMSI-901700000010650: MSC conn use - compl_l3 == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Awaiting results for Auth+Ciph, overruling event RAN_CONN_E_UNUSED
+DREF VLR subscr IMSI-901700000010650 + active-conn: now used by 2 (_lu_fsm_associate_vsub,active-conn)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: Received Event MSC_A_EV_COMPLETE_LAYER_3_OK
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_VALIDATE_L3}: state_chg to MSC_A_ST_AUTH_CIPH
+DREF VLR subscr IMSI-901700000010650 - _lu_fsm_associate_vsub: now used by 1 (active-conn)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Allocated
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
+GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - mm_rx_loc_upd_req: now used by 2 (rx_from_ms,lu)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - rx_from_ms: now used by 1 (lu)
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 + vlr_gsupc_read_cb: now used by 2 (conn,vlr_gsupc_read_cb)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
+<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac20a0101
+DREF VLR subscr IMSI-901700000010650 + vlr_gsup_rx: now used by 2 (active-conn,vlr_gsup_rx)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){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(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
-- sending UMTS Auth Request for IMSI-901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- will use UMTS AKA (is_r99=yes, at->vec.auth_types=0x3)
+- sending UMTS Auth Request for IMSI-901700000010650:UTRAN-Iu:LU: tuple use_count=1 key_seq=0 auth_types=0x3 and...
- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
- ...autn=8704f5ba55f30000d2ee44b22c8ea919
- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI-901700000010650 - vlr_gsupc_read_cb: now used by 1 (conn)
+DREF VLR subscr IMSI-901700000010650 - vlr_gsup_rx: now used by 1 (active-conn)
<-- 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 of wrong RES size, VLR thwarts: UTRAN disallows GSM AKA altogether
MSC <--UTRAN-Iu-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI-901700000010650: MSC conn use + dtap == 1 (0x2: dtap)
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI-901700000010650: MM GSM AUTHENTICATION RESPONSE (sres = e229c19e)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: + rx_from_ms: now used by 2 (lu,rx_from_ms)
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: RAN decode: DTAP
+DRLL msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Dispatching 04.08 message: MM GSM48_MT_MM_AUTH_RESP
+DMM msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: MM GSM AUTHENTICATION RESPONSE (sres = e229c19e)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
DVLR SUBSCR(IMSI-901700000010650) AUTH on UTRAN received RES: e229c19e (4 bytes)
DVLR SUBSCR(IMSI-901700000010650) AUTH via UTRAN, cannot allow GSM AKA (MS is R99 capable, vec has UMTS AKA tokens, res_len=4 is INVALID on UTRAN)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR GSUP tx: 0b010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f0
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI-901700000010650, cause 3
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: Received Event RAN_CONN_E_CN_CLOSE
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_AUTH_CIPH}: state_chg to RAN_CONN_S_RELEASING
-DREF IMSI-901700000010650: MSC conn use + release == 2 (0x102: dtap,release)
-DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 2 (conn,vlr_subscr_cancel_attach_fsm)
-DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 1 (conn)
-- Iu Release --UTRAN-Iu--> MS
-DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DREF IMSI-901700000010650: MSC conn use - dtap == 1 (0x100: release)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result Illegal MS
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTH_FAILED
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
+- sending LU Reject for IMSI-901700000010650:UTRAN-Iu:LU, cause 3
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: Received Event MSC_A_EV_CN_CLOSE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: - lu: now used by 1 (rx_from_ms)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_AUTH_CIPH}: state_chg to MSC_A_ST_RELEASING
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Releasing: msc_a use is 1 (rx_from_ms)
+DREF VLR subscr IMSI-901700000010650 + msc_a_fsm_releasing_onenter: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF VLR subscr IMSI-901700000010650 + vlr_subscr_cancel_attach_fsm: now used by 3 (active-conn,msc_a_fsm_releasing_onenter,vlr_subscr_cancel_attach_fsm)
+DREF VLR subscr IMSI-901700000010650 - vlr_subscr_cancel_attach_fsm: now used by 2 (active-conn,msc_a_fsm_releasing_onenter)
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: + wait-Clear-Complete: now used by 2 (rx_from_ms,wait-Clear-Complete)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN encode: CLEAR_COMMAND on UTRAN-Iu
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Received Event MSC_I_EV_FROM_A_FORWARD_ACCESS_SIGNALLING_REQUEST
+DREF VLR subscr IMSI-901700000010650 - msc_a_fsm_releasing_onenter: now used by 1 (active-conn)
+DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Deallocated
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - rx_from_ms: now used by 1 (wait-Clear-Complete)
lu_result_sent == 2
iu_release_sent == 1
-- RNC sends Iu Release Complete
-DREF IMSI-901700000010650: MSC conn use - release == 0 (0x0: )
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: Received Event RAN_CONN_E_UNUSED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASING}: state_chg to RAN_CONN_S_RELEASED
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU))
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Removing from parent RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu-42:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU)
-DRLL IMSI-901700000010650: Freeing RAN connection
-DREF VLR subscr IMSI-901700000010650 - conn: now used by 0 (-)
-DREF freeing VLR subscr IMSI-901700000010650
-DMM RAN_conn(IMSI-901700000010650:UTRAN-Iu-42:LU){RAN_CONN_S_RELEASED}: Deallocated, including all deferred deallocations
- llist_count(&net->ran_conns) == 0
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: RAN decode: CLEAR_COMPLETE
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: - wait-Clear-Complete: now used by 0 (-)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: Received Event MSC_A_EV_UNUSED
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASING}: state_chg to MSC_A_ST_RELEASED
+DIUCS msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Released: msc_a use is 0 (-)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Removing from parent msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
+DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_DONE}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Removing from parent msub_fsm
+DREF msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: max total use count was 3
+DMSC msub_fsm{active}: Received Event MSUB_EV_ROLE_TERMINATED
+DMSC msub(IMSI-901700000010650) MSC-A terminated
+DMSC msub(IMSI-901700000010650) 1 MSC-I still active
+DMSC msub_fsm{active}: state_chg to terminating
+DMSC msub_fsm{terminating}: Terminating in cascade, depth 2 (cause = OSMO_FSM_TERM_REGULAR, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Terminating in cascade, depth 3 (cause = OSMO_FSM_TERM_PARENT, caused by: msc_a(IMSI-901700000010650:UTRAN-Iu:LU))
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Removing from parent msub_fsm
+DMSC dummy_msc_i(IMSI-901700000010650:UTRAN-Iu:LU){0}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msub(IMSI-901700000010650) Free
+DREF VLR subscr IMSI-901700000010650 - active-conn: now used by 0 (-)
+DVLR freeing VLR subscr IMSI-901700000010650 (max total use count was 3)
+DMSC msub_fsm{terminating}: Deferring: will deallocate with msc_a(IMSI-901700000010650:UTRAN-Iu:LU)
+DMSC msc_a(IMSI-901700000010650:UTRAN-Iu:LU){MSC_A_ST_RELEASED}: Deallocated, including all deferred deallocations
+- msub gone
+ llist_count(&msub_list) == 0
===== test_umts_authen_only_sres_utran: SUCCESS
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 13
+talloc_total_blocks(tall_bsc_ctx) == 17
diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c
index ffe35f7cc..9c3ecb740 100644
--- a/tests/msc_vlr/msc_vlr_tests.c
+++ b/tests/msc_vlr/msc_vlr_tests.c
@@ -30,19 +30,17 @@
#include <osmocom/core/application.h>
#include <osmocom/gsm/protocol/gsm_04_11.h>
#include <osmocom/gsm/gsup.h>
-#include <osmocom/gsupclient/gsup_client.h>
+#include <osmocom/msc/gsup_client_mux.h>
#include <osmocom/msc/gsm_04_11.h>
#include <osmocom/msc/debug.h>
#include <osmocom/msc/gsm_04_08.h>
#include <osmocom/msc/transaction.h>
-#include <osmocom/msc/a_iface_bssap.h>
-
-#if BUILD_IU
-#include <osmocom/msc/iucs_ranap.h>
-#include <osmocom/ranap/iu_client.h>
-#else
-#include <osmocom/msc/iu_dummy.h>
-#endif
+#include <osmocom/msc/ran_msg.h>
+#include <osmocom/msc/msc_a.h>
+#include <osmocom/msc/msc_i.h>
+#include <osmocom/msc/msc_t.h>
+#include <osmocom/msc/call_leg.h>
+#include <osmocom/msc/rtp_stream.h>
#include "msc_vlr_tests.h"
@@ -80,7 +78,7 @@ const char *cc_to_mncc_tx_expected_imsi = NULL;
bool cc_to_mncc_tx_confirmed = false;
uint32_t cc_to_mncc_tx_got_callref = 0;
-extern int gsm0407_pdisc_ctr_bin(uint8_t pdisc);
+extern int ran_dec_dtap_undup_pdisc_ctr_bin(uint8_t pdisc);
/* static state variables for the L3 send sequence numbers */
static uint8_t n_sd[4];
@@ -91,7 +89,7 @@ static void patch_l3_seq_nr(struct msgb *msg)
struct gsm48_hdr *gh = msgb_l3(msg);
uint8_t pdisc = gsm48_hdr_pdisc(gh);
uint8_t *msg_type_oct = &msg->l3h[1];
- int bin = gsm0407_pdisc_ctr_bin(pdisc);
+ int bin = ran_dec_dtap_undup_pdisc_ctr_bin(pdisc);
if (bin >= 0 && bin < ARRAY_SIZE(n_sd)) {
/* patch in n_sd into the msg_type octet */
@@ -126,21 +124,6 @@ static const char *gh_type_name(struct gsm48_hdr *gh)
gsm48_hdr_msg_type(gh));
}
-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);
- /* Mask the sequence number out */
- if (msgb_length(dtap_tx_expected) >= 2)
- dtap_tx_expected->data[1] &= 0x3f;
- dtap_tx_confirmed = false;
-}
-
-int vlr_gsupc_read_cb(struct osmo_gsup_client *gsupc, struct msgb *msg);
-
void gsup_rx(const char *rx_hex, const char *expect_tx_hex)
{
int rc;
@@ -154,97 +137,303 @@ void gsup_rx(const char *rx_hex, const char *expect_tx_hex)
fprintf(stderr, "<-- GSUP rx %s: %s\n", label,
osmo_hexdump_nospc(msgb_l2(msg), msgb_l2len(msg)));
/* GSUP read cb takes ownership of msgb */
- rc = vlr_gsupc_read_cb(net->vlr->gsup_client, msg);
+ rc = gsup_client_mux_rx(net->gcm->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);
}
-bool conn_exists(const struct ran_conn *conn)
+bool conn_exists(const struct msub *msub)
{
- struct ran_conn *c;
+ struct msub *i;
- if (!conn)
+ if (!msub)
return false;
- llist_for_each_entry(c, &net->ran_conns, entry) {
- if (c == conn)
+ llist_for_each_entry(i, &msub_list, entry) {
+ if (i == msub)
return true;
}
+ btw("msub gone");
return false;
}
/* Simplified version of the cm_service_request_concludes() */
-void conn_conclude_cm_service_req(struct ran_conn *conn,
- enum osmo_rat_type via_ran)
+void conn_conclude_cm_service_req(struct msub *msub, const char *cm_service_use)
{
+ int32_t count;
+ struct msc_a *msc_a = msub_msc_a(msub);
btw("Concluding CM Service Request");
- OSMO_ASSERT(conn);
- OSMO_ASSERT(conn->received_cm_service_request);
+ OSMO_ASSERT(conn_exists(msub));
+ count = osmo_use_count_by(&msc_a->use_count, cm_service_use);
+ OSMO_ASSERT(count > 0);
- conn->received_cm_service_request = false;
- ran_conn_put(conn, RAN_CONN_USE_CM_SERVICE);
+ OSMO_ASSERT(osmo_use_count_get_put(&msc_a->use_count, cm_service_use, -count) == 0)
- ASSERT_RELEASE_CLEAR(via_ran);
+ ASSERT_RELEASE_CLEAR(msc_a->c.ran->type);
}
-enum osmo_rat_type rx_from_ran = OSMO_RAT_GERAN_A;
+void dummy_msc_i_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+}
+
+static const struct osmo_fsm_state dummy_msc_i_states[] = {
+ {
+ .name = "0",
+ .in_event_mask = 0xffffffff,
+ .action = dummy_msc_i_action,
+ },
+};
-/* SCCP user stub to make a_iface_tx_bssap() happy during test case execution */
-struct osmo_sccp_user {
- uint8_t foo;
+struct osmo_fsm dummy_msc_i_fsm = {
+ .name = "dummy_msc_i",
+ .states = dummy_msc_i_states,
+ .num_states = ARRAY_SIZE(dummy_msc_i_states),
+ .log_subsys = DMSC,
+ .event_names = msc_i_fsm_event_names,
};
-static struct osmo_sccp_user g_scu;
-struct ran_conn *conn_new(void)
+struct msc_i *dummy_msc_i_alloc(struct msub *msub, struct ran_infra *ran)
{
- struct ran_conn *conn;
- conn = ran_conn_alloc(net, rx_from_ran, 23);
- if (conn->via_ran == OSMO_RAT_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;
- } else {
- conn->a.scu = &g_scu;
+ return msub_role_alloc(g_msub, MSC_ROLE_I, &dummy_msc_i_fsm, struct msc_i, ran);
+}
+
+enum osmo_rat_type rx_from_ran = OSMO_RAT_GERAN_A;
+
+struct msub *g_msub = NULL;
+
+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);
+ /* Mask the sequence number out */
+ if (msgb_length(dtap_tx_expected) >= 2)
+ dtap_tx_expected->data[1] &= 0x3f;
+ dtap_tx_confirmed = false;
+}
+
+static int _validate_dtap(struct msgb *msg, enum osmo_rat_type to_ran)
+{
+ struct gsm48_hdr *gh = (void*)msg->data;
+ uint8_t pdisc = gsm48_hdr_pdisc(gh);
+ uint8_t msgt = gsm48_hdr_msg_type(gh);
+
+ btw("DTAP --%s--> MS: %s: %s",
+ osmo_rat_type_name(to_ran), gh_type_name((void*)msg->data),
+ osmo_hexdump_nospc(msg->data, msg->len));
+
+ if (pdisc == GSM48_PDISC_MM
+ && msgt == GSM48_MT_MM_CM_SERV_ACC) {
+ cm_service_result_sent |= RES_ACCEPT;
+ talloc_free(msg);
+ return 0;
+ }
+
+ if (pdisc == GSM48_PDISC_MM
+ && msgt == GSM48_MT_MM_CM_SERV_REJ) {
+ cm_service_result_sent |= RES_REJECT;
+ talloc_free(msg);
+ return 0;
+ }
+
+ OSMO_ASSERT(dtap_tx_expected);
+
+ /* Mask the sequence number out before comparing */
+ msg->data[1] &= 0x3f;
+ if (!msgb_eq_data_print(msg, 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;
+}
+
+static void bssap_validate_clear_cmd()
+{
+ OSMO_ASSERT(bssap_clear_expected);
+ bssap_clear_expected = false;
+ bssap_clear_sent = true;
+}
+
+static void iucs_validate_clear_cmd()
+{
+ OSMO_ASSERT(iu_release_expected);
+ iu_release_expected = false;
+ iu_release_sent = true;
+}
+
+static int bssap_validate_cipher_mode_cmd(const struct ran_cipher_mode_command *cmd)
+{
+ int i;
+ const char *got_key;
+ cipher_mode_cmd_sent = true;
+ cipher_mode_cmd_sent_with_imeisv = cmd->geran.retrieve_imeisv;
+ btw("sending Ciphering Mode Command: retrieve_imeisv=%d", cipher_mode_cmd_sent_with_imeisv);
+ for (i = 0; i < 7; i++) {
+ if (!(cmd->geran.a5_encryption_mask & (1 << i)))
+ continue;
+ btw("...perm algo: A5/%d", i);
+ }
+ got_key = osmo_hexdump_nospc(cmd->vec->kc, sizeof(cmd->vec->kc));
+ btw("...key: %s", got_key);
+
+ if (!cipher_mode_expect_kc
+ || strcmp(cipher_mode_expect_kc, got_key)) {
+ log("FAILURE: expected kc=%s", cipher_mode_expect_kc ? : "NULL");
+ OSMO_ASSERT(false);
}
- return conn;
+ return 0;
}
-struct ran_conn *g_conn = NULL;
+static int iucs_validate_security_mode_ctrl(const struct ran_cipher_mode_command *cmd)
+{
+ const char *got_ik;
+ got_ik = osmo_hexdump_nospc(cmd->vec->ik, sizeof(cmd->vec->ik));
+ btw("sending SecurityModeControl: ik=%s", got_ik);
+ security_mode_ctrl_sent = true;
+ if (!security_mode_expect_ik
+ || strcmp(security_mode_expect_ik, got_ik)) {
+ log("FAILURE: expected ik=%s", security_mode_expect_ik ? : "NULL");
+ OSMO_ASSERT(false);
+ }
+ return 0;
+}
-void rx_from_ms(struct msgb *msg)
+struct msgb *dont_ran_encode(struct osmo_fsm_inst *caller_fi, const struct ran_msg *ran_enc_msg)
{
- struct gsm48_hdr *gh = msgb_l3(msg);
+ struct msc_role_common *c = caller_fi->priv;
+ enum osmo_rat_type ran_type = c->ran->type;
+ const char *ran_name = osmo_rat_type_name(ran_type);
+ LOG_RAN_ENC(caller_fi, DMSC, LOGL_INFO, "%s on %s\n", ran_msg_type_name(ran_enc_msg->msg_type),
+ ran_name);
+
+ switch (ran_enc_msg->msg_type) {
+ case RAN_MSG_DTAP:
+ _validate_dtap(ran_enc_msg->dtap, ran_type);
+ break;
+ case RAN_MSG_CLEAR_COMMAND:
+ switch (ran_type) {
+ case OSMO_RAT_GERAN_A:
+ bssap_validate_clear_cmd();
+ break;
+ case OSMO_RAT_UTRAN_IU:
+ iucs_validate_clear_cmd();
+ break;
+ default:
+ OSMO_ASSERT(false);
+ }
+ break;
+ case RAN_MSG_CIPHER_MODE_COMMAND:
+ switch (ran_type) {
+ case OSMO_RAT_GERAN_A:
+ bssap_validate_cipher_mode_cmd(&ran_enc_msg->cipher_mode_command);
+ break;
+ case OSMO_RAT_UTRAN_IU:
+ iucs_validate_security_mode_ctrl(&ran_enc_msg->cipher_mode_command);
+ break;
+ default:
+ OSMO_ASSERT(false);
+ }
+ break;
+ default:
+ break;
+ }
- log("MSC <--%s-- MS: %s",
- osmo_rat_type_name(rx_from_ran),
- gh_type_name(gh));
+ /* We're testing MSC and VLR interaction, not message encoding.
+ * Return whatever. The test msc_i instance is a dummy and drops these.
+ * But it must be msg_free()-able.
+ */
+ return msgb_alloc(1, "unused dummy msg");
+}
+
+struct ran_infra test_ran_infra[] = {
+ [OSMO_RAT_GERAN_A] = {
+ .type = OSMO_RAT_GERAN_A,
+ .an_proto = OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_48006,
+ .log_subsys = DBSSAP,
+ .tdefs = msc_tdefs_geran,
+ .ran_encode = dont_ran_encode,
+ },
+ [OSMO_RAT_UTRAN_IU] = {
+ .type = OSMO_RAT_UTRAN_IU,
+ .an_proto = OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_25413,
+ .log_subsys = DIUCS,
+ .tdefs = msc_tdefs_utran,
+ .ran_encode = dont_ran_encode,
+ },
+};
- if (!conn_exists(g_conn))
- g_conn = NULL;
+static int fake_msc_a_ran_dec(const struct ran_msg *ran_dec_msg)
+{
+ struct msc_a_ran_dec_data d = {
+ .from_role = MSC_ROLE_I,
+ };
+ return msc_a_ran_decode_cb(g_msub->role[MSC_ROLE_A], &d, ran_dec_msg);
+}
- if (!g_conn) {
+void rx_from_ms(struct msgb *msg)
+{
+ struct gsm48_hdr *gh = msgb_l3(msg);
+ struct ran_msg ran_dec_msg;
+ struct gsm0808_cell_id cell_id = {
+ .id_discr = CELL_IDENT_LAI_AND_LAC,
+ .id.lai_and_lac = {
+ .plmn = {
+ .mcc = 1,
+ .mnc = 2,
+ },
+ .lac = 23,
+ },
+ };
+ struct msc_a *msc_a;
+
+ log("MSC <--%s-- MS: %s", osmo_rat_type_name(rx_from_ran), gh_type_name(gh));
+
+ if (!conn_exists(g_msub))
+ g_msub = NULL;
+
+ if (!g_msub) {
log("new conn");
- g_conn = conn_new();
+ g_msub = msub_alloc(net);
+ msc_a_alloc(g_msub, &test_ran_infra[rx_from_ran]);
+ dummy_msc_i_alloc(g_msub, &test_ran_infra[rx_from_ran]);
+
reset_l3_seq_nr();
- patch_l3_seq_nr(msg);
- ran_conn_compl_l3(g_conn, msg, 23);
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_COMPL_L3,
+ .compl_l3 = {
+ .cell_id = &cell_id,
+ .msg = msg,
+ },
+ };
} else {
- patch_l3_seq_nr(msg);
- if ((gsm48_hdr_pdisc(gh) == GSM48_PDISC_RR)
- && (gsm48_hdr_msg_type(gh) == GSM48_MT_RR_CIPH_M_COMPL))
- ran_conn_cipher_mode_compl(g_conn, msg, 0);
- else
- ran_conn_dtap(g_conn, msg);
+ ran_dec_msg = (struct ran_msg){
+ .msg_type = RAN_MSG_DTAP,
+ .dtap = msg,
+ };
}
- if (!conn_exists(g_conn))
- g_conn = NULL;
+ msc_a = msub_msc_a(g_msub);
+ msc_a_get(msc_a, __func__);
+
+ patch_l3_seq_nr(msg);
+ fake_msc_a_ran_dec(&ran_dec_msg);
+
+ msc_a_put(msc_a, __func__);
+
+ if (!conn_exists(g_msub))
+ g_msub = NULL;
}
void ms_sends_msg(const char *hex)
@@ -257,34 +446,21 @@ void ms_sends_msg(const char *hex)
msgb_free(msg);
}
-void bss_sends_bssap_mgmt(const char *hex)
+void ms_sends_classmark_update(const struct osmo_gsm48_classmark *classmark)
{
- struct msgb *msg;
- struct bssmap_header *bh;
- struct a_conn_info a_conn_info;
-
- msg = msgb_from_hex("bss_sends_bssap_mgmt", 1024, hex);
- msg->l3h = msg->data;
-
- msg->l2h = msgb_push(msg, sizeof(*bh));
- bh = (void*)msg->l2h;
- bh->type = BSSAP_MSG_BSS_MANAGEMENT;
- bh->length = msgb_l3len(msg);
-
- if (!conn_exists(g_conn))
- g_conn = NULL;
-
- OSMO_ASSERT(g_conn);
- a_conn_info.network = net;
- a_conn_info.conn_id = g_conn->a.conn_id;
-
- a_sccp_rx_dt((struct osmo_sccp_user*)0x1, &a_conn_info, msg);
- msgb_free(msg);
+ struct ran_msg ran_dec = {
+ .msg_type = RAN_MSG_CLASSMARK_UPDATE,
+ .classmark_update = {
+ .classmark = classmark,
+ },
+ };
+ fake_msc_a_ran_dec(&ran_dec);
}
static int ms_sends_msg_fake(uint8_t pdisc, uint8_t msg_type)
{
int rc;
+ struct ran_msg ran_dec;
struct msgb *msg;
struct gsm48_hdr *gh;
@@ -298,7 +474,12 @@ static int ms_sends_msg_fake(uint8_t pdisc, uint8_t msg_type)
msgb_put(msg, 123);
patch_l3_seq_nr(msg);
- rc = gsm0408_dispatch(g_conn, msg);
+
+ ran_dec = (struct ran_msg){
+ .msg_type = RAN_MSG_DTAP,
+ .dtap = msg,
+ };
+ rc = fake_msc_a_ran_dec(&ran_dec);
talloc_free(msg);
return rc;
@@ -352,7 +533,6 @@ void __wrap_gsm340_gen_scts(uint8_t *scts, time_t time)
const char *paging_expecting_imsi = NULL;
uint32_t paging_expecting_tmsi;
bool paging_sent;
-bool paging_stopped;
void paging_expect_imsi(const char *imsi)
{
@@ -366,69 +546,25 @@ void paging_expect_tmsi(uint32_t tmsi)
paging_expecting_imsi = NULL;
}
-static int _paging_sent(enum osmo_rat_type via_ran, const char *imsi, uint32_t tmsi, uint32_t lac)
+/* override, requires '-Wl,--wrap=ran_peers_down_paging' */
+int __real_ran_peers_down_paging(struct sccp_ran_inst *sri, enum CELL_IDENT page_where, struct vlr_subscr *vsub,
+ enum paging_cause cause);
+int __wrap_ran_peers_down_paging(struct sccp_ran_inst *sri, enum CELL_IDENT page_where, struct vlr_subscr *vsub,
+ enum paging_cause cause)
{
- log("%s sends out paging request to IMSI %s, TMSI 0x%08x, LAC %u",
- osmo_rat_type_name(via_ran), imsi, tmsi, lac);
+ log("paging request (%s) to %s on %s", paging_cause_name(cause), vlr_subscr_name(vsub),
+ osmo_rat_type_name(sri->ran->type));
+
OSMO_ASSERT(paging_expecting_imsi || (paging_expecting_tmsi != GSM_RESERVED_TMSI));
if (paging_expecting_imsi)
- VERBOSE_ASSERT(strcmp(paging_expecting_imsi, imsi), == 0, "%d");
+ VERBOSE_ASSERT(strcmp(paging_expecting_imsi, vsub->imsi), == 0, "%d");
if (paging_expecting_tmsi != GSM_RESERVED_TMSI) {
- VERBOSE_ASSERT(paging_expecting_tmsi, == tmsi, "0x%08x");
+ VERBOSE_ASSERT(paging_expecting_tmsi, == vsub->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(OSMO_RAT_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(OSMO_RAT_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;
-}
-
-
-/* override, requires '-Wl,--wrap=osmo_sccp_tx_data_msg' */
-int __real_osmo_sccp_tx_data_msg(struct osmo_sccp_user *scu, uint32_t conn_id,
- struct msgb *msg);
-int __wrap_osmo_sccp_tx_data_msg(struct osmo_sccp_user *scu, uint32_t conn_id,
- struct msgb *msg)
-{
- const char *proto_str;
- const char *msg_str = gsm0808_bssmap_name(msg->l3h[2]);
- switch (*msg->l3h) {
- case BSSAP_MSG_BSS_MANAGEMENT:
- proto_str = "BSSAP-BSS-MANAGEMENT";
- break;
- case BSSAP_MSG_DTAP:
- proto_str = "BSSAP-DTAP";
- break;
- default:
- proto_str = "";
- msg_str = "";
- break;
- }
-
- log("BSC <--%s-- MSC: %s %s", proto_str, msg_str, msgb_hexdump(msg));
- msgb_free(msg);
- return 0;
-}
-
void clear_vlr()
{
struct vlr_subscr *vsub, *n;
@@ -531,12 +667,26 @@ static struct log_info info = {
.num_cat = ARRAY_SIZE(test_categories),
};
+struct gsm_mncc *on_call_release_mncc_sends_to_cc_data = NULL;
+
int mncc_recv(struct gsm_network *net, struct msgb *msg)
{
struct gsm_mncc *mncc = (void*)msg->data;
log("MSC --> MNCC: callref 0x%x: %s", mncc->callref,
get_mncc_name(mncc->msg_type));
+ if (mncc->msg_type == MNCC_REL_IND && on_call_release_mncc_sends_to_cc_data) {
+
+ log("MNCC: callref 0x%x: Call Release triggering %s", mncc->callref,
+ get_mncc_name(on_call_release_mncc_sends_to_cc_data->msg_type));
+
+ mncc_tx_to_cc(net, on_call_release_mncc_sends_to_cc_data->msg_type,
+ on_call_release_mncc_sends_to_cc_data);
+
+ on_call_release_mncc_sends_to_cc_data = NULL;
+ return 0;
+ }
+
OSMO_ASSERT(cc_to_mncc_tx_expected_msg_type);
if (cc_to_mncc_tx_expected_msg_type != mncc->msg_type) {
log("Mismatch! Expected MNCC msg type: %s",
@@ -600,129 +750,40 @@ int __wrap_osmo_gsup_client_send(struct osmo_gsup_client *gsupc, struct msgb *ms
return 0;
}
-static int _validate_dtap(struct msgb *msg, enum osmo_rat_type to_ran)
-{
- btw("DTAP --%s--> MS: %s: %s",
- osmo_rat_type_name(to_ran), gh_type_name((void*)msg->data),
- osmo_hexdump_nospc(msg->data, msg->len));
-
- OSMO_ASSERT(dtap_tx_expected);
-
- /* Mask the sequence number out before comparing */
- msg->data[1] &= 0x3f;
- if (!msgb_eq_data_print(msg, 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, OSMO_RAT_UTRAN_IU);
-}
-
-/* override, requires '-Wl,--wrap=ranap_iu_tx_release' */
-int __real_ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause);
-int __wrap_ranap_iu_tx_release(struct ranap_ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
-{
- btw("Iu Release --%s--> MS", osmo_rat_type_name(OSMO_RAT_UTRAN_IU));
- OSMO_ASSERT(iu_release_expected);
- iu_release_expected = false;
- iu_release_sent = true;
- return 0;
-}
-
-/* override, requires '-Wl,--wrap=iu_tx_common_id' */
-int __real_ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *ue_ctx, const char *imsi);
-int __wrap_ranap_iu_tx_common_id(struct ranap_ue_conn_ctx *ue_ctx, const char *imsi)
+/* override, requires '-Wl,--wrap=call_leg_ensure_ci' */
+int __real_call_leg_ensure_ci(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id, struct gsm_trans *for_trans);
+int __wrap_call_leg_ensure_ci(struct call_leg *cl, enum rtp_direction dir, uint32_t call_id, struct gsm_trans *for_trans)
{
- btw("Iu Common ID --%s--> MS (IMSI=%s)", osmo_rat_type_name(OSMO_RAT_UTRAN_IU), imsi);
+ log("MS <--Call Assignment-- MSC: callref=0x%x", call_id);
return 0;
}
-/* 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, OSMO_RAT_GERAN_A);
-}
-
-/* override, requires '-Wl,--wrap=a_iface_tx_clear_cmd' */
-int __real_a_iface_tx_clear_cmd(struct ran_conn *conn);
-int __wrap_a_iface_tx_clear_cmd(struct ran_conn *conn)
-{
- btw("BSSAP Clear --%s--> MS", osmo_rat_type_name(OSMO_RAT_GERAN_A));
- OSMO_ASSERT(bssap_clear_expected);
- bssap_clear_expected = false;
- bssap_clear_sent = true;
- return 0;
-}
-
-/* override, requires '-Wl,--wrap=msc_mgcp_try_call_assignment' */
-int __real_msc_mgcp_try_call_assignment(struct gsm_trans *trans);
-int __wrap_msc_mgcp_try_call_assignment(struct gsm_trans *trans)
-{
- log("MS <--Call Assignment-- MSC: subscr=%s callref=0x%x",
- vlr_subscr_name(trans->vsub), trans->callref);
- return 0;
-}
-
-struct gsm_mncc *on_call_release_mncc_sends_to_cc_data = NULL;
-
-/* override, requires '-Wl,--wrap=msc_mgcp_call_release' */
-void __real_msc_mgcp_call_release(struct gsm_trans *trans);
-void __wrap_msc_mgcp_call_release(struct gsm_trans *trans)
-{
- log("MS <--Call Release-- MSC: subscr=%s callref=0x%x",
- vlr_subscr_name(trans->vsub), trans->callref);
- if (on_call_release_mncc_sends_to_cc_data) {
- mncc_tx_to_cc(trans->net, on_call_release_mncc_sends_to_cc_data->msg_type,
- on_call_release_mncc_sends_to_cc_data);
- on_call_release_mncc_sends_to_cc_data = NULL;
- }
-}
-
static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi)
{
- struct ran_conn *conn = msc_conn_ref;
+ struct msc_a *msc_a = msc_conn_ref;
if (send_tmsi == GSM_RESERVED_TMSI)
- btw("sending LU Accept for %s", vlr_subscr_name(conn->vsub));
+ btw("sending LU Accept for %s", msc_a->c.fi->id);
else
btw("sending LU Accept for %s, with TMSI 0x%08x",
- vlr_subscr_name(conn->vsub), send_tmsi);
+ msc_a->c.fi->id, send_tmsi);
lu_result_sent |= RES_ACCEPT;
return 0;
}
static int fake_vlr_tx_lu_rej(void *msc_conn_ref, enum gsm48_reject_value cause)
{
- struct ran_conn *conn = msc_conn_ref;
- btw("sending LU Reject for %s, cause %u", vlr_subscr_name(conn->vsub), cause);
+ struct msc_a *msc_a = msc_conn_ref;
+ btw("sending LU Reject for %s, cause %u", msc_a->c.fi->id, cause);
lu_result_sent |= RES_REJECT;
return 0;
}
-static int fake_vlr_tx_cm_serv_acc(void *msc_conn_ref)
-{
- struct ran_conn *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 gsm48_reject_value cause)
+static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum osmo_cm_service_type cm_service_type,
+ enum gsm48_reject_value cause)
{
- struct ran_conn *conn = msc_conn_ref;
- btw("sending CM Service Reject for %s, cause: %s",
- vlr_subscr_name(conn->vsub), gsm48_reject_value_name(cause));
+ struct msc_a *msc_a = msc_conn_ref;
+ btw("sending CM Service Reject (%s) for %s, cause: %s",
+ osmo_cm_service_type_name(cm_service_type), msc_a->c.fi->id, gsm48_reject_value_name(cause));
cm_service_result_sent |= RES_REJECT;
return 0;
}
@@ -730,11 +791,11 @@ static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum gsm48_reject_value c
static int fake_vlr_tx_auth_req(void *msc_conn_ref, struct vlr_auth_tuple *at,
bool send_autn)
{
- struct ran_conn *conn = msc_conn_ref;
+ struct msc_a *msc_a = 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),
+ send_autn? "UMTS" : "GSM", msc_a->c.fi->id,
at->use_count, at->key_seq, at->vec.auth_types);
hex = osmo_hexdump_nospc((void*)&at->vec.rand, sizeof(at->vec.rand));
@@ -774,104 +835,64 @@ static int fake_vlr_tx_auth_req(void *msc_conn_ref, struct vlr_auth_tuple *at,
static int fake_vlr_tx_auth_rej(void *msc_conn_ref)
{
- struct ran_conn *conn = msc_conn_ref;
- btw("sending Auth Reject for %s", vlr_subscr_name(conn->vsub));
+ struct msc_a *msc_a = msc_conn_ref;
+ btw("sending Auth Reject for %s", msc_a->c.fi->id);
return 0;
}
-/* override, requires '-Wl,--wrap=a_iface_tx_cipher_mode' */
-int __real_a_iface_tx_cipher_mode(const struct ran_conn *conn,
- struct gsm0808_encrypt_info *ei, int include_imeisv);
-int __wrap_a_iface_tx_cipher_mode(const struct ran_conn *conn,
- struct gsm0808_encrypt_info *ei, int include_imeisv)
+void ms_sends_ciphering_mode_complete(const char *inner_ran_msg)
{
- int i;
- btw("sending Ciphering Mode Command for %s: include_imeisv=%d",
- vlr_subscr_name(conn->vsub), include_imeisv);
- for (i = 0; i < ei->perm_algo_len; i++)
- btw("...perm algo: A5/%u", ei->perm_algo[i] - 1);
- OSMO_ASSERT(ei->key_len <= sizeof(ei->key));
- btw("...key: %s", osmo_hexdump_nospc(ei->key, ei->key_len));
- cipher_mode_cmd_sent = true;
- cipher_mode_cmd_sent_with_imeisv = include_imeisv;
+ struct ran_msg ran_dec;
- if (!cipher_mode_expect_kc
- || strcmp(cipher_mode_expect_kc, osmo_hexdump_nospc(ei->key, ei->key_len))) {
- log("FAILURE: expected kc=%s", cipher_mode_expect_kc ? : "NULL");
- OSMO_ASSERT(false);
- }
- return 0;
-}
+ msc_a_get(msub_msc_a(g_msub), __func__);
-/* override, requires '-Wl,--wrap=ranap_iu_tx_sec_mode_cmd' */
-int __real_ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec,
- int send_ck, int new_key);
-int __wrap_ranap_iu_tx_sec_mode_cmd(struct ranap_ue_conn_ctx *uectx, struct osmo_auth_vector *vec,
- int send_ck, int new_key)
-{
- btw("sending SecurityModeControl for UE ctx %u send_ck=%d new_key=%d",
- uectx->conn_id, send_ck, new_key);
- btw("...ik=%s", osmo_hexdump_nospc(vec->ik, sizeof(vec->ik)));
- if (send_ck)
- btw("...ck=%s", osmo_hexdump_nospc(vec->ck, sizeof(vec->ck)));
- security_mode_ctrl_sent = true;
- if (!security_mode_expect_ik
- || strcmp(security_mode_expect_ik, osmo_hexdump_nospc(vec->ik, sizeof(vec->ik)))) {
- log("FAILURE: expected ik=%s", security_mode_expect_ik ? : "NULL");
- OSMO_ASSERT(false);
- }
- if (((!!send_ck) != (!!security_mode_expect_ck))
- || (security_mode_expect_ck
- && strcmp(security_mode_expect_ck, osmo_hexdump_nospc(vec->ck, sizeof(vec->ck))))) {
- log("FAILURE: expected ck=%s", security_mode_expect_ck ? : "NULL");
- OSMO_ASSERT(false);
+ ran_dec = (struct ran_msg){
+ .msg_type = RAN_MSG_CIPHER_MODE_COMPLETE,
+ };
+ fake_msc_a_ran_dec(&ran_dec);
+
+ if (inner_ran_msg) {
+ struct msgb *msg = msgb_from_hex("cipher_mode_complete_ran", 1024, inner_ran_msg);
+ msg->l1h = msg->l2h = msg->l3h = msg->data;
+ ran_dec = (struct ran_msg){
+ .msg_type = RAN_MSG_DTAP,
+ .dtap = msg,
+ };
+ patch_l3_seq_nr(msg);
+ fake_msc_a_ran_dec(&ran_dec);
+ msgb_free(msg);
}
- return 0;
-}
-extern int msc_vlr_set_ciph_mode(void *msc_conn_ref, bool umts_aka, bool retrieve_imeisv);
+ msc_a_put(msub_msc_a(g_msub), __func__);
-static int fake_vlr_tx_ciph_mode_cmd(void *msc_conn_ref, bool umts_aka, bool retrieve_imeisv)
-{
- int rc;
-#ifndef BUILD_IU
- /* If we built without support for IU, fake the IU part here. The root cause is that we don't
- * have differing sets of expected outputs for --enable-iu and --disable-iu. */
- struct ran_conn *conn = msc_conn_ref;
- if (conn->via_ran == OSMO_RAT_UTRAN_IU) {
- DEBUGP(DMM, "-> SECURITY MODE CONTROL %s\n", vlr_subscr_name(conn->vsub));
- rc = __wrap_ranap_iu_tx_sec_mode_cmd(conn->iu.ue_ctx, &conn->vsub->last_tuple->vec,
- 0, 1);
- } else
-#endif
- rc = msc_vlr_set_ciph_mode(msc_conn_ref, umts_aka, retrieve_imeisv);
- if (rc)
- btw("ERROR sending ciphering mode command: rc=%d", rc);
- return rc;
+ if (!conn_exists(g_msub))
+ g_msub = NULL;
}
void ms_sends_security_mode_complete()
{
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->via_ran == OSMO_RAT_UTRAN_IU);
- OSMO_ASSERT(g_conn->iu.ue_ctx);
- ran_conn_rx_sec_mode_compl(g_conn);
-}
+ struct ran_msg ran_dec;
-void bss_sends_clear_complete()
-{
- btw("BSS sends BSSMAP Clear Complete");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->via_ran == OSMO_RAT_GERAN_A);
- ran_conn_rx_bssmap_clear_complete(g_conn);
+ ran_dec = (struct ran_msg){
+ .msg_type = RAN_MSG_CIPHER_MODE_COMPLETE,
+ };
+ fake_msc_a_ran_dec(&ran_dec);
+
+ if (!conn_exists(g_msub))
+ g_msub = NULL;
}
-void rnc_sends_release_complete()
+void ran_sends_clear_complete()
{
- btw("RNC sends Iu Release Complete");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->via_ran == OSMO_RAT_UTRAN_IU);
- ran_conn_rx_iu_release_complete(g_conn);
+ struct ran_msg ran_dec;
+
+ ran_dec = (struct ran_msg){
+ .msg_type = RAN_MSG_CLEAR_COMPLETE,
+ };
+ fake_msc_a_ran_dec(&ran_dec);
+
+ if (!conn_exists(g_msub))
+ g_msub = NULL;
}
const struct timeval fake_time_start_time = { 123, 456 };
@@ -895,25 +916,29 @@ static void check_talloc(void *msgb_ctx, void *msc_vlr_tests_ctx)
/* Verifying that the msgb context is empty */
talloc_report_full(msgb_ctx, stderr);
/* Expecting these to stick around in msc_vlr_tests_ctx:
- * talloc_total_blocks(tall_bsc_ctx) == 13
- * full talloc report on 'msc_vlr_tests_ctx' (total 4638 bytes in 13 blocks)
- * struct osmo_gsup_client contains 256 bytes in 1 blocks (ref 0) 0x61300000dd20
- * struct gsm_network contains 2983 bytes in 5 blocks (ref 0) 0x61400000fea0
- * struct vlr_instance contains 320 bytes in 2 blocks (ref 0) 0x61300000dee0
- * struct ipaccess_unit contains 64 bytes in 1 blocks (ref 0) 0x60e0000244c0
- * no_gsup_server contains 15 bytes in 1 blocks (ref 0) 0x60b00000af40
- * rate_ctr.c:234 contains 2352 bytes in 1 blocks (ref 0) 0x61e00000f0e0
- * logging contains 1399 bytes in 5 blocks (ref 0) 0x60b00000aff0
- * struct log_target contains 238 bytes in 2 blocks (ref 0) 0x61200000bf20
- * struct log_category contains 70 bytes in 1 blocks (ref 0) 0x60f00000efb0
- * struct log_info contains 1160 bytes in 2 blocks (ref 0) 0x60d00000cfd0
- * struct log_info_cat contains 1120 bytes in 1 blocks (ref 0) 0x61a00001f2e0
- * msgb contains 0 bytes in 1 blocks (ref 0) 0x60800000bf80
- * (That's 13 counting the root ctx)
+ * full talloc report on 'msgb' (total 0 bytes in 1 blocks)
+ * talloc_total_blocks(tall_bsc_ctx) == 17
+ * full talloc report on 'msc_vlr_tests_ctx' (total 6336 bytes in 17 blocks)
+ * struct osmo_gsup_client contains 256 bytes in 1 blocks (ref 0) 0x613000000260
+ * struct gsm_network contains 4647 bytes in 9 blocks (ref 0) 0x6190000000e0
+ * struct mgcp_client contains 688 bytes in 1 blocks (ref 0) 0x6180000000e0
+ * struct sccp_ran_inst contains 152 bytes in 1 blocks (ref 0) 0x611000000460
+ * struct sccp_ran_inst contains 152 bytes in 1 blocks (ref 0) 0x611000000320
+ * struct gsup_client_mux contains 200 bytes in 2 blocks (ref 0) 0x6110000001e0
+ * struct ipaccess_unit contains 64 bytes in 1 blocks (ref 0) 0x60e000023180
+ * struct vlr_instance contains 248 bytes in 1 blocks (ref 0) 0x6130000000a0
+ * no_gsup_server contains 15 bytes in 1 blocks (ref 0) 0x60b000000150
+ * ../../../src/libosmocore/src/rate_ctr.c:234 contains 2352 bytes in 1 blocks (ref 0) 0x61e0000000e0
+ * logging contains 1433 bytes in 5 blocks (ref 0) 0x60b0000000a0
+ * struct log_target contains 240 bytes in 2 blocks (ref 0) 0x6120000000a0
+ * struct log_category contains 72 bytes in 1 blocks (ref 0) 0x60f0000000a0
+ * struct log_info contains 1192 bytes in 2 blocks (ref 0) 0x60d0000000a0
+ * struct log_info_cat contains 1152 bytes in 1 blocks (ref 0) 0x61a0000000e0
+ * msgb contains 0 bytes in 1 blocks (ref 0) 0x608000000100
*/
fprintf(stderr, "talloc_total_blocks(tall_bsc_ctx) == %zu\n",
talloc_total_blocks(msc_vlr_tests_ctx));
- if (talloc_total_blocks(msc_vlr_tests_ctx) != 13)
+ if (talloc_total_blocks(msc_vlr_tests_ctx) != 17)
talloc_report_full(msc_vlr_tests_ctx, stderr);
fprintf(stderr, "\n");
}
@@ -1002,17 +1027,38 @@ struct gsm_network *test_net(void *ctx)
net->gsup_server_port = 0;
OSMO_ASSERT(msc_vlr_alloc(net) == 0);
- OSMO_ASSERT(msc_vlr_start(net) == 0);
OSMO_ASSERT(net->vlr);
- OSMO_ASSERT(net->vlr->gsup_client);
+ OSMO_ASSERT(msc_gsup_client_start(net) == 0);
+ OSMO_ASSERT(net->gcm);
+ OSMO_ASSERT(msc_vlr_start(net) == 0);
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_acc = msc_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;
+ net->vlr->ops.set_ciph_mode = msc_a_vlr_set_cipher_mode;
+
+ /* Allocate fake SCCP Ran Instances */
+ net->a.sri = talloc_zero(net, struct sccp_ran_inst);
+ *net->a.sri = (struct sccp_ran_inst){
+ .ran = &test_ran_infra[OSMO_RAT_GERAN_A],
+ };
+ INIT_LLIST_HEAD(&net->a.sri->ran_peers);
+ INIT_LLIST_HEAD(&net->a.sri->ran_conns);
+
+ net->iu.sri = talloc_zero(net, struct sccp_ran_inst);
+ *net->iu.sri = (struct sccp_ran_inst){
+ .ran = &test_ran_infra[OSMO_RAT_UTRAN_IU],
+ };
+ INIT_LLIST_HEAD(&net->iu.sri->ran_peers);
+ INIT_LLIST_HEAD(&net->iu.sri->ran_conns);
+
+ net->mgw.tdefs = g_mgw_tdefs;
+ mgcp_client_conf_init(&net->mgw.conf);
+ net->mgw.tdefs = g_mgw_tdefs;
+ net->mgw.client = mgcp_client_init(net, &net->mgw.conf);
return net;
}
@@ -1046,8 +1092,11 @@ int main(int argc, char **argv)
net = test_net(msc_vlr_tests_ctx);
osmo_fsm_log_addr(false);
+ osmo_fsm_log_timeouts(cmdline_opts.verbose);
+
+ call_leg_init(net);
- ran_conn_init();
+ OSMO_ASSERT(osmo_fsm_register(&dummy_msc_i_fsm) == 0);
clear_vlr();
diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h
index b35053c6f..9df9cf049 100644
--- a/tests/msc_vlr/msc_vlr_tests.h
+++ b/tests/msc_vlr/msc_vlr_tests.h
@@ -28,6 +28,8 @@
#include <osmocom/msc/gsm_data.h>
#include <osmocom/msc/vlr.h>
+#include <osmocom/msc/msub.h>
+#include <osmocom/msc/msc_a.h>
#include <osmocom/msc/mncc.h>
extern bool _log_lines;
@@ -41,16 +43,15 @@ extern bool _log_lines;
/* 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("\n\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 ran_conn *g_conn;
+extern struct msub *g_msub;
extern struct gsm_network *net;
-extern struct gsm_bts *the_bts;
extern void *msgb_ctx;
extern enum osmo_rat_type rx_from_ran;
@@ -99,7 +100,6 @@ static inline void expect_security_mode_ctrl(const char *ck, const char *ik)
}
extern bool paging_sent;
-extern bool paging_stopped;
extern bool iu_release_expected;
extern bool iu_release_sent;
@@ -151,33 +151,32 @@ 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(const struct ran_conn *conn);
-void conn_conclude_cm_service_req(struct ran_conn *conn,
- enum osmo_rat_type via_ran);
+bool conn_exists(const struct msub *msub);
+void conn_conclude_cm_service_req(struct msub *msub, const char *cm_service_use);
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 bss_sends_bssap_mgmt(const char *hex);
void ms_sends_msg(const char *hex);
+void ms_sends_classmark_update(const struct osmo_gsm48_classmark *classmark);
+void ms_sends_ciphering_mode_complete(const char *inner_nas_msg);
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 bss_sends_clear_complete();
-void rnc_sends_release_complete();
+void ran_sends_clear_complete();
void thwart_rx_non_initial_requests();
#define EXPECT_ACCEPTED(expect_accepted) do { \
- if (g_conn) \
- OSMO_ASSERT(conn_exists(g_conn)); \
- bool accepted = ran_conn_is_accepted(g_conn); \
- fprintf(stderr, "ran_conn_is_accepted() == %s\n", \
+ if (g_msub) \
+ OSMO_ASSERT(conn_exists(g_msub)); \
+ bool accepted = msc_a_is_accepted(msub_msc_a(g_msub)); \
+ fprintf(stderr, "msc_a_is_accepted() == %s\n", \
accepted ? "true" : "false"); \
OSMO_ASSERT(accepted == expect_accepted); \
} while (false)
@@ -190,7 +189,7 @@ void thwart_rx_non_initial_requests();
#define VERBOSE_ASSERT(val, expect_op, fmt) VAL_ASSERT(#val, val, expect_op, fmt)
-#define EXPECT_CONN_COUNT(N) VERBOSE_ASSERT(llist_count(&net->ran_conns), == N, "%d")
+#define EXPECT_CONN_COUNT(N) VERBOSE_ASSERT(llist_count(&msub_list), == N, "%d")
#define gsup_expect_tx(hex) do \
{ \
@@ -245,17 +244,7 @@ extern const struct timeval fake_time_start_time;
break; \
}
-static inline void bss_rnc_sends_release_clear_complete(enum osmo_rat_type via_ran)
-{
- switch (via_ran) {
- case OSMO_RAT_GERAN_A:
- bss_sends_clear_complete();
- return;
- case OSMO_RAT_UTRAN_IU:
- rnc_sends_release_complete();
- return;
- default:
- OSMO_ASSERT(false);
- break;
- }
-}
+#define HLR_TO_VLR "0a0101"
+#define VLR_TO_HLR "0a0101"
+#define EUSE_TO_MSC_USSD "0a0103"
+#define MSC_USSD_TO_EUSE "0a0103"
diff --git a/tests/sms_queue/Makefile.am b/tests/sms_queue/Makefile.am
index 1ffbe1c44..81e017bc2 100644
--- a/tests/sms_queue/Makefile.am
+++ b/tests/sms_queue/Makefile.am
@@ -40,6 +40,7 @@ sms_queue_test_LDADD = \
$(LIBOSMOABIS_LIBS) \
$(LIBOSMOSIGTRAN_LIBS) \
$(LIBOSMORANAP_LIBS) \
+ $(LIBASN1C_LIBS) \
$(LIBOSMOMGCPCLIENT_LIBS) \
$(LIBOSMOGSUPCLIENT_LIBS) \
$(LIBRARY_GSM) \
diff --git a/tests/sms_queue/sms_queue_test.c b/tests/sms_queue/sms_queue_test.c
index 495e078a3..2b7e57544 100644
--- a/tests/sms_queue/sms_queue_test.c
+++ b/tests/sms_queue/sms_queue_test.c
@@ -22,6 +22,7 @@
*/
#include <osmocom/core/application.h>
+#include <osmocom/netif/stream.h>
#include <osmocom/msc/debug.h>
#include <osmocom/msc/vlr.h>
diff --git a/tests/test_neighbor_ident.vty b/tests/test_neighbor_ident.vty
new file mode 100644
index 000000000..c1d0a8f54
--- /dev/null
+++ b/tests/test_neighbor_ident.vty
@@ -0,0 +1,237 @@
+OsmoMSC> enable
+OsmoMSC# list
+...
+ show neighbor
+ show neighbor (a|iu) (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ show neighbor (a|iu)
+ show neighbor (a|iu) lac <0-65535>
+ show neighbor (a|iu) lac-ci <0-65535> <0-65535>
+ show neighbor (a|iu) cgi <0-999> <0-999> <0-65535> <0-65535>
+ show neighbor lac <0-65535>
+ show neighbor lac-ci <0-65535> <0-65535>
+ show neighbor cgi <0-999> <0-999> <0-65535> <0-65535>
+...
+
+OsmoMSC# configure terminal
+OsmoMSC(config)# msc
+
+OsmoMSC(config-msc)# list
+...
+ neighbor (a|iu) lac <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ neighbor (a|iu) lac-ci <0-65535> <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ neighbor (a|iu) cgi <0-999> <0-999> <0-65535> <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ no neighbor (a|iu) (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+...
+
+OsmoMSC(config-msc)# neighbor?
+ neighbor Add Handover target configuration
+
+OsmoMSC(config-msc)# neighbor ?
+ a Neighbor on GERAN-A
+ iu Neighbor on UTRAN-Iu
+
+OsmoMSC(config-msc)# neighbor a ?
+ lac Handover target cell by LAC
+ lac-ci Handover target cell by LAC and CI
+ cgi Handover target cell by Cell-Global Identifier (MCC, MNC, LAC, CI)
+
+OsmoMSC(config-msc)# neighbor a lac ?
+ <0-65535> LAC
+
+OsmoMSC(config-msc)# neighbor a lac 1 ?
+ ran-pc SCCP point code of RAN peer
+ msc-ipa-name GSUP IPA name of target MSC
+
+OsmoMSC(config-msc)# neighbor a lac 1 ran-pc ?
+ RAN_PC_OR_MSC_IPA_NAME Point code or MSC IPA name value
+
+OsmoMSC(config-msc)# neighbor iu lac-ci ?
+ <0-65535> LAC
+
+OsmoMSC(config-msc)# neighbor iu lac-ci 1 ?
+ <0-65535> CI
+
+OsmoMSC(config-msc)# neighbor iu lac-ci 1 2 ?
+ ran-pc SCCP point code of RAN peer
+ msc-ipa-name GSUP IPA name of target MSC
+
+OsmoMSC(config-msc)# neighbor iu lac-ci 1 2 msc-ipa-name ?
+ RAN_PC_OR_MSC_IPA_NAME Point code or MSC IPA name value
+
+OsmoMSC(config-msc)# neighbor a cgi ?
+ <0-999> MCC
+
+OsmoMSC(config-msc)# neighbor a cgi 1 ?
+ <0-999> MNC
+
+OsmoMSC(config-msc)# neighbor a cgi 1 2 ?
+ <0-65535> LAC
+
+OsmoMSC(config-msc)# neighbor a cgi 1 2 3 ?
+ <0-65535> CI
+
+OsmoMSC(config-msc)# neighbor a lac 11 ran-pc 1.2.3
+OsmoMSC(config-msc)# neighbor a lac-ci 11 12 ran-pc 1.2.3
+OsmoMSC(config-msc)# neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# neighbor iu lac 11 ran-pc 2.3.4
+OsmoMSC(config-msc)# neighbor iu lac-ci 11 22 ran-pc 2.3.4
+OsmoMSC(config-msc)# neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# neighbor a lac 65535 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor a lac-ci 65535 65533 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor a cgi 901 70 65535 65531 msc-ipa-name msc-901-70-2
+
+OsmoMSC(config-msc)# neighbor iu lac 65529 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor iu lac-ci 65529 65528 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor iu cgi 901 070 65529 65527 msc-ipa-name msc-901-70-2
+
+
+OsmoMSC(config-msc)# # Add the same entries again, but expect them to exist only once below
+OsmoMSC(config-msc)# neighbor a lac 11 ran-pc 1.2.3
+OsmoMSC(config-msc)# neighbor a lac-ci 11 12 ran-pc 1.2.3
+OsmoMSC(config-msc)# neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# neighbor iu lac 11 ran-pc 2.3.4
+OsmoMSC(config-msc)# neighbor iu lac-ci 11 22 ran-pc 2.3.4
+OsmoMSC(config-msc)# neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# neighbor a lac 65535 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor a lac-ci 65535 65533 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor a cgi 901 70 65535 65531 msc-ipa-name msc-901-70-2
+
+OsmoMSC(config-msc)# neighbor iu lac 65529 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor iu lac-ci 65529 65528 msc-ipa-name msc-901-70-2
+OsmoMSC(config-msc)# neighbor iu cgi 901 070 65529 65527 msc-ipa-name msc-901-70-2
+
+OsmoMSC(config-msc)# do show neighbor
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+ neighbor a lac 65535 msc-ipa-name msc-901-70-2
+ neighbor a lac-ci 65535 65533 msc-ipa-name msc-901-70-2
+ neighbor a cgi 901 70 65535 65531 msc-ipa-name msc-901-70-2
+ neighbor iu lac 65529 msc-ipa-name msc-901-70-2
+ neighbor iu lac-ci 65529 65528 msc-ipa-name msc-901-70-2
+ neighbor iu cgi 901 070 65529 65527 msc-ipa-name msc-901-70-2
+
+OsmoMSC(config-msc)# do show neighbor a
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+ neighbor a lac 65535 msc-ipa-name msc-901-70-2
+ neighbor a lac-ci 65535 65533 msc-ipa-name msc-901-70-2
+ neighbor a cgi 901 70 65535 65531 msc-ipa-name msc-901-70-2
+
+OsmoMSC(config-msc)# do show neighbor iu
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+ neighbor iu lac 65529 msc-ipa-name msc-901-70-2
+ neighbor iu lac-ci 65529 65528 msc-ipa-name msc-901-70-2
+ neighbor iu cgi 901 070 65529 65527 msc-ipa-name msc-901-70-2
+
+OsmoMSC(config-msc)# do show neighbor a ran-pc 1.2.3
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# do show neighbor iu ran-pc 2.3.4
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# # A cell id that has no ci matches any entries that feature the LAC.
+OsmoMSC(config-msc)# # Ambiguous matches are user config error, permitted here but cause error logging during HO
+OsmoMSC(config-msc)# do show neighbor a lac 11
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# # The fuzzy matching goes both ways. Same as above.
+OsmoMSC(config-msc)# do show neighbor a lac-ci 11 12
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# do show neighbor a lac-ci 11 13
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# do show neighbor a cgi 901 70 11 13
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+
+OsmoMSC(config-msc)# do show neighbor iu lac 11
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor iu lac-ci 11 22
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor iu lac-ci 11 23
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor iu cgi 901 70 11 23
+ neighbor iu lac 11 ran-pc 2.3.4
+OsmoMSC(config-msc)# do show neighbor iu cgi 901 070 11 23
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor lac 11
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor lac-ci 11 12
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a lac-ci 11 12 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor lac-ci 11 13
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor cgi 901 70 11 13
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor a cgi 901 70 11 13 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor lac-ci 11 22
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu lac-ci 11 22 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor lac-ci 11 23
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# do show neighbor cgi 901 70 11 23
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+OsmoMSC(config-msc)# do show neighbor cgi 901 070 11 23
+ neighbor a lac 11 ran-pc 1.2.3
+ neighbor iu lac 11 ran-pc 2.3.4
+ neighbor iu cgi 901 070 11 23 ran-pc 2.3.4
+
+OsmoMSC(config-msc)# # Ambiguous neighbor config is permitted
+OsmoMSC(config-msc)# # This config maps LAC 65535 to two distinct MSCs as well as a local RAN cell.
+OsmoMSC(config-msc)# # It is a user config mistake, will cause error logging during handover.
+OsmoMSC(config-msc)# neighbor a lac 65535 ran-pc 6.6.6
+OsmoMSC(config-msc)# neighbor a lac-ci 65535 65533 msc-ipa-name different-msc
+OsmoMSC(config-msc)# do show neighbor a lac 65535
+ neighbor a lac 65535 msc-ipa-name msc-901-70-2
+ neighbor a lac-ci 65535 65533 msc-ipa-name msc-901-70-2
+ neighbor a cgi 901 70 65535 65531 msc-ipa-name msc-901-70-2
+ neighbor a lac 65535 ran-pc 6.6.6
+ neighbor a lac-ci 65535 65533 msc-ipa-name different-msc
diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty
index 8aceb867f..c25802e9f 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -45,6 +45,10 @@ OsmoMSC(config-msc)# list
emergency-call route-to-msisdn MSISDN
sms-over-gsup
no sms-over-gsup
+ neighbor (a|iu) lac <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ neighbor (a|iu) lac-ci <0-65535> <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ neighbor (a|iu) cgi <0-999> <0-999> <0-65535> <0-65535> (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
+ no neighbor (a|iu) (ran-pc|msc-ipa-name) RAN_PC_OR_MSC_IPA_NAME
mgw local-ip A.B.C.D
mgw local-port <0-65535>
mgw remote-ip A.B.C.D