Implement IuCS (large refactoring and addition)
osmo-nitb becomes osmo-msc add DIUCS debug log constant add iucs.[hc] add msc vty, remove nitb vty add libiudummy, to avoid linking Iu deps in tests Use new msc_tx_dtap() instead of gsm0808_submit_dtap() libmgcp: add mgcpgw client API bridge calls via mgcpgw Enable MSC specific CTRL commands, bsc_base_ctrl_cmds_install() still needs to be split up. Change-Id: I5b5b6a9678b458affa86800afb1ec726e66eed88
This commit is contained in:
parent
4283675311
commit
84da6b1edb
|
@ -58,6 +58,7 @@ src/gprs/osmo-gbproxy
|
|||
src/gprs/osmo-gtphub
|
||||
src/osmo-bsc_nat/osmo-bsc_nat
|
||||
src/libcommon/gsup_test_client
|
||||
src/osmo-msc/osmo-msc
|
||||
|
||||
#tests
|
||||
tests/testsuite.dir
|
||||
|
|
|
@ -62,7 +62,7 @@ fi
|
|||
AM_CONDITIONAL(BUILD_BSC, test "x$osmo_ac_build_bsc" = "xyes")
|
||||
AC_SUBST(osmo_ac_build_bsc)
|
||||
|
||||
# Enable/disable smpp support in the nitb?
|
||||
# Enable/disable smpp support in the msc?
|
||||
AC_ARG_ENABLE([smpp], [AS_HELP_STRING([--enable-smpp], [Build the SMPP interface])],
|
||||
[osmo_ac_build_smpp="$enableval"],[osmo_ac_build_smpp="no"])
|
||||
if test "$osmo_ac_build_smpp" = "yes" ; then
|
||||
|
@ -231,7 +231,7 @@ AC_OUTPUT(
|
|||
src/libfilter/Makefile
|
||||
src/libiu/Makefile
|
||||
src/libcommon-cs/Makefile
|
||||
src/osmo-nitb/Makefile
|
||||
src/osmo-msc/Makefile
|
||||
src/osmo-bsc/Makefile
|
||||
src/osmo-bsc_nat/Makefile
|
||||
src/osmo-bsc_mgcp/Makefile
|
||||
|
|
|
@ -7,13 +7,13 @@ line vty
|
|||
no login
|
||||
!
|
||||
mgcp
|
||||
! local ip 213.167.134.14
|
||||
bts ip 172.16.252.43
|
||||
bind ip 127.0.0.1
|
||||
!local ip 192.168.0.132
|
||||
!bts ip 192.168.0.124
|
||||
!bind ip 192.168.0.132
|
||||
bind port 2427
|
||||
rtp base 4000
|
||||
rtp force-ptime 20
|
||||
sdp audio payload number 98
|
||||
sdp audio payload name AMR/8000
|
||||
number endpoints 31
|
||||
loop 1
|
||||
no rtcp-omit
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
!
|
||||
! OsmoMSC configuration saved from vty
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OsmoMSC
|
||||
long name OsmoMSC
|
||||
auth policy closed
|
||||
location updating reject cause 13
|
||||
encryption a5 0
|
||||
rrlp mode none
|
||||
mm info 1
|
||||
msc
|
||||
mgcpgw remote-ip 192.168.0.132
|
||||
assign-tmsi
|
|
@ -1,164 +0,0 @@
|
|||
!
|
||||
! OpenBSC (0.9.0.845-57c4) configuration saved from vty
|
||||
!!
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver misdn
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
auth policy closed
|
||||
location updating reject cause 13
|
||||
encryption a5 0
|
||||
neci 1
|
||||
rrlp mode none
|
||||
mm info 0
|
||||
handover 0
|
||||
handover window rxlev averaging 10
|
||||
handover window rxqual averaging 1
|
||||
handover window rxlev neighbor averaging 10
|
||||
handover power budget interval 6
|
||||
handover power budget hysteresis 3
|
||||
handover maximum distance 9999
|
||||
timer t3101 10
|
||||
timer t3103 0
|
||||
timer t3105 0
|
||||
timer t3107 0
|
||||
timer t3109 4
|
||||
timer t3111 0
|
||||
timer t3113 60
|
||||
timer t3115 0
|
||||
timer t3117 0
|
||||
timer t3119 0
|
||||
timer t3141 0
|
||||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 0
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
ms max power 15
|
||||
cell reselection hysteresis 4
|
||||
rxlev access min 0
|
||||
channel allocator descending
|
||||
rach tx integer 9
|
||||
rach max transmission 7
|
||||
oml e1 line 0 timeslot 1 sub-slot full
|
||||
oml e1 tei 25
|
||||
gprs mode none
|
||||
trx 0
|
||||
rf_locked 0
|
||||
arfcn 121
|
||||
nominal power 24
|
||||
max_power_red 12
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config CCCH
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 1 sub-slot full
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 2 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 2 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 2 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 3
|
||||
trx 1
|
||||
rf_locked 0
|
||||
arfcn 119
|
||||
nominal power 24
|
||||
max_power_red 12
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 2
|
||||
timeslot 0
|
||||
phys_chan_config SDCCH8
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 4 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 4 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 4 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 5 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 5 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 5 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 1
|
||||
hopping sequence-number 0
|
||||
hopping maio 0
|
||||
hopping arfcn add 117
|
||||
hopping arfcn add 119
|
||||
e1 line 0 timeslot 5 sub-slot 3
|
|
@ -1,84 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver misdn
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
timer t3101 10
|
||||
timer t3113 60
|
||||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
oml e1 line 0 timeslot 1 sub-slot full
|
||||
oml e1 tei 25
|
||||
trx 0
|
||||
arfcn 121
|
||||
max_power_red 0
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
e1 line 0 timeslot 1 sub-slot full
|
||||
timeslot 1
|
||||
phys_chan_config SDCCH8
|
||||
e1 line 0 timeslot 2 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 3
|
||||
trx 1
|
||||
arfcn 123
|
||||
max_power_red 0
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 2
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 3
|
|
@ -1,148 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
timer t3101 10
|
||||
timer t3113 60
|
||||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
oml e1 line 0 timeslot 1 sub-slot full
|
||||
oml e1 tei 25
|
||||
trx 0
|
||||
arfcn 121
|
||||
max_power_red 0
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
e1 line 0 timeslot 1 sub-slot full
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 3
|
||||
trx 1
|
||||
arfcn 123
|
||||
max_power_red 0
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 2
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 4 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 5 sub-slot 3
|
||||
bts 1
|
||||
type bs11
|
||||
band GSM900
|
||||
location_area_code 2
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
oml e1 line 1 timeslot 6 sub-slot full
|
||||
oml e1 tei 25
|
||||
trx 0
|
||||
arfcn 122
|
||||
max_power_red 0
|
||||
rsl e1 line 1 timeslot 6 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
e1 line 1 timeslot 7 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config SDCCH8
|
||||
e1 line 1 timeslot 7 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 7 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 7 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 8 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 8 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 8 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 8 sub-slot 3
|
||||
trx 1
|
||||
arfcn 124
|
||||
max_power_red 0
|
||||
rsl e1 line 1 timeslot 6 sub-slot full
|
||||
rsl e1 tei 2
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 9 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 9 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 9 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 9 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 10 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 10 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 10 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 1 timeslot 10 sub-slot 3
|
|
@ -1,56 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver misdn
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
timer t3101 10
|
||||
timer t3113 60
|
||||
bts 0
|
||||
type bs11
|
||||
band GSM900
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
oml e1 line 0 timeslot 1 sub-slot full
|
||||
oml e1 tei 25
|
||||
trx 0
|
||||
arfcn 121
|
||||
max_power_red 0
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
e1 line 0 timeslot 1 sub-slot full
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 2 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 3 sub-slot 3
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver ipa
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
auth policy closed
|
||||
location updating reject cause 13
|
||||
encryption a5 0
|
||||
neci 1
|
||||
rrlp mode none
|
||||
mm info 0
|
||||
handover 0
|
||||
handover window rxlev averaging 10
|
||||
handover window rxqual averaging 1
|
||||
handover window rxlev neighbor averaging 10
|
||||
handover power budget interval 6
|
||||
handover power budget hysteresis 3
|
||||
handover maximum distance 9999
|
||||
timer t3101 10
|
||||
timer t3103 0
|
||||
timer t3105 0
|
||||
timer t3107 0
|
||||
timer t3109 4
|
||||
timer t3111 0
|
||||
timer t3113 60
|
||||
timer t3115 0
|
||||
timer t3117 0
|
||||
timer t3119 0
|
||||
timer t3141 0
|
||||
bts 0
|
||||
type nanobts
|
||||
band DCS1800
|
||||
cell_identity 0
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
ms max power 15
|
||||
cell reselection hysteresis 4
|
||||
rxlev access min 0
|
||||
channel allocator ascending
|
||||
rach tx integer 9
|
||||
rach max transmission 7
|
||||
ip.access unit_id 1800 0
|
||||
oml ip.access stream_id 255 line 0
|
||||
gprs mode none
|
||||
trx 0
|
||||
rf_locked 0
|
||||
arfcn 871
|
||||
nominal power 23
|
||||
max_power_red 0
|
||||
rsl e1 tei 0
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
timeslot 1
|
||||
phys_chan_config SDCCH8
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
trx 1
|
||||
rf_locked 0
|
||||
arfcn 873
|
||||
nominal power 23
|
||||
max_power_red 0
|
||||
rsl e1 tei 0
|
||||
timeslot 0
|
||||
phys_chan_config SDCCH8
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
|
@ -1,77 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver ipa
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
auth policy closed
|
||||
location updating reject cause 13
|
||||
encryption a5 0
|
||||
neci 1
|
||||
rrlp mode none
|
||||
mm info 1
|
||||
handover 0
|
||||
handover window rxlev averaging 10
|
||||
handover window rxqual averaging 1
|
||||
handover window rxlev neighbor averaging 10
|
||||
handover power budget interval 6
|
||||
handover power budget hysteresis 3
|
||||
handover maximum distance 9999
|
||||
timer t3101 10
|
||||
timer t3103 0
|
||||
timer t3105 0
|
||||
timer t3107 0
|
||||
timer t3109 4
|
||||
timer t3111 0
|
||||
timer t3113 60
|
||||
timer t3115 0
|
||||
timer t3117 0
|
||||
timer t3119 0
|
||||
timer t3141 0
|
||||
bts 0
|
||||
type nanobts
|
||||
band DCS1800
|
||||
cell_identity 0
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
ms max power 15
|
||||
cell reselection hysteresis 4
|
||||
rxlev access min 0
|
||||
channel allocator ascending
|
||||
rach tx integer 9
|
||||
rach max transmission 7
|
||||
ip.access unit_id 1801 0
|
||||
oml ip.access stream_id 255 line 0
|
||||
gprs mode none
|
||||
trx 0
|
||||
rf_locked 0
|
||||
arfcn 514
|
||||
nominal power 23
|
||||
max_power_red 20
|
||||
rsl e1 tei 0
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
timeslot 1
|
||||
phys_chan_config SDCCH8
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
|
@ -1,117 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver misdn
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
timer t3101 10
|
||||
timer t3113 60
|
||||
bts 0
|
||||
type nokia_site
|
||||
band GSM1800
|
||||
cell_identity 1
|
||||
location_area_code 1
|
||||
base_station_id_code 63
|
||||
training_sequence_code 7
|
||||
|
||||
oml e1 line 0 timeslot 1 sub-slot full
|
||||
oml e1 tei 1
|
||||
|
||||
trx 0
|
||||
arfcn 866
|
||||
max_power_red 24
|
||||
rsl e1 line 0 timeslot 2 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
e1 line 0 timeslot 6 sub-slot full
|
||||
timeslot 1
|
||||
phys_chan_config SDCCH8
|
||||
e1 line 0 timeslot 6 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 6 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 6 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 7 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 7 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 7 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 7 sub-slot 3
|
||||
|
||||
trx 1
|
||||
arfcn 870
|
||||
max_power_red 24
|
||||
rsl e1 line 0 timeslot 3 sub-slot full
|
||||
rsl e1 tei 2
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 8 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 8 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 8 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 8 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 9 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 9 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 9 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 9 sub-slot 3
|
||||
|
||||
trx 2
|
||||
arfcn 874
|
||||
max_power_red 24
|
||||
rsl e1 line 0 timeslot 4 sub-slot full
|
||||
rsl e1 tei 3
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 10 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 10 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 10 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 10 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 11 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 11 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 11 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
e1 line 0 timeslot 11 sub-slot 3
|
|
@ -1,219 +0,0 @@
|
|||
!
|
||||
! OpenBSC (0.9.11.308-62d46) configuration saved from vty
|
||||
!!
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
network
|
||||
network country code 262
|
||||
mobile network code 42
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
auth policy closed
|
||||
location updating reject cause 13
|
||||
encryption a5 0
|
||||
neci 0
|
||||
paging any use tch 0
|
||||
rrlp mode none
|
||||
mm info 0
|
||||
handover 0
|
||||
handover window rxlev averaging 10
|
||||
handover window rxqual averaging 1
|
||||
handover window rxlev neighbor averaging 10
|
||||
handover power budget interval 6
|
||||
handover power budget hysteresis 3
|
||||
handover maximum distance 9999
|
||||
timer t3101 10
|
||||
timer t3103 0
|
||||
timer t3105 0
|
||||
timer t3107 0
|
||||
timer t3109 4
|
||||
timer t3111 0
|
||||
timer t3113 60
|
||||
timer t3115 0
|
||||
timer t3117 0
|
||||
timer t3119 0
|
||||
timer t3122 0
|
||||
timer t3141 0
|
||||
bts 0
|
||||
type rbs2000
|
||||
band GSM900
|
||||
cell_identity 0
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
ms max power 15
|
||||
cell reselection hysteresis 4
|
||||
rxlev access min 0
|
||||
channel allocator descending
|
||||
rach tx integer 9
|
||||
rach max transmission 7
|
||||
oml e1 line 0 timeslot 1 sub-slot full
|
||||
oml e1 tei 62
|
||||
neighbor-list mode automatic
|
||||
gprs mode none
|
||||
is-connection-list add 4 512 12
|
||||
is-connection-list add 16 524 12
|
||||
is-connection-list add 28 536 12
|
||||
is-connection-list add 40 548 12
|
||||
trx 0
|
||||
rf_locked 0
|
||||
arfcn 55
|
||||
nominal power 24
|
||||
max_power_red 12
|
||||
rsl e1 line 0 timeslot 1 sub-slot full
|
||||
rsl e1 tei 0
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 1 sub-slot full
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 2 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 2 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 2 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 3 sub-slot 3
|
||||
trx 1
|
||||
rf_locked 0
|
||||
arfcn 57
|
||||
nominal power 24
|
||||
max_power_red 12
|
||||
rsl e1 line 0 timeslot 4 sub-slot full
|
||||
rsl e1 tei 1
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 5 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 5 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 5 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 5 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 6 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 6 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 6 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 6 sub-slot 3
|
||||
trx 2
|
||||
rf_locked 0
|
||||
arfcn 59
|
||||
nominal power 24
|
||||
max_power_red 12
|
||||
rsl e1 line 0 timeslot 7 sub-slot full
|
||||
rsl e1 tei 2
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 8 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 8 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 8 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 8 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 9 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 9 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 9 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 9 sub-slot 3
|
||||
trx 3
|
||||
rf_locked 0
|
||||
arfcn 61
|
||||
nominal power 24
|
||||
max_power_red 12
|
||||
rsl e1 line 0 timeslot 10 sub-slot full
|
||||
rsl e1 tei 3
|
||||
timeslot 0
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 11 sub-slot 0
|
||||
timeslot 1
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 11 sub-slot 1
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 11 sub-slot 2
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 11 sub-slot 3
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 12 sub-slot 0
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 12 sub-slot 1
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 12 sub-slot 2
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
||||
hopping enabled 0
|
||||
e1 line 0 timeslot 12 sub-slot 3
|
||||
|
||||
e1_input
|
||||
e1_line 0 driver dahdi
|
|
@ -1,77 +0,0 @@
|
|||
!
|
||||
! OpenBSC configuration saved from vty
|
||||
! !
|
||||
password foo
|
||||
!
|
||||
line vty
|
||||
no login
|
||||
!
|
||||
e1_input
|
||||
e1_line 0 driver ipa
|
||||
network
|
||||
network country code 1
|
||||
mobile network code 1
|
||||
short name OpenBSC
|
||||
long name OpenBSC
|
||||
auth policy closed
|
||||
location updating reject cause 13
|
||||
encryption a5 0
|
||||
neci 1
|
||||
rrlp mode none
|
||||
mm info 1
|
||||
handover 0
|
||||
handover window rxlev averaging 10
|
||||
handover window rxqual averaging 1
|
||||
handover window rxlev neighbor averaging 10
|
||||
handover power budget interval 6
|
||||
handover power budget hysteresis 3
|
||||
handover maximum distance 9999
|
||||
timer t3101 10
|
||||
timer t3103 0
|
||||
timer t3105 0
|
||||
timer t3107 0
|
||||
timer t3109 4
|
||||
timer t3111 0
|
||||
timer t3113 60
|
||||
timer t3115 0
|
||||
timer t3117 0
|
||||
timer t3119 0
|
||||
timer t3141 0
|
||||
bts 0
|
||||
type sysmobts
|
||||
band DCS1800
|
||||
cell_identity 0
|
||||
location_area_code 1
|
||||
training_sequence_code 7
|
||||
base_station_id_code 63
|
||||
ms max power 15
|
||||
cell reselection hysteresis 4
|
||||
rxlev access min 0
|
||||
channel allocator ascending
|
||||
rach tx integer 9
|
||||
rach max transmission 7
|
||||
ip.access unit_id 1801 0
|
||||
oml ip.access stream_id 255 line 0
|
||||
gprs mode none
|
||||
trx 0
|
||||
rf_locked 0
|
||||
arfcn 514
|
||||
nominal power 23
|
||||
max_power_red 20
|
||||
rsl e1 tei 0
|
||||
timeslot 0
|
||||
phys_chan_config CCCH+SDCCH4
|
||||
timeslot 1
|
||||
phys_chan_config SDCCH8
|
||||
timeslot 2
|
||||
phys_chan_config TCH/F
|
||||
timeslot 3
|
||||
phys_chan_config TCH/F
|
||||
timeslot 4
|
||||
phys_chan_config TCH/F
|
||||
timeslot 5
|
||||
phys_chan_config TCH/F
|
||||
timeslot 6
|
||||
phys_chan_config TCH/F
|
||||
timeslot 7
|
||||
phys_chan_config TCH/F
|
|
@ -14,6 +14,7 @@ noinst_HEADERS = \
|
|||
bss.h \
|
||||
bts_ipaccess_nanobts_omlattr.h \
|
||||
chan_alloc.h \
|
||||
common.h \
|
||||
common_bsc.h \
|
||||
common_cs.h \
|
||||
crc24.h \
|
||||
|
@ -46,11 +47,14 @@ noinst_HEADERS = \
|
|||
handover_decision.h \
|
||||
ipaccess.h \
|
||||
iu.h \
|
||||
iucs.h \
|
||||
iucs_ranap.h \
|
||||
meas_feed.h \
|
||||
meas_rep.h \
|
||||
mgcp.h \
|
||||
mgcp_internal.h \
|
||||
mgcp_transcode.h \
|
||||
mgcpgw_client.h \
|
||||
misdn.h \
|
||||
mncc.h \
|
||||
mncc_int.h \
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
enum nsap_addr_enc {
|
||||
NSAP_ADDR_ENC_X213,
|
||||
NSAP_ADDR_ENC_V4RAW,
|
||||
};
|
|
@ -39,6 +39,7 @@ enum {
|
|||
DV42BIS,
|
||||
DPCU,
|
||||
DVLR,
|
||||
DIUCS,
|
||||
Debug_LastEntry,
|
||||
};
|
||||
|
||||
|
|
|
@ -30,6 +30,6 @@ int gprs_gmm_rx_resume(struct gprs_ra_id *raid, uint32_t tlli,
|
|||
|
||||
time_t gprs_max_time_to_idle(void);
|
||||
|
||||
int iu_rab_act_ps(uint8_t rab_id, struct sgsn_pdp_ctx *pdp, bool use_x213_nsap);
|
||||
int iu_rab_act_ps(uint8_t rab_id, struct sgsn_pdp_ctx *pdp);
|
||||
|
||||
#endif /* _GPRS_GMM_H */
|
||||
|
|
|
@ -13,8 +13,10 @@
|
|||
|
||||
#include <osmocom/crypt/auth.h>
|
||||
|
||||
#include <openbsc/common.h>
|
||||
#include <openbsc/rest_octets.h>
|
||||
#include <openbsc/common_cs.h>
|
||||
#include <openbsc/mgcpgw_client.h>
|
||||
|
||||
/** annotations for msgb ownership */
|
||||
#define __uses
|
||||
|
@ -109,6 +111,10 @@ enum ran_type {
|
|||
RAN_UTRAN_IU, /* 3G / Iu-interface (IuCS or IuPS) */
|
||||
};
|
||||
|
||||
extern const struct value_string ran_type_names[];
|
||||
static inline const char *ran_type_name(enum ran_type val)
|
||||
{ return get_value_string(ran_type_names, val); }
|
||||
|
||||
struct gsm_classmark {
|
||||
bool classmark1_set;
|
||||
struct gsm48_classmark1 classmark1;
|
||||
|
@ -190,7 +196,10 @@ struct gsm_subscriber_connection {
|
|||
/* which Iu-CS connection, if any. */
|
||||
struct {
|
||||
struct ue_conn_ctx *ue_ctx;
|
||||
int integrity_protection;
|
||||
unsigned int mgcp_rtp_endpoint;
|
||||
uint16_t mgcp_rtp_port_ue;
|
||||
uint16_t mgcp_rtp_port_cn;
|
||||
uint8_t rab_id;
|
||||
} iu;
|
||||
};
|
||||
|
||||
|
@ -371,6 +380,11 @@ struct gsm_network {
|
|||
struct mncc_sock_state *mncc_state;
|
||||
mncc_recv_cb_t mncc_recv;
|
||||
struct llist_head upqueue;
|
||||
/*
|
||||
* TODO: Move the trans_list into the subscriber connection and
|
||||
* create a pending list for MT transactions. These exist before
|
||||
* we have a subscriber connection.
|
||||
*/
|
||||
struct llist_head trans_list;
|
||||
struct bsc_api *bsc_api;
|
||||
|
||||
|
@ -441,6 +455,15 @@ struct gsm_network {
|
|||
|
||||
/* Periodic location update default value */
|
||||
uint8_t t3212;
|
||||
|
||||
struct {
|
||||
struct mgcpgw_client_conf conf;
|
||||
struct mgcpgw_client *client;
|
||||
} mgcpgw;
|
||||
|
||||
struct {
|
||||
enum nsap_addr_enc rab_assign_addr_enc;
|
||||
} iu;
|
||||
};
|
||||
|
||||
struct osmo_esme;
|
||||
|
|
|
@ -41,6 +41,9 @@ enum gsm_subscriber_update_reason {
|
|||
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;
|
||||
|
@ -52,15 +55,14 @@ int subscr_update(struct vlr_subscr *vsub, int reason);
|
|||
* Paging handling with authentication
|
||||
*/
|
||||
struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub,
|
||||
int channel_type,
|
||||
gsm_cbfn *cbfn, void *param);
|
||||
gsm_cbfn *cbfn, void *param,
|
||||
const char *label);
|
||||
|
||||
void subscr_remove_request(struct subscr_request *req);
|
||||
int subscr_rx_paging_response(struct msgb *msg,
|
||||
struct gsm_subscriber_connection *conn);
|
||||
|
||||
int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
|
||||
struct msgb *msg, void *data, void *param);
|
||||
|
||||
int msc_fake_paging_request(struct vlr_subscr *vsub);
|
||||
void msc_fake_paging_request_stop(struct vlr_subscr *vsub);
|
||||
|
||||
#endif /* _GSM_SUBSCR_H */
|
||||
|
|
|
@ -1,13 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <osmocom/core/linuxlist.h>
|
||||
#include <osmocom/gsm/gsm48.h>
|
||||
|
||||
#include <openbsc/common.h>
|
||||
|
||||
struct sgsn_pdp_ctx;
|
||||
struct msgb;
|
||||
struct gprs_ra_id;
|
||||
struct osmo_sccp_link;
|
||||
struct gsm_auth_tuple;
|
||||
|
||||
struct RANAP_RAB_SetupOrModifiedItemIEs_s;
|
||||
struct RANAP_GlobalRNC_ID;
|
||||
struct RANAP_Cause;
|
||||
|
||||
/* Debugging switches from asn1c and osmo-iuh */
|
||||
extern int asn_debug;
|
||||
extern int asn1_xer_print;
|
||||
|
||||
struct ue_conn_ctx {
|
||||
struct llist_head list;
|
||||
|
@ -15,6 +27,7 @@ struct ue_conn_ctx {
|
|||
uint32_t conn_id;
|
||||
int integrity_active;
|
||||
struct gprs_ra_id ra_id;
|
||||
enum nsap_addr_enc rab_assign_addr_enc;
|
||||
};
|
||||
|
||||
enum iu_event_type {
|
||||
|
@ -54,5 +67,8 @@ int iu_rab_act(struct ue_conn_ctx *ue_ctx, struct msgb *msg);
|
|||
int iu_rab_deact(struct ue_conn_ctx *ue_ctx, uint8_t rab_id);
|
||||
int iu_tx_sec_mode_cmd(struct ue_conn_ctx *uectx, struct gsm_auth_tuple *tp,
|
||||
int send_ck, int new_key);
|
||||
int iu_tx_common_id(struct ue_conn_ctx *ue_ctx, const char *imsi);
|
||||
int iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause);
|
||||
|
||||
void iu_vty_init(int *asn_debug_p);
|
||||
void iu_vty_init(int iu_parent_node, enum nsap_addr_enc *rab_assign_addr_enc);
|
||||
int iu_vty_config_write(struct vty *vty, const char *indent);
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
int gsm0408_rcvmsg_iucs(struct gsm_network *network, struct msgb *msg,
|
||||
uint16_t *lac);
|
||||
|
||||
struct gsm_subscriber_connection *subscr_conn_lookup_iu(struct gsm_network *network,
|
||||
struct ue_conn_ctx *ue);
|
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
struct gsm_network;
|
||||
struct ue_conn_ctx;
|
||||
|
||||
int iucs_rx_ranap_event(struct gsm_network *network,
|
||||
struct ue_conn_ctx *ue_ctx, int type, void *data);
|
|
@ -170,6 +170,21 @@ enum mgcp_role {
|
|||
MGCP_BSC_NAT,
|
||||
};
|
||||
|
||||
enum mgcp_connection_mode {
|
||||
MGCP_CONN_NONE = 0,
|
||||
MGCP_CONN_RECV_ONLY = 1,
|
||||
MGCP_CONN_SEND_ONLY = 2,
|
||||
MGCP_CONN_RECV_SEND = MGCP_CONN_RECV_ONLY | MGCP_CONN_SEND_ONLY,
|
||||
MGCP_CONN_LOOPBACK = 4 | MGCP_CONN_RECV_SEND,
|
||||
};
|
||||
|
||||
extern const struct value_string mgcp_connection_mode_strs[];
|
||||
|
||||
static inline const char *mgcp_cmode_name(enum mgcp_connection_mode mode)
|
||||
{
|
||||
return get_value_string(mgcp_connection_mode_strs, mode);
|
||||
}
|
||||
|
||||
struct mgcp_config {
|
||||
int source_port;
|
||||
char *local_ip;
|
||||
|
|
|
@ -28,14 +28,6 @@
|
|||
|
||||
#define CI_UNUSED 0
|
||||
|
||||
enum mgcp_connection_mode {
|
||||
MGCP_CONN_NONE = 0,
|
||||
MGCP_CONN_RECV_ONLY = 1,
|
||||
MGCP_CONN_SEND_ONLY = 2,
|
||||
MGCP_CONN_RECV_SEND = MGCP_CONN_RECV_ONLY | MGCP_CONN_SEND_ONLY,
|
||||
MGCP_CONN_LOOPBACK = 4 | MGCP_CONN_RECV_SEND,
|
||||
};
|
||||
|
||||
enum mgcp_trunk_type {
|
||||
MGCP_TRUNK_VIRTUAL,
|
||||
MGCP_TRUNK_E1,
|
||||
|
@ -340,3 +332,5 @@ static inline const char *mgcp_bts_src_addr(struct mgcp_endpoint *endp)
|
|||
return endp->cfg->bts_ports.bind_addr;
|
||||
return endp->cfg->source_addr;
|
||||
}
|
||||
|
||||
int mgcp_msg_terminate_nul(struct msgb *msg);
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <osmocom/core/linuxlist.h>
|
||||
|
||||
enum mgcp_connection_mode;
|
||||
|
||||
struct msgb;
|
||||
struct mgcpgw_client;
|
||||
struct vty;
|
||||
|
||||
#define MGCPGW_CLIENT_LOCAL_ADDR_DEFAULT "0.0.0.0"
|
||||
#define MGCPGW_CLIENT_LOCAL_PORT_DEFAULT 0
|
||||
#define MGCPGW_CLIENT_REMOTE_ADDR_DEFAULT "127.0.0.1"
|
||||
#define MGCPGW_CLIENT_REMOTE_PORT_DEFAULT 2427
|
||||
|
||||
#define MSGB_CB_MGCP_TRANS_ID 0
|
||||
|
||||
typedef unsigned int mgcp_trans_id_t;
|
||||
|
||||
struct mgcpgw_client_conf {
|
||||
const char *local_addr;
|
||||
int local_port;
|
||||
const char *remote_addr;
|
||||
int remote_port;
|
||||
};
|
||||
|
||||
struct mgcp_response_head {
|
||||
int response_code;
|
||||
mgcp_trans_id_t trans_id;
|
||||
const char *comment;
|
||||
};
|
||||
|
||||
struct mgcp_response {
|
||||
char *body;
|
||||
struct mgcp_response_head head;
|
||||
uint16_t audio_port;
|
||||
};
|
||||
|
||||
/* Invoked when an MGCP response is received or sending failed. When the
|
||||
* response is passed as NULL, this indicates failure during transmission. */
|
||||
typedef void (* mgcp_response_cb_t )(struct mgcp_response *response, void *priv);
|
||||
|
||||
struct mgcp_response_pending {
|
||||
struct llist_head entry;
|
||||
|
||||
mgcp_trans_id_t trans_id;
|
||||
mgcp_response_cb_t response_cb;
|
||||
void *priv;
|
||||
};
|
||||
|
||||
|
||||
void mgcpgw_client_conf_init(struct mgcpgw_client_conf *conf);
|
||||
|
||||
struct mgcpgw_client *mgcpgw_client_init(void *ctx,
|
||||
struct mgcpgw_client_conf *conf);
|
||||
int mgcpgw_client_connect(struct mgcpgw_client *mgcp);
|
||||
|
||||
const char *mgcpgw_client_remote_addr_str(struct mgcpgw_client *mgcp);
|
||||
uint16_t mgcpgw_client_remote_port(struct mgcpgw_client *mgcp);
|
||||
uint32_t mgcpgw_client_remote_addr_n(struct mgcpgw_client *mgcp);
|
||||
|
||||
unsigned int mgcpgw_client_next_endpoint(struct mgcpgw_client *client);
|
||||
|
||||
int mgcp_response_parse_params(struct mgcp_response *r);
|
||||
|
||||
int mgcpgw_client_tx(struct mgcpgw_client *mgcp, struct msgb *msg,
|
||||
mgcp_response_cb_t response_cb, void *priv);
|
||||
|
||||
struct msgb *mgcp_msg_crcx(struct mgcpgw_client *mgcp,
|
||||
uint16_t rtp_endpoint, unsigned int call_id,
|
||||
enum mgcp_connection_mode mode);
|
||||
|
||||
struct msgb *mgcp_msg_mdcx(struct mgcpgw_client *mgcp,
|
||||
uint16_t rtp_endpoint, const char *rtp_conn_addr,
|
||||
uint16_t rtp_port, enum mgcp_connection_mode mode);
|
||||
|
||||
void mgcpgw_client_vty_init(int node, struct mgcpgw_client_conf *conf);
|
||||
int mgcpgw_client_config_write(struct vty *vty, const char *indent);
|
||||
|
||||
struct mgcp_response_pending * mgcpgw_client_pending_add(
|
||||
struct mgcpgw_client *mgcp,
|
||||
mgcp_trans_id_t trans_id,
|
||||
mgcp_response_cb_t response_cb,
|
||||
void *priv);
|
||||
int mgcpgw_client_rx(struct mgcpgw_client *mgcp, struct msgb *msg);
|
|
@ -22,7 +22,7 @@
|
|||
* 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.
|
||||
* and not link against osmo-iuh, see tests/libiudummy/.
|
||||
*/
|
||||
|
||||
/* Each main linkage must implement this function (see comment above). */
|
||||
|
@ -35,6 +35,13 @@ extern int iu_tx(struct msgb *msg, uint8_t sapi);
|
|||
* " */
|
||||
extern int a_tx(struct msgb *msg);
|
||||
|
||||
/* So far this is a dummy implemented in libmsc/a_iface.c. When A-interface
|
||||
* gets implemented, it should be in a separate lib (like libiu), this function
|
||||
* should move there, and the following comment should remain here: "
|
||||
* Each main linkage must implement this function (see comment above).
|
||||
* " */
|
||||
extern int a_page(const char *imsi, uint32_t tmsi, uint16_t lac);
|
||||
|
||||
int msc_tx_dtap(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg);
|
||||
|
||||
|
@ -45,3 +52,7 @@ int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
|
|||
/* TODO: specific to A interface, move this away */
|
||||
int msc_gsm0808_tx_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,
|
||||
const uint8_t *key, int len, int include_imeisv);
|
||||
|
||||
int msc_tx_common_id(struct gsm_subscriber_connection *conn);
|
||||
int msc_call_assignment(struct gsm_trans *trans);
|
||||
int msc_call_bridge(struct gsm_trans *trans1, struct gsm_trans *trans2);
|
||||
|
|
|
@ -56,7 +56,6 @@ enum msc_compl_l3_rc {
|
|||
MSC_CONN_REJECT = 1,
|
||||
};
|
||||
|
||||
|
||||
struct bsc_api *msc_bsc_api();
|
||||
|
||||
int msc_create_conn_fsm(struct gsm_subscriber_connection *conn, const char *id);
|
||||
|
@ -64,6 +63,14 @@ int msc_create_conn_fsm(struct gsm_subscriber_connection *conn, const char *id);
|
|||
int msc_vlr_alloc(struct gsm_network *net);
|
||||
int msc_vlr_start(struct gsm_network *net);
|
||||
|
||||
int msc_compl_l3(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, uint16_t chosen_channel);
|
||||
void msc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id,
|
||||
struct msgb *msg);
|
||||
void msc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, uint8_t alg_id);
|
||||
void msc_rx_sec_mode_compl(struct gsm_subscriber_connection *conn);
|
||||
|
||||
void msc_subscr_conn_init(void);
|
||||
bool msc_subscr_conn_is_accepted(struct gsm_subscriber_connection *conn);
|
||||
void msc_subscr_conn_communicating(struct gsm_subscriber_connection *conn);
|
||||
|
@ -80,4 +87,6 @@ _msc_subscr_conn_get(struct gsm_subscriber_connection *conn,
|
|||
void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
|
||||
const char *file, int line);
|
||||
|
||||
void msc_stop_paging(struct vlr_subscr *vsub);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <osmocom/gprs/gprs_ns.h>
|
||||
#include <openbsc/gprs_sgsn.h>
|
||||
#include <openbsc/oap_client.h>
|
||||
#include <openbsc/common.h>
|
||||
|
||||
#include <ares.h>
|
||||
|
||||
|
@ -109,6 +110,10 @@ struct sgsn_config {
|
|||
int p1;
|
||||
int p2;
|
||||
} dcomp_v42bis;
|
||||
|
||||
struct {
|
||||
enum nsap_addr_enc rab_assign_addr_enc;
|
||||
} iu;
|
||||
};
|
||||
|
||||
struct sgsn_instance {
|
||||
|
|
|
@ -9,6 +9,14 @@
|
|||
#include <osmocom/gsm/gsm0411_smc.h>
|
||||
#include <osmocom/gsm/gsm0411_smr.h>
|
||||
|
||||
enum bridge_state {
|
||||
BRIDGE_STATE_NONE,
|
||||
BRIDGE_STATE_LOOPBACK_PENDING,
|
||||
BRIDGE_STATE_LOOPBACK_ESTABLISHED,
|
||||
BRIDGE_STATE_BRIDGE_PENDING,
|
||||
BRIDGE_STATE_BRIDGE_ESTABLISHED,
|
||||
};
|
||||
|
||||
/* One transaction */
|
||||
struct gsm_trans {
|
||||
/* Entry in list of all transactions */
|
||||
|
@ -57,6 +65,11 @@ struct gsm_trans {
|
|||
struct gsm_sms *sms;
|
||||
} sms;
|
||||
};
|
||||
|
||||
struct {
|
||||
struct gsm_trans *peer;
|
||||
enum bridge_state state;
|
||||
} bridge;
|
||||
};
|
||||
|
||||
|
||||
|
@ -74,7 +87,7 @@ void trans_free(struct gsm_trans *trans);
|
|||
|
||||
int trans_assign_trans_id(struct gsm_network *net, struct vlr_subscr *vsub,
|
||||
uint8_t protocol, uint8_t ti_flag);
|
||||
int trans_has_conn(const struct gsm_subscriber_connection *conn);
|
||||
struct gsm_trans *trans_has_conn(const struct gsm_subscriber_connection *conn);
|
||||
void trans_conn_closed(struct gsm_subscriber_connection *conn);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -156,7 +156,10 @@ struct vlr_subscr {
|
|||
struct {
|
||||
/* pending requests */
|
||||
bool is_paging;
|
||||
/* list of struct subscr_request */
|
||||
struct llist_head requests;
|
||||
uint8_t lac;
|
||||
enum ran_type attached_via_ran;
|
||||
} cs;
|
||||
};
|
||||
|
||||
|
@ -190,6 +193,10 @@ struct vlr_ops {
|
|||
int (*set_ciph_mode)(void *msc_conn_ref, enum vlr_ciph ciph_mode,
|
||||
bool retrieve_imeisv);
|
||||
|
||||
/* UTRAN: send Common Id (when auth+ciph are complete) */
|
||||
int (*tx_common_id)(void *msc_conn_ref);
|
||||
|
||||
|
||||
/* notify MSC/SGSN that the subscriber data in VLR has been updated */
|
||||
void (*subscr_update)(struct vlr_subscr *vsub);
|
||||
/* notify MSC/SGSN that the given subscriber has been associated
|
||||
|
|
|
@ -47,6 +47,8 @@ struct log_info;
|
|||
int bsc_vty_init(struct gsm_network *network);
|
||||
int bsc_vty_init_extra(void);
|
||||
|
||||
void msc_vty_init(struct gsm_network *msc_network);
|
||||
|
||||
struct gsm_network *gsmnet_from_vty(struct vty *vty);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -34,8 +34,7 @@ app_configs = {
|
|||
"gbproxy": ["doc/examples/osmo-gbproxy/osmo-gbproxy.cfg",
|
||||
"doc/examples/osmo-gbproxy/osmo-gbproxy-legacy.cfg"],
|
||||
"sgsn": ["doc/examples/osmo-sgsn/osmo-sgsn.cfg"],
|
||||
"nitb": ["doc/examples/osmo-nitb/nanobts/openbsc-multitrx.cfg",
|
||||
"doc/examples/osmo-nitb/nanobts/openbsc.cfg"],
|
||||
"msc": ["doc/examples/osmo-msc/osmo-msc.cfg"],
|
||||
"gtphub": ["doc/examples/osmo-gtphub/osmo-gtphub-1iface.cfg"]
|
||||
}
|
||||
|
||||
|
@ -45,11 +44,11 @@ apps = [(4242, "src/osmo-bsc/osmo-bsc", "OsmoBSC", "osmo-bsc"),
|
|||
(4243, "src/osmo-bsc_mgcp/osmo-bsc_mgcp", "OpenBSC MGCP", "mgcp"),
|
||||
(4246, "src/gprs/osmo-gbproxy", "OsmoGbProxy", "gbproxy"),
|
||||
(4245, "src/gprs/osmo-sgsn", "OsmoSGSN", "sgsn"),
|
||||
(4242, "src/osmo-nitb/osmo-nitb", "OpenBSC", "nitb"),
|
||||
(4254, "src/osmo-msc/osmo-msc", "OsmoMSC", "msc"),
|
||||
(4253, "src/gprs/osmo-gtphub", "OsmoGTPhub", "gtphub")
|
||||
]
|
||||
|
||||
vty_command = ["./src/osmo-nitb/osmo-nitb", "-c",
|
||||
"doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
|
||||
vty_command = ["./src/osmo-msc/osmo-msc", "-c",
|
||||
"doc/examples/osmo-msc/osmo-msc.cfg"]
|
||||
|
||||
vty_app = apps[5] # reference apps[] entry for osmo-nitb
|
||||
|
|
|
@ -40,7 +40,7 @@ endif
|
|||
|
||||
# Programs
|
||||
SUBDIRS += \
|
||||
osmo-nitb \
|
||||
osmo-msc \
|
||||
osmo-bsc_mgcp \
|
||||
utils \
|
||||
ipaccess \
|
||||
|
|
|
@ -295,6 +295,10 @@ static void msgid2mmctx(struct sgsn_mm_ctx *mm, const struct msgb *msg)
|
|||
mm->gb.nsei = msgb_nsei(msg);
|
||||
/* In case a Iu connection is reconnected we need to update the ue ctx */
|
||||
mm->iu.ue_ctx = msg->dst;
|
||||
if (mm->ran_type == MM_CTX_T_UTRAN_Iu
|
||||
&& mm->iu.ue_ctx)
|
||||
mm->iu.ue_ctx->rab_assign_addr_enc =
|
||||
sgsn->cfg.iu.rab_assign_addr_enc;
|
||||
}
|
||||
|
||||
/* Store BVCI/NSEI in MM context */
|
||||
|
@ -978,7 +982,7 @@ void activate_pdp_rabs(struct sgsn_mm_ctx *ctx)
|
|||
if (ctx->ran_type != MM_CTX_T_UTRAN_Iu)
|
||||
return;
|
||||
llist_for_each_entry(pdp, &ctx->pdp_list, list) {
|
||||
iu_rab_act_ps(pdp->nsapi, pdp, 1);
|
||||
iu_rab_act_ps(pdp->nsapi, pdp);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -2897,14 +2901,16 @@ int gprs_gmm_rx_resume(struct gprs_ra_id *raid, uint32_t tlli,
|
|||
}
|
||||
|
||||
#ifdef BUILD_IU
|
||||
int iu_rab_act_ps(uint8_t rab_id, struct sgsn_pdp_ctx *pdp, bool use_x213_nsap)
|
||||
int iu_rab_act_ps(uint8_t rab_id, struct sgsn_pdp_ctx *pdp)
|
||||
{
|
||||
struct msgb *msg;
|
||||
struct sgsn_mm_ctx *mm = pdp->mm;
|
||||
struct ue_conn_ctx *uectx;
|
||||
uint32_t ggsn_ip;
|
||||
bool use_x213_nsap;
|
||||
|
||||
uectx = mm->iu.ue_ctx;
|
||||
use_x213_nsap = (uectx->rab_assign_addr_enc == NSAP_ADDR_ENC_X213);
|
||||
|
||||
/* Get the IP address for ggsn user plane */
|
||||
memcpy(&ggsn_ip, pdp->lib->gsnru.v, pdp->lib->gsnru.l);
|
||||
|
|
|
@ -247,6 +247,7 @@ struct sgsn_mm_ctx *sgsn_mm_ctx_alloc_iu(void *uectx)
|
|||
|
||||
ctx->ran_type = MM_CTX_T_UTRAN_Iu;
|
||||
ctx->iu.ue_ctx = uectx;
|
||||
ctx->iu.ue_ctx->rab_assign_addr_enc = sgsn->cfg.iu.rab_assign_addr_enc;
|
||||
ctx->iu.new_key = 1;
|
||||
ctx->gmm_state = GMM_DEREGISTERED;
|
||||
ctx->pmm_state = PMM_DETACHED;
|
||||
|
|
|
@ -407,7 +407,7 @@ static int create_pdp_conf(struct pdp_t *pdp, void *cbp, int cause)
|
|||
} else if (pctx->mm->ran_type == MM_CTX_T_UTRAN_Iu) {
|
||||
#ifdef BUILD_IU
|
||||
/* Activate a radio bearer */
|
||||
iu_rab_act_ps(pdp->nsapi, pctx, 1);
|
||||
iu_rab_act_ps(pdp->nsapi, pctx);
|
||||
return 0;
|
||||
#else
|
||||
return -ENOTSUP;
|
||||
|
|
|
@ -319,12 +319,6 @@ static const struct log_info gprs_log_info = {
|
|||
.num_cat = ARRAY_SIZE(gprs_categories),
|
||||
};
|
||||
|
||||
/* Implement the extern asn_debug from libasn1c to indicate whether the ASN.1
|
||||
* binary code decoded and encoded during Iu communication should be logged to
|
||||
* stderr. See osmocom's libasn1c, asn_internal.h, at "if (asn_debug)":
|
||||
* http://git.osmocom.org/libasn1c/tree/include/asn1c/asn_internal.h */
|
||||
int asn_debug = 0;
|
||||
|
||||
int sgsn_ranap_iu_event(struct ue_conn_ctx *ctx, enum iu_event_type type, void *data);
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@ -352,9 +346,6 @@ int main(int argc, char **argv)
|
|||
osmo_stats_vty_add_cmds(&gprs_log_info);
|
||||
sgsn_vty_init(&sgsn_inst.cfg);
|
||||
ctrl_vty_init(tall_bsc_ctx);
|
||||
#ifdef BUILD_IU
|
||||
iu_vty_init(&asn_debug);
|
||||
#endif
|
||||
|
||||
handle_options(argc, argv);
|
||||
|
||||
|
|
|
@ -44,6 +44,12 @@
|
|||
|
||||
#include <pdp.h>
|
||||
|
||||
#include "../../bscconfig.h"
|
||||
|
||||
#ifdef BUILD_IU
|
||||
#include <openbsc/iu.h>
|
||||
#endif
|
||||
|
||||
static struct sgsn_config *g_cfg = NULL;
|
||||
|
||||
const struct value_string sgsn_auth_pol_strs[] = {
|
||||
|
@ -297,6 +303,10 @@ static int config_write_sgsn(struct vty *vty)
|
|||
} else
|
||||
vty_out(vty, " no compression v42bis%s", VTY_NEWLINE);
|
||||
|
||||
#ifdef BUILD_IU
|
||||
iu_vty_config_write(vty, " ");
|
||||
#endif
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -1284,6 +1294,10 @@ int sgsn_vty_init(struct sgsn_config *cfg)
|
|||
install_element(SGSN_NODE, &cfg_no_comp_v42bis_cmd);
|
||||
install_element(SGSN_NODE, &cfg_comp_v42bis_cmd);
|
||||
install_element(SGSN_NODE, &cfg_comp_v42bisp_cmd);
|
||||
|
||||
#ifdef BUILD_IU
|
||||
iu_vty_init(SGSN_NODE, &g_cfg->iu.rab_assign_addr_enc);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -516,12 +516,6 @@ int bsc_network_alloc(mncc_recv_cb_t mncc_recv)
|
|||
bsc_gsmnet->name_long = talloc_strdup(bsc_gsmnet, "OpenBSC");
|
||||
bsc_gsmnet->name_short = talloc_strdup(bsc_gsmnet, "OpenBSC");
|
||||
|
||||
/* TODO: move to libmsc when gsm_network is split between libbsc and
|
||||
* libmsc */
|
||||
bsc_gsmnet->gsup_server_addr_str = talloc_strdup(bsc_gsmnet,
|
||||
MSC_HLR_REMOTE_IP_DEFAULT);
|
||||
bsc_gsmnet->gsup_server_port = MSC_HLR_REMOTE_PORT_DEFAULT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,12 @@ void *tall_paging_ctx;
|
|||
|
||||
#define PAGING_TIMER 0, 500000
|
||||
|
||||
/*
|
||||
* TODO MSCSPLIT: the paging in libbsc is closely tied to MSC land in that the
|
||||
* MSC realm callback functions used to be invoked from the BSC/BTS level. So
|
||||
* this entire file needs to be rewired for use with an A interface.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Kill one paging request update the internal list...
|
||||
*/
|
||||
|
|
|
@ -184,6 +184,11 @@ static const struct log_info_cat default_categories[] = {
|
|||
.description = "Visitor Location Register",
|
||||
.enabled = 1, .loglevel = LOGL_DEBUG,
|
||||
},
|
||||
[DIUCS] = {
|
||||
.name = "DIUCS",
|
||||
.description = "Iu-CS Protocol",
|
||||
.enabled = 1, .loglevel = LOGL_DEBUG,
|
||||
},
|
||||
};
|
||||
|
||||
static int filter_fn(const struct log_context *ctx, struct log_target *tar)
|
||||
|
|
|
@ -449,3 +449,10 @@ bool classmark_is_r99(struct gsm_classmark *cm)
|
|||
rev_lev = (cm->classmark2[0] >> 5) & 0x3;
|
||||
return rev_lev >= 2;
|
||||
}
|
||||
|
||||
const struct value_string ran_type_names[] = {
|
||||
OSMO_VALUE_STRING(RAN_UNKNOWN),
|
||||
OSMO_VALUE_STRING(RAN_GERAN_A),
|
||||
OSMO_VALUE_STRING(RAN_UTRAN_IU),
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
|
|
@ -80,7 +80,15 @@ struct iu_rnc {
|
|||
|
||||
void *talloc_iu_ctx;
|
||||
|
||||
int asn1_xer_print = 1;
|
||||
/* Implement the extern asn_debug from libasn1c to indicate whether to print
|
||||
* asn.1 debug messages (see libasn1c). */
|
||||
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;
|
||||
|
||||
void *talloc_asn1_ctx;
|
||||
|
||||
iu_recv_cb_t global_iu_recv_cb = NULL;
|
||||
|
@ -241,6 +249,25 @@ int iu_tx_sec_mode_cmd(struct ue_conn_ctx *uectx, struct gsm_auth_tuple *tp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int iu_tx_common_id(struct ue_conn_ctx *uectx, const char *imsi)
|
||||
{
|
||||
struct msgb *msg;
|
||||
struct osmo_scu_prim *prim;
|
||||
|
||||
LOGP(DRANAP, LOGL_INFO, "Transmitting RANAP CommonID (SUA link %p conn_id %u)\n",
|
||||
uectx->link, uectx->conn_id);
|
||||
|
||||
msg = ranap_new_msg_common_id(imsi);
|
||||
msg->l2h = msg->data;
|
||||
prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
|
||||
prim->u.data.conn_id = uectx->conn_id;
|
||||
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
|
||||
OSMO_SCU_PRIM_N_DATA,
|
||||
PRIM_OP_REQUEST, msg);
|
||||
osmo_sua_user_link_down(uectx->link, &prim->oph);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int iu_grnc_id_parse(struct iu_grnc_id *dst,
|
||||
struct RANAP_GlobalRNC_ID *src)
|
||||
{
|
||||
|
@ -375,20 +402,35 @@ int iu_tx(struct msgb *msg_nas, uint8_t sapi)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ranap_handle_co_iu_rel_req(struct ue_conn_ctx *ctx, RANAP_Iu_ReleaseRequestIEs_t *ies)
|
||||
/* Send Iu Release for the given UE connection.
|
||||
* If cause is NULL, the standard "No remaining RAB" cause is sent, otherwise
|
||||
* the provided cause. */
|
||||
int iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
|
||||
{
|
||||
struct msgb *msg;
|
||||
struct osmo_scu_prim *prim;
|
||||
static const struct RANAP_Cause default_cause = {
|
||||
.present = RANAP_Cause_PR_radioNetwork,
|
||||
.choice.radioNetwork = RANAP_CauseRadioNetwork_no_remaining_rab,
|
||||
};
|
||||
|
||||
LOGP(DRANAP, LOGL_INFO, "Received Iu Release Request, Sending Release Command\n");
|
||||
msg = ranap_new_msg_iu_rel_cmd(&ies->cause);
|
||||
if (!cause)
|
||||
cause = &default_cause;
|
||||
|
||||
msg = ranap_new_msg_iu_rel_cmd(cause);
|
||||
msg->l2h = msg->data;
|
||||
prim = (struct osmo_scu_prim *) msgb_push(msg, sizeof(*prim));
|
||||
prim->u.data.conn_id = ctx->conn_id;
|
||||
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
|
||||
OSMO_SCU_PRIM_N_DATA,
|
||||
PRIM_OP_REQUEST, msg);
|
||||
osmo_sua_user_link_down(ctx->link, &prim->oph);
|
||||
return osmo_sua_user_link_down(ctx->link, &prim->oph);
|
||||
}
|
||||
|
||||
static int ranap_handle_co_iu_rel_req(struct ue_conn_ctx *ctx, RANAP_Iu_ReleaseRequestIEs_t *ies)
|
||||
{
|
||||
LOGP(DRANAP, LOGL_INFO, "Received Iu Release Request, Sending Release Command\n");
|
||||
iu_tx_release(ctx, &ies->cause);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -413,6 +455,7 @@ static int ranap_handle_co_rab_ass_resp(struct ue_conn_ctx *ctx, RANAP_RAB_Assig
|
|||
|
||||
ranap_free_rab_setupormodifieditemies(&setup_ies);
|
||||
}
|
||||
/* FIXME: handle RAB Ass failure? */
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -18,33 +18,91 @@
|
|||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <osmocom/core/logging.h>
|
||||
#include <osmocom/vty/command.h>
|
||||
#include <osmocom/vty/logging.h>
|
||||
|
||||
/* Pointer to the actual asn_debug value as passed from main scopes. */
|
||||
static int *g_asn_debug_p = NULL;
|
||||
#include <openbsc/iu.h>
|
||||
|
||||
static enum nsap_addr_enc *g_rab_assign_addr_enc = NULL;
|
||||
|
||||
DEFUN(logging_asn_debug,
|
||||
logging_asn_debug_cmd,
|
||||
"logging asn1-debug (1|0)",
|
||||
LOGGING_STR
|
||||
"Log ASN.1 debug messages to stderr\n"
|
||||
"Log ASN.1 debug messages to stderr\n"
|
||||
"Do not log ASN.1 debug messages to stderr\n")
|
||||
{
|
||||
asn_debug = atoi(argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(logging_asn_xer_print,
|
||||
logging_asn_xer_print_cmd,
|
||||
"logging asn1-xer-print (1|0)",
|
||||
LOGGING_STR
|
||||
"Log human readable representations of all ASN.1 messages to stderr\n"
|
||||
"Log decoded ASN.1 messages to stderr\n"
|
||||
"Do not log decoded ASN.1 messages to stderr\n")
|
||||
{
|
||||
if (!g_asn_debug_p) {
|
||||
vty_out(vty, "%%ASN.1 debugging not available%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
*g_asn_debug_p = atoi(argv[0]);
|
||||
asn1_xer_print = atoi(argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
void iu_vty_init(int *asn_debug_p)
|
||||
DEFUN(cfg_iu_rab_assign_addr_enc, cfg_iu_rab_assign_addr_enc_cmd,
|
||||
"iu rab-assign-addr-enc (x213|v4raw)",
|
||||
"Iu interface protocol options\n"
|
||||
"Choose RAB Assignment's Transport Layer Address encoding\n"
|
||||
"ITU-T X.213 compliant address encoding (default)\n"
|
||||
"32bit length raw IPv4 address (for ip.access nano3G)\n")
|
||||
{
|
||||
g_asn_debug_p = asn_debug_p;
|
||||
if (!g_rab_assign_addr_enc) {
|
||||
vty_out(vty, "%%RAB Assignment Transport Layer Address"
|
||||
" encoding not available%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
if (strcmp(argv[0], "v4raw") == 0)
|
||||
*g_rab_assign_addr_enc = NSAP_ADDR_ENC_V4RAW;
|
||||
else
|
||||
*g_rab_assign_addr_enc = NSAP_ADDR_ENC_X213;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int iu_vty_config_write(struct vty *vty, const char *indent)
|
||||
{
|
||||
if (!g_rab_assign_addr_enc) {
|
||||
vty_out(vty, "%%RAB Assignment Transport Layer Address"
|
||||
" encoding not available%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
switch (*g_rab_assign_addr_enc) {
|
||||
case NSAP_ADDR_ENC_V4RAW:
|
||||
vty_out(vty, "%siu rab-assign-addr-enc v4raw%s", indent,
|
||||
VTY_NEWLINE);
|
||||
break;
|
||||
case NSAP_ADDR_ENC_X213:
|
||||
/* default value, no need to write anything */
|
||||
break;
|
||||
default:
|
||||
LOGP(0, LOGL_ERROR, "Invalid value for"
|
||||
" net.iu.rab_assign_addr_enc: %d\n",
|
||||
*g_rab_assign_addr_enc);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
void iu_vty_init(int iu_parent_node, enum nsap_addr_enc *rab_assign_addr_enc)
|
||||
{
|
||||
g_rab_assign_addr_enc = rab_assign_addr_enc;
|
||||
|
||||
install_element(CFG_LOG_NODE, &logging_asn_debug_cmd);
|
||||
install_element(CFG_LOG_NODE, &logging_asn_xer_print_cmd);
|
||||
install_element(iu_parent_node, &cfg_iu_rab_assign_addr_enc_cmd);
|
||||
}
|
||||
|
|
|
@ -30,11 +30,14 @@ noinst_HEADERS = \
|
|||
$(NULL)
|
||||
|
||||
libmgcp_a_SOURCES = \
|
||||
mgcp_common.c \
|
||||
mgcp_protocol.c \
|
||||
mgcp_network.c \
|
||||
mgcp_vty.c \
|
||||
mgcp_osmux.c \
|
||||
mgcp_sdp.c \
|
||||
mgcpgw_client.c \
|
||||
mgcpgw_client_vty.c \
|
||||
$(NULL)
|
||||
if BUILD_MGCP_TRANSCODING
|
||||
libmgcp_a_SOURCES += \
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
/* Media Gateway Control Protocol Media Gateway: RFC 3435 */
|
||||
/* Implementations useful both for the MGCP GW as well as MGCP GW clients */
|
||||
|
||||
/*
|
||||
* (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 <errno.h>
|
||||
|
||||
#include <osmocom/core/utils.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
|
||||
const struct value_string mgcp_connection_mode_strs[] = {
|
||||
{ MGCP_CONN_NONE, "none" },
|
||||
{ MGCP_CONN_RECV_SEND, "sendrecv" },
|
||||
{ MGCP_CONN_SEND_ONLY, "sendonly" },
|
||||
{ MGCP_CONN_RECV_ONLY, "recvonly" },
|
||||
{ MGCP_CONN_LOOPBACK, "loopback" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
/* Ensure that the msg->l2h is NUL terminated. */
|
||||
int mgcp_msg_terminate_nul(struct msgb *msg)
|
||||
{
|
||||
unsigned char *tail = msg->l2h + msgb_l2len(msg); /* char after l2 data */
|
||||
if (tail[-1] == '\0')
|
||||
/* nothing to do */;
|
||||
else if (msgb_tailroom(msg) > 0)
|
||||
tail[0] = '\0';
|
||||
else if (tail[-1] == '\r' || tail[-1] == '\n')
|
||||
tail[-1] = '\0';
|
||||
else {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Cannot NUL terminate MGCP message: "
|
||||
"Length: %d, Buffer size: %d\n",
|
||||
msgb_l2len(msg), msg->data_len);
|
||||
return -ENOTSUP;
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -537,7 +537,11 @@ void mgcp_patch_and_count(struct mgcp_endpoint *endp, struct mgcp_rtp_state *sta
|
|||
if (payload < 0)
|
||||
return;
|
||||
|
||||
#if 0
|
||||
DEBUGP(DMGCP, "Payload hdr payload %u -> endp payload %u\n",
|
||||
rtp_hdr->payload_type, payload);
|
||||
rtp_hdr->payload_type = payload;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -588,6 +592,14 @@ int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp,
|
|||
struct mgcp_rtp_state *rtp_state;
|
||||
int tap_idx;
|
||||
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"endpoint %x dest %s tcfg->audio_loop %d endp->conn_mode %d (== loopback: %d)\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
dest == MGCP_DEST_NET? "net" : "bts",
|
||||
tcfg->audio_loop,
|
||||
endp->conn_mode,
|
||||
endp->conn_mode == MGCP_CONN_LOOPBACK);
|
||||
|
||||
/* For loop toggle the destination and then dispatch. */
|
||||
if (tcfg->audio_loop)
|
||||
dest = !dest;
|
||||
|
@ -605,10 +617,35 @@ int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp,
|
|||
rtp_state = &endp->net_state;
|
||||
tap_idx = MGCP_TAP_BTS_OUT;
|
||||
}
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"endpoint %x dest %s net_end %s %d %d bts_end %s %d %d rtp_end %s %d %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
dest == MGCP_DEST_NET? "net" : "bts",
|
||||
|
||||
if (!rtp_end->output_enabled)
|
||||
inet_ntoa(endp->net_end.addr),
|
||||
ntohs(endp->net_end.rtp_port),
|
||||
ntohs(endp->net_end.rtcp_port),
|
||||
|
||||
inet_ntoa(endp->bts_end.addr),
|
||||
ntohs(endp->bts_end.rtp_port),
|
||||
ntohs(endp->bts_end.rtcp_port),
|
||||
|
||||
inet_ntoa(rtp_end->addr),
|
||||
ntohs(rtp_end->rtp_port),
|
||||
ntohs(rtp_end->rtcp_port)
|
||||
);
|
||||
|
||||
if (!rtp_end->output_enabled) {
|
||||
rtp_end->dropped_packets += 1;
|
||||
else if (is_rtp) {
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"endpoint %x output disabled, drop to %s %s %d %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
dest == MGCP_DEST_NET? "net" : "bts",
|
||||
inet_ntoa(rtp_end->addr),
|
||||
ntohs(rtp_end->rtp_port),
|
||||
ntohs(rtp_end->rtcp_port)
|
||||
);
|
||||
} else if (is_rtp) {
|
||||
int cont;
|
||||
int nbytes = 0;
|
||||
int len = rc;
|
||||
|
@ -619,8 +656,17 @@ int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp,
|
|||
break;
|
||||
|
||||
mgcp_patch_and_count(endp, rtp_state, rtp_end, addr, buf, len);
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"endpoint %x process/send to %s %s %d %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
(dest == MGCP_DEST_NET)? "net" : "bts",
|
||||
inet_ntoa(rtp_end->addr),
|
||||
ntohs(rtp_end->rtp_port),
|
||||
ntohs(rtp_end->rtcp_port)
|
||||
);
|
||||
forward_data(rtp_end->rtp.fd, &endp->taps[tap_idx],
|
||||
buf, len);
|
||||
|
||||
rc = mgcp_udp_send(rtp_end->rtp.fd,
|
||||
&rtp_end->addr,
|
||||
rtp_end->rtp_port, buf, len);
|
||||
|
@ -632,6 +678,15 @@ int mgcp_send(struct mgcp_endpoint *endp, int dest, int is_rtp,
|
|||
} while (len > 0);
|
||||
return nbytes;
|
||||
} else if (!tcfg->omit_rtcp) {
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"endpoint %x send to %s %s %d %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
dest == MGCP_DEST_NET? "net" : "bts",
|
||||
inet_ntoa(rtp_end->addr),
|
||||
ntohs(rtp_end->rtp_port),
|
||||
ntohs(rtp_end->rtcp_port)
|
||||
);
|
||||
|
||||
return mgcp_udp_send(rtp_end->rtcp.fd,
|
||||
&rtp_end->addr,
|
||||
rtp_end->rtcp_port, buf, rc);
|
||||
|
@ -676,9 +731,28 @@ static int rtp_data_net(struct osmo_fd *fd, unsigned int what)
|
|||
if (rc <= 0)
|
||||
return -1;
|
||||
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"endpoint %x",
|
||||
ENDPOINT_NUMBER(endp));
|
||||
LOGPC(DMGCP, LOGL_DEBUG,
|
||||
" from net %s %d",
|
||||
inet_ntoa(addr.sin_addr),
|
||||
ntohs(addr.sin_port));
|
||||
LOGPC(DMGCP, LOGL_DEBUG,
|
||||
" net_end %s %d %d",
|
||||
inet_ntoa(endp->net_end.addr),
|
||||
ntohs(endp->net_end.rtp_port),
|
||||
ntohs(endp->net_end.rtcp_port));
|
||||
LOGPC(DMGCP, LOGL_DEBUG,
|
||||
" bts_end %s %d %d\n",
|
||||
inet_ntoa(endp->bts_end.addr),
|
||||
ntohs(endp->bts_end.rtp_port),
|
||||
ntohs(endp->bts_end.rtcp_port)
|
||||
);
|
||||
|
||||
if (memcmp(&addr.sin_addr, &endp->net_end.addr, sizeof(addr.sin_addr)) != 0) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Endpoint 0x%x data from wrong address %s vs. ",
|
||||
"rtp_data_net: Endpoint 0x%x data from wrong address %s vs. ",
|
||||
ENDPOINT_NUMBER(endp), inet_ntoa(addr.sin_addr));
|
||||
LOGPC(DMGCP, LOGL_ERROR,
|
||||
"%s\n", inet_ntoa(endp->net_end.addr));
|
||||
|
@ -691,7 +765,7 @@ static int rtp_data_net(struct osmo_fd *fd, unsigned int what)
|
|||
if (endp->net_end.rtp_port != addr.sin_port &&
|
||||
endp->net_end.rtcp_port != addr.sin_port) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Data from wrong source port %d on 0x%x\n",
|
||||
"rtp_data_net: Data from wrong source port %d on 0x%x\n",
|
||||
ntohs(addr.sin_port), ENDPOINT_NUMBER(endp));
|
||||
return -1;
|
||||
}
|
||||
|
@ -701,6 +775,12 @@ static int rtp_data_net(struct osmo_fd *fd, unsigned int what)
|
|||
break;
|
||||
}
|
||||
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"rtp_data_net: Endpoint %x data from %s %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
inet_ntoa(addr.sin_addr),
|
||||
ntohs(addr.sin_port));
|
||||
|
||||
/* throw away the dummy message */
|
||||
if (rc == 1 && buf[0] == MGCP_DUMMY_LOAD) {
|
||||
LOGP(DMGCP, LOGL_NOTICE, "Filtered dummy from network on 0x%x\n",
|
||||
|
@ -780,7 +860,7 @@ static int rtp_data_bts(struct osmo_fd *fd, unsigned int what)
|
|||
|
||||
if (memcmp(&endp->bts_end.addr, &addr.sin_addr, sizeof(addr.sin_addr)) != 0) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Data from wrong bts %s on 0x%x\n",
|
||||
"rtp_data_bts: Data from wrong bts %s on 0x%x\n",
|
||||
inet_ntoa(addr.sin_addr), ENDPOINT_NUMBER(endp));
|
||||
return -1;
|
||||
}
|
||||
|
@ -788,11 +868,17 @@ static int rtp_data_bts(struct osmo_fd *fd, unsigned int what)
|
|||
if (endp->bts_end.rtp_port != addr.sin_port &&
|
||||
endp->bts_end.rtcp_port != addr.sin_port) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Data from wrong bts source port %d on 0x%x\n",
|
||||
"rtp_data_bts: ata from wrong bts source port %d on 0x%x\n",
|
||||
ntohs(addr.sin_port), ENDPOINT_NUMBER(endp));
|
||||
return -1;
|
||||
}
|
||||
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"rtp_data_bts: Endpoint %x data from %s %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
inet_ntoa(addr.sin_addr),
|
||||
ntohs(addr.sin_port));
|
||||
|
||||
/* throw away the dummy message */
|
||||
if (rc == 1 && buf[0] == MGCP_DUMMY_LOAD) {
|
||||
LOGP(DMGCP, LOGL_NOTICE, "Filtered dummy from bts on 0x%x\n",
|
||||
|
@ -808,6 +894,9 @@ static int rtp_data_bts(struct osmo_fd *fd, unsigned int what)
|
|||
|
||||
switch (endp->type) {
|
||||
case MGCP_RTP_DEFAULT:
|
||||
LOGP(DMGCP, LOGL_DEBUG,
|
||||
"rtp_data_bts: Endpoint %x MGCP_RTP_DEFAULT\n",
|
||||
ENDPOINT_NUMBER(endp));
|
||||
return mgcp_send(endp, MGCP_DEST_NET, proto == MGCP_PROTO_RTP,
|
||||
&addr, buf, rc);
|
||||
case MGCP_RTP_TRANSCODED:
|
||||
|
|
|
@ -318,26 +318,14 @@ struct msgb *mgcp_handle_message(struct mgcp_config *cfg, struct msgb *msg)
|
|||
int i, code, handled = 0;
|
||||
struct msgb *resp = NULL;
|
||||
char *data;
|
||||
unsigned char *tail = msg->l2h + msgb_l2len(msg); /* char after l2 data */
|
||||
|
||||
if (msgb_l2len(msg) < 4) {
|
||||
LOGP(DMGCP, LOGL_ERROR, "msg too short: %d\n", msg->len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Ensure that the msg->l2h is NUL terminated. */
|
||||
if (tail[-1] == '\0')
|
||||
/* nothing to do */;
|
||||
else if (msgb_tailroom(msg) > 0)
|
||||
tail[0] = '\0';
|
||||
else if (tail[-1] == '\r' || tail[-1] == '\n')
|
||||
tail[-1] = '\0';
|
||||
else {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Cannot NUL terminate MGCP message: "
|
||||
"Length: %d, Buffer size: %d\n",
|
||||
msgb_l2len(msg), msg->data_len);
|
||||
if (mgcp_msg_terminate_nul(msg))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* attempt to treat it as a response */
|
||||
if (sscanf((const char *)&msg->l2h[0], "%3d %*s", &code) == 1) {
|
||||
|
@ -547,6 +535,11 @@ static int parse_conn_mode(const char *msg, struct mgcp_endpoint *endp)
|
|||
endp->bts_end.output_enabled =
|
||||
endp->conn_mode & MGCP_CONN_RECV_ONLY ? 1 : 0;
|
||||
|
||||
LOGP(DMGCP, LOGL_DEBUG, "endpoint %x connection mode '%s' %d output_enabled net %d bts %d\n",
|
||||
ENDPOINT_NUMBER(endp),
|
||||
msg, endp->conn_mode, endp->net_end.output_enabled,
|
||||
endp->bts_end.output_enabled);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -972,6 +965,8 @@ static struct msgb *handle_modify_con(struct mgcp_parse_data *p)
|
|||
break;
|
||||
case MGCP_POLICY_DEFER:
|
||||
/* stop processing */
|
||||
LOGP(DMGCP, LOGL_DEBUG, "endp %x MDCX defer\n",
|
||||
ENDPOINT_NUMBER(endp));
|
||||
return NULL;
|
||||
break;
|
||||
case MGCP_POLICY_CONT:
|
||||
|
@ -1003,6 +998,8 @@ error3:
|
|||
|
||||
|
||||
out_silent:
|
||||
LOGP(DMGCP, LOGL_DEBUG, "endp %x Modify endpoint: silent exit\n",
|
||||
ENDPOINT_NUMBER(endp));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,549 @@
|
|||
/* mgcp_utils - common functions to setup an MGCP connection
|
||||
*/
|
||||
/* (C) 2016 by sysmocom s.f.m.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/select.h>
|
||||
#include <osmocom/core/write_queue.h>
|
||||
#include <osmocom/core/msgb.h>
|
||||
#include <osmocom/core/logging.h>
|
||||
|
||||
#include <openbsc/mgcpgw_client.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
#include <openbsc/mgcp_internal.h>
|
||||
#include <openbsc/debug.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
struct mgcpgw_client {
|
||||
struct mgcpgw_client_conf actual;
|
||||
uint32_t remote_addr;
|
||||
struct osmo_wqueue wq;
|
||||
mgcp_trans_id_t next_trans_id;
|
||||
uint16_t next_endpoint;
|
||||
struct llist_head responses_pending;
|
||||
};
|
||||
|
||||
void mgcpgw_client_conf_init(struct mgcpgw_client_conf *conf)
|
||||
{
|
||||
/* NULL and -1 default to MGCPGW_CLIENT_*_DEFAULT values */
|
||||
*conf = (struct mgcpgw_client_conf){
|
||||
.local_addr = NULL,
|
||||
.local_port = -1,
|
||||
.remote_addr = NULL,
|
||||
.remote_port = -1,
|
||||
};
|
||||
}
|
||||
|
||||
unsigned int mgcpgw_client_next_endpoint(struct mgcpgw_client *client)
|
||||
{
|
||||
return client->next_endpoint ++;
|
||||
}
|
||||
|
||||
static void mgcpgw_client_handle_response(struct mgcpgw_client *mgcp,
|
||||
struct mgcp_response_pending *pending,
|
||||
struct mgcp_response *response)
|
||||
{
|
||||
if (!pending) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Cannot handle NULL response\n");
|
||||
return;
|
||||
}
|
||||
if (pending->response_cb)
|
||||
pending->response_cb(response, pending->priv);
|
||||
else
|
||||
LOGP(DMGCP, LOGL_INFO, "MGCP response ignored (NULL cb)\n");
|
||||
talloc_free(pending);
|
||||
}
|
||||
|
||||
static int mgcp_response_parse_head(struct mgcp_response *r, struct msgb *msg)
|
||||
{
|
||||
int comment_pos;
|
||||
char *end;
|
||||
|
||||
if (mgcp_msg_terminate_nul(msg))
|
||||
goto response_parse_failure;
|
||||
|
||||
r->body = (char *)msg->data;
|
||||
|
||||
if (sscanf(r->body, "%3d %u %n",
|
||||
&r->head.response_code, &r->head.trans_id,
|
||||
&comment_pos) != 2)
|
||||
goto response_parse_failure;
|
||||
|
||||
r->head.comment = r->body + comment_pos;
|
||||
end = strchr(r->head.comment, '\r');
|
||||
if (!end)
|
||||
goto response_parse_failure;
|
||||
/* Mark the end of the comment */
|
||||
*end = '\0';
|
||||
r->body = end + 1;
|
||||
if (r->body[0] == '\n')
|
||||
r->body ++;
|
||||
return 0;
|
||||
|
||||
response_parse_failure:
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Failed to parse MGCP response header\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* TODO undup against mgcp_protocol.c:mgcp_check_param() */
|
||||
static bool mgcp_line_is_valid(const char *line)
|
||||
{
|
||||
const size_t line_len = strlen(line);
|
||||
if (line[0] == '\0')
|
||||
return true;
|
||||
|
||||
if (line_len < 2
|
||||
|| line[1] != '=') {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Wrong MGCP option format: '%s'\n",
|
||||
line);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Parse a line like "m=audio 16002 RTP/AVP 98" */
|
||||
static int mgcp_parse_audio(struct mgcp_response *r, const char *line)
|
||||
{
|
||||
if (sscanf(line, "m=audio %hu",
|
||||
&r->audio_port) != 1)
|
||||
goto response_parse_failure;
|
||||
|
||||
return 0;
|
||||
|
||||
response_parse_failure:
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Failed to parse MGCP response header\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
int mgcp_response_parse_params(struct mgcp_response *r)
|
||||
{
|
||||
char *line;
|
||||
int rc;
|
||||
OSMO_ASSERT(r->body);
|
||||
char *data = strstr(r->body, "\n\n");
|
||||
|
||||
if (!data) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"MGCP response: cannot find start of parameters\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Advance to after the \n\n, replace the second \n with \0. That's
|
||||
* where the parameters start. */
|
||||
data ++;
|
||||
*data = '\0';
|
||||
data ++;
|
||||
|
||||
for_each_line(line, data) {
|
||||
if (!mgcp_line_is_valid(line))
|
||||
return -EINVAL;
|
||||
|
||||
switch (line[0]) {
|
||||
case 'm':
|
||||
rc = mgcp_parse_audio(r, line);
|
||||
if (rc)
|
||||
return rc;
|
||||
break;
|
||||
default:
|
||||
/* skip unhandled parameters */
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct mgcp_response_pending *mgcpgw_client_response_pending_get(
|
||||
struct mgcpgw_client *mgcp,
|
||||
struct mgcp_response *r)
|
||||
{
|
||||
struct mgcp_response_pending *pending;
|
||||
if (!r)
|
||||
return NULL;
|
||||
llist_for_each_entry(pending, &mgcp->responses_pending, entry) {
|
||||
if (pending->trans_id == r->head.trans_id) {
|
||||
llist_del(&pending->entry);
|
||||
return pending;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Feed an MGCP message into the receive processing.
|
||||
* Parse the head and call any callback registered for the transaction id found
|
||||
* in the MGCP message. This is normally called directly from the internal
|
||||
* mgcp_do_read that reads from the socket connected to the MGCP gateway. This
|
||||
* function is published mainly to be able to feed data from the test suite.
|
||||
*/
|
||||
int mgcpgw_client_rx(struct mgcpgw_client *mgcp, struct msgb *msg)
|
||||
{
|
||||
struct mgcp_response r = { 0 };
|
||||
struct mgcp_response_pending *pending;
|
||||
int rc;
|
||||
|
||||
rc = mgcp_response_parse_head(&r, msg);
|
||||
if (rc) {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Cannot parse MGCP response\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
pending = mgcpgw_client_response_pending_get(mgcp, &r);
|
||||
if (!pending) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Cannot find matching MGCP transaction for trans_id %d\n",
|
||||
r.head.trans_id);
|
||||
return -1;
|
||||
}
|
||||
|
||||
mgcpgw_client_handle_response(mgcp, pending, &r);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mgcp_do_read(struct osmo_fd *fd)
|
||||
{
|
||||
struct mgcpgw_client *mgcp = fd->data;
|
||||
struct msgb *msg;
|
||||
int ret;
|
||||
|
||||
msg = msgb_alloc_headroom(4096, 128, "mgcp_from_gw");
|
||||
if (!msg) {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Failed to allocate MGCP message.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = read(fd->fd, msg->data, 4096 - 128);
|
||||
if (ret <= 0) {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Failed to read: %d/%s\n", errno, strerror(errno));
|
||||
msgb_free(msg);
|
||||
return -1;
|
||||
} else if (ret > 4096 - 128) {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Too much data: %d\n", ret);
|
||||
msgb_free(msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
msg->l2h = msgb_put(msg, ret);
|
||||
ret = mgcpgw_client_rx(mgcp, msg);
|
||||
talloc_free(msg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mgcp_do_write(struct osmo_fd *fd, struct msgb *msg)
|
||||
{
|
||||
int ret;
|
||||
static char strbuf[4096];
|
||||
unsigned int l = msg->len < sizeof(strbuf)-1 ? msg->len : sizeof(strbuf)-1;
|
||||
strncpy(strbuf, (const char*)msg->data, l);
|
||||
strbuf[l] = '\0';
|
||||
DEBUGP(DMGCP, "Tx MGCP msg to MGCP GW: '%s'\n", strbuf);
|
||||
|
||||
LOGP(DMGCP, LOGL_DEBUG, "Sending msg to MGCP GW size: %u\n", msg->len);
|
||||
|
||||
ret = write(fd->fd, msg->data, msg->len);
|
||||
if (ret != msg->len)
|
||||
LOGP(DMGCP, LOGL_ERROR, "Failed to forward message to MGCP"
|
||||
" GW: %s\n", strerror(errno));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct mgcpgw_client *mgcpgw_client_init(void *ctx,
|
||||
struct mgcpgw_client_conf *conf)
|
||||
{
|
||||
struct mgcpgw_client *mgcp;
|
||||
|
||||
mgcp = talloc_zero(ctx, struct mgcpgw_client);
|
||||
|
||||
INIT_LLIST_HEAD(&mgcp->responses_pending);
|
||||
|
||||
mgcp->next_trans_id = 1;
|
||||
mgcp->next_endpoint = 1;
|
||||
|
||||
mgcp->actual.local_addr = conf->local_addr ? conf->local_addr :
|
||||
MGCPGW_CLIENT_LOCAL_ADDR_DEFAULT;
|
||||
mgcp->actual.local_port = conf->local_port >= 0 ? (uint16_t)conf->local_port :
|
||||
MGCPGW_CLIENT_LOCAL_PORT_DEFAULT;
|
||||
|
||||
mgcp->actual.remote_addr = conf->remote_addr ? conf->remote_addr :
|
||||
MGCPGW_CLIENT_REMOTE_ADDR_DEFAULT;
|
||||
mgcp->actual.remote_port = conf->remote_port >= 0 ? (uint16_t)conf->remote_port :
|
||||
MGCPGW_CLIENT_REMOTE_PORT_DEFAULT;
|
||||
|
||||
return mgcp;
|
||||
}
|
||||
|
||||
int mgcpgw_client_connect(struct mgcpgw_client *mgcp)
|
||||
{
|
||||
int on;
|
||||
struct sockaddr_in addr;
|
||||
struct osmo_wqueue *wq;
|
||||
int rc;
|
||||
|
||||
if (!mgcp) {
|
||||
LOGP(DMGCP, LOGL_FATAL, "MGCPGW client not initialized properly\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
wq = &mgcp->wq;
|
||||
|
||||
wq->bfd.fd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (wq->bfd.fd < 0) {
|
||||
LOGP(DMGCP, LOGL_FATAL, "Failed to create UDP socket errno: %d\n", errno);
|
||||
return -errno;
|
||||
}
|
||||
|
||||
on = 1;
|
||||
if (setsockopt(wq->bfd.fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) {
|
||||
LOGP(DMGCP, LOGL_FATAL,
|
||||
"Failed to initialize socket for MGCP GW: %s\n",
|
||||
strerror(errno));
|
||||
rc = -errno;
|
||||
goto error_close_fd;
|
||||
}
|
||||
|
||||
/* bind socket */
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
addr.sin_family = AF_INET;
|
||||
inet_aton(mgcp->actual.local_addr, &addr.sin_addr);
|
||||
addr.sin_port = htons(mgcp->actual.local_port);
|
||||
if (bind(wq->bfd.fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
|
||||
LOGP(DMGCP, LOGL_FATAL,
|
||||
"Failed to bind for MGCP GW to %s %u\n",
|
||||
mgcp->actual.local_addr, mgcp->actual.local_port);
|
||||
rc = -errno;
|
||||
goto error_close_fd;
|
||||
}
|
||||
|
||||
/* connect to the remote */
|
||||
inet_aton(mgcp->actual.remote_addr, &addr.sin_addr);
|
||||
addr.sin_port = htons(mgcp->actual.remote_port);
|
||||
if (connect(wq->bfd.fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
|
||||
LOGP(DMGCP, LOGL_FATAL,
|
||||
"Failed to connect to MGCP GW at %s %u: %s\n",
|
||||
mgcp->actual.remote_addr, mgcp->actual.remote_port,
|
||||
strerror(errno));
|
||||
rc = -errno;
|
||||
goto error_close_fd;
|
||||
}
|
||||
|
||||
mgcp->remote_addr = htonl(addr.sin_addr.s_addr);
|
||||
|
||||
osmo_wqueue_init(wq, 10);
|
||||
wq->bfd.when = BSC_FD_READ;
|
||||
wq->bfd.data = mgcp;
|
||||
wq->read_cb = mgcp_do_read;
|
||||
wq->write_cb = mgcp_do_write;
|
||||
|
||||
if (osmo_fd_register(&wq->bfd) != 0) {
|
||||
LOGP(DMGCP, LOGL_FATAL, "Failed to register BFD\n");
|
||||
rc = -EIO;
|
||||
goto error_close_fd;
|
||||
}
|
||||
LOGP(DMGCP, LOGL_INFO, "MGCP GW connection: %s:%u -> %s:%u\n",
|
||||
mgcp->actual.local_addr, mgcp->actual.local_port,
|
||||
mgcp->actual.remote_addr, mgcp->actual.remote_port);
|
||||
|
||||
return 0;
|
||||
error_close_fd:
|
||||
close(wq->bfd.fd);
|
||||
wq->bfd.fd = -1;
|
||||
return rc;
|
||||
}
|
||||
|
||||
const char *mgcpgw_client_remote_addr_str(struct mgcpgw_client *mgcp)
|
||||
{
|
||||
return mgcp->actual.remote_addr;
|
||||
}
|
||||
|
||||
uint16_t mgcpgw_client_remote_port(struct mgcpgw_client *mgcp)
|
||||
{
|
||||
return mgcp->actual.remote_port;
|
||||
}
|
||||
|
||||
/* Return the MGCP GW binary IPv4 address in network byte order. */
|
||||
uint32_t mgcpgw_client_remote_addr_n(struct mgcpgw_client *mgcp)
|
||||
{
|
||||
return mgcp->remote_addr;
|
||||
}
|
||||
|
||||
struct mgcp_response_pending * mgcpgw_client_pending_add(
|
||||
struct mgcpgw_client *mgcp,
|
||||
mgcp_trans_id_t trans_id,
|
||||
mgcp_response_cb_t response_cb,
|
||||
void *priv)
|
||||
{
|
||||
struct mgcp_response_pending *pending;
|
||||
|
||||
pending = talloc_zero(mgcp, struct mgcp_response_pending);
|
||||
pending->trans_id = trans_id;
|
||||
pending->response_cb = response_cb;
|
||||
pending->priv = priv;
|
||||
llist_add_tail(&pending->entry, &mgcp->responses_pending);
|
||||
|
||||
return pending;
|
||||
}
|
||||
|
||||
/* Send the MGCP message in msg to the MGCP GW and handle a response with
|
||||
* response_cb. NOTE: the response_cb still needs to call
|
||||
* mgcp_response_parse_params(response) to get the parsed parameters -- to
|
||||
* potentially save some CPU cycles, only the head line has been parsed when
|
||||
* the response_cb is invoked. */
|
||||
int mgcpgw_client_tx(struct mgcpgw_client *mgcp, struct msgb *msg,
|
||||
mgcp_response_cb_t response_cb, void *priv)
|
||||
{
|
||||
struct mgcp_response_pending *pending;
|
||||
mgcp_trans_id_t trans_id;
|
||||
int rc;
|
||||
|
||||
trans_id = msg->cb[MSGB_CB_MGCP_TRANS_ID];
|
||||
if (!trans_id) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Unset transaction id in mgcp send request\n");
|
||||
talloc_free(msg);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pending = mgcpgw_client_pending_add(mgcp, trans_id, response_cb, priv);
|
||||
|
||||
if (msgb_l2len(msg) > 4096) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Cannot send, MGCP message too large: %u\n",
|
||||
msgb_l2len(msg));
|
||||
msgb_free(msg);
|
||||
rc = -EINVAL;
|
||||
goto mgcp_tx_error;
|
||||
}
|
||||
|
||||
rc = osmo_wqueue_enqueue(&mgcp->wq, msg);
|
||||
if (rc) {
|
||||
LOGP(DMGCP, LOGL_FATAL, "Could not queue message to MGCP GW\n");
|
||||
msgb_free(msg);
|
||||
goto mgcp_tx_error;
|
||||
} else
|
||||
LOGP(DMGCP, LOGL_INFO, "Queued %u bytes for MGCP GW\n",
|
||||
msgb_l2len(msg));
|
||||
return 0;
|
||||
|
||||
mgcp_tx_error:
|
||||
/* Pass NULL to response cb to indicate an error */
|
||||
mgcpgw_client_handle_response(mgcp, pending, NULL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static struct msgb *mgcp_msg_from_buf(mgcp_trans_id_t trans_id,
|
||||
const char *buf, int len)
|
||||
{
|
||||
struct msgb *msg;
|
||||
|
||||
if (len > (4096 - 128)) {
|
||||
LOGP(DMGCP, LOGL_ERROR, "Cannot send to MGCP GW:"
|
||||
" message too large: %d\n", len);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
msg = msgb_alloc_headroom(4096, 128, "MGCP tx");
|
||||
OSMO_ASSERT(msg);
|
||||
|
||||
char *dst = (char*)msgb_put(msg, len);
|
||||
memcpy(dst, buf, len);
|
||||
msg->l2h = msg->data;
|
||||
msg->cb[MSGB_CB_MGCP_TRANS_ID] = trans_id;
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
static struct msgb *mgcp_msg_from_str(mgcp_trans_id_t trans_id,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
static char compose[4096 - 128];
|
||||
va_list ap;
|
||||
int len;
|
||||
OSMO_ASSERT(fmt);
|
||||
|
||||
va_start(ap, fmt);
|
||||
len = vsnprintf(compose, sizeof(compose), fmt, ap);
|
||||
va_end(ap);
|
||||
if (len >= sizeof(compose)) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Message too large: trans_id=%u len=%d\n",
|
||||
trans_id, len);
|
||||
return NULL;
|
||||
}
|
||||
if (len < 1) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Failed to compose message: trans_id=%u len=%d\n",
|
||||
trans_id, len);
|
||||
return NULL;
|
||||
}
|
||||
return mgcp_msg_from_buf(trans_id, compose, len);
|
||||
}
|
||||
|
||||
static mgcp_trans_id_t mgcpgw_client_next_trans_id(struct mgcpgw_client *mgcp)
|
||||
{
|
||||
/* avoid zero trans_id to distinguish from unset trans_id */
|
||||
if (!mgcp->next_trans_id)
|
||||
mgcp->next_trans_id ++;
|
||||
return mgcp->next_trans_id ++;
|
||||
}
|
||||
|
||||
struct msgb *mgcp_msg_crcx(struct mgcpgw_client *mgcp,
|
||||
uint16_t rtp_endpoint, unsigned int call_id,
|
||||
enum mgcp_connection_mode mode)
|
||||
{
|
||||
mgcp_trans_id_t trans_id = mgcpgw_client_next_trans_id(mgcp);
|
||||
return mgcp_msg_from_str(trans_id,
|
||||
"CRCX %u %x@mgw MGCP 1.0\r\n"
|
||||
"C: %x\r\n"
|
||||
"L: p:20, a:AMR, nt:IN\r\n"
|
||||
"M: %s\r\n"
|
||||
,
|
||||
trans_id,
|
||||
rtp_endpoint,
|
||||
call_id,
|
||||
mgcp_cmode_name(mode));
|
||||
}
|
||||
|
||||
struct msgb *mgcp_msg_mdcx(struct mgcpgw_client *mgcp,
|
||||
uint16_t rtp_endpoint, const char *rtp_conn_addr,
|
||||
uint16_t rtp_port, enum mgcp_connection_mode mode)
|
||||
|
||||
{
|
||||
mgcp_trans_id_t trans_id = mgcpgw_client_next_trans_id(mgcp);
|
||||
return mgcp_msg_from_str(trans_id,
|
||||
"MDCX %u %x@mgw MGCP 1.0\r\n"
|
||||
"M: %s\r\n"
|
||||
"\r\n"
|
||||
"c=IN IP4 %s\r\n"
|
||||
"m=audio %u RTP/AVP 255\r\n"
|
||||
,
|
||||
trans_id,
|
||||
rtp_endpoint,
|
||||
mgcp_cmode_name(mode),
|
||||
rtp_conn_addr,
|
||||
rtp_port);
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
/* MGCPGW client interface to quagga VTY */
|
||||
/* (C) 2016 by sysmocom s.m.f.c. GmbH <info@sysmocom.de>
|
||||
* Based on OpenBSC interface to quagga VTY (libmsc/vty_interface_layer3.c)
|
||||
* (C) 2009 by Harald Welte <laforge@gnumonks.org>
|
||||
* (C) 2009-2011 by Holger Hans Peter Freyther
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdlib.h>
|
||||
#include <talloc.h>
|
||||
|
||||
#include <osmocom/vty/command.h>
|
||||
|
||||
#include <openbsc/vty.h>
|
||||
#include <openbsc/mgcpgw_client.h>
|
||||
|
||||
#define MGCPGW_STR "MGCP gateway configuration for RTP streams\n"
|
||||
|
||||
struct mgcpgw_client_conf *global_mgcpgw_client_conf = NULL;
|
||||
|
||||
DEFUN(cfg_mgcpgw_local_ip, cfg_mgcpgw_local_ip_cmd,
|
||||
"mgcpgw local-ip A.B.C.D",
|
||||
MGCPGW_STR "local bind to connect to MGCP gateway with\n"
|
||||
"local bind IP address\n")
|
||||
{
|
||||
if (!global_mgcpgw_client_conf)
|
||||
return CMD_ERR_NOTHING_TODO;
|
||||
global_mgcpgw_client_conf->local_addr =
|
||||
talloc_strdup(gsmnet_from_vty(vty), argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_mgcpgw_local_port, cfg_mgcpgw_local_port_cmd,
|
||||
"mgcpgw local-port <0-65535>",
|
||||
MGCPGW_STR "local bind to connect to MGCP gateway with\n"
|
||||
"local bind port\n")
|
||||
{
|
||||
if (!global_mgcpgw_client_conf)
|
||||
return CMD_ERR_NOTHING_TODO;
|
||||
global_mgcpgw_client_conf->local_port = atoi(argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_mgcpgw_remote_ip, cfg_mgcpgw_remote_ip_cmd,
|
||||
"mgcpgw remote-ip A.B.C.D",
|
||||
MGCPGW_STR "remote bind to connect to MGCP gateway with\n"
|
||||
"remote bind IP address\n")
|
||||
{
|
||||
if (!global_mgcpgw_client_conf)
|
||||
return CMD_ERR_NOTHING_TODO;
|
||||
global_mgcpgw_client_conf->remote_addr =
|
||||
talloc_strdup(gsmnet_from_vty(vty), argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_mgcpgw_remote_port, cfg_mgcpgw_remote_port_cmd,
|
||||
"mgcpgw remote-port <0-65535>",
|
||||
MGCPGW_STR "remote bind to connect to MGCP gateway with\n"
|
||||
"remote bind port\n")
|
||||
{
|
||||
if (!global_mgcpgw_client_conf)
|
||||
return CMD_ERR_NOTHING_TODO;
|
||||
global_mgcpgw_client_conf->remote_port = atoi(argv[0]);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int mgcpgw_client_config_write(struct vty *vty, const char *indent)
|
||||
{
|
||||
const char *addr;
|
||||
int port;
|
||||
|
||||
addr = global_mgcpgw_client_conf->local_addr;
|
||||
if (addr)
|
||||
vty_out(vty, "%smgcpgw local-ip %s%s", indent, addr,
|
||||
VTY_NEWLINE);
|
||||
port = global_mgcpgw_client_conf->local_port;
|
||||
if (port >= 0)
|
||||
vty_out(vty, "%smgcpgw local-port %u%s", indent,
|
||||
(uint16_t)port, VTY_NEWLINE);
|
||||
|
||||
addr = global_mgcpgw_client_conf->remote_addr;
|
||||
if (addr)
|
||||
vty_out(vty, "%smgcpgw remote-ip %s%s", indent, addr,
|
||||
VTY_NEWLINE);
|
||||
port = global_mgcpgw_client_conf->remote_port;
|
||||
if (port >= 0)
|
||||
vty_out(vty, "%smgcpgw remote-port %u%s", indent,
|
||||
(uint16_t)port, VTY_NEWLINE);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
void mgcpgw_client_vty_init(int node, struct mgcpgw_client_conf *conf)
|
||||
{
|
||||
global_mgcpgw_client_conf = conf;
|
||||
|
||||
install_element(node, &cfg_mgcpgw_local_ip_cmd);
|
||||
install_element(node, &cfg_mgcpgw_local_port_cmd);
|
||||
install_element(node, &cfg_mgcpgw_remote_ip_cmd);
|
||||
install_element(node, &cfg_mgcpgw_remote_port_cmd);
|
||||
}
|
|
@ -12,6 +12,7 @@ AM_CFLAGS = \
|
|||
$(COVERAGE_CFLAGS) \
|
||||
$(LIBCRYPTO_CFLAGS) \
|
||||
$(LIBSMPP34_CFLAGS) \
|
||||
$(LIBASN1C_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
noinst_HEADERS = \
|
||||
|
@ -25,11 +26,14 @@ noinst_LIBRARIES = \
|
|||
libmsc_a_SOURCES = \
|
||||
a_iface.c \
|
||||
auth.c \
|
||||
msc_vty.c \
|
||||
db.c \
|
||||
gsm_04_08.c \
|
||||
gsm_04_11.c \
|
||||
gsm_04_80.c \
|
||||
gsm_subscriber.c \
|
||||
iucs.c \
|
||||
iucs_ranap.c \
|
||||
mncc.c \
|
||||
mncc_builtin.c \
|
||||
mncc_sock.c \
|
||||
|
@ -45,6 +49,11 @@ libmsc_a_SOURCES = \
|
|||
meas_feed.c \
|
||||
subscr_conn.c \
|
||||
$(NULL)
|
||||
if !BUILD_IU
|
||||
libmsc_a_SOURCES += \
|
||||
iu_dummy.c \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
if BUILD_SMPP
|
||||
noinst_HEADERS += \
|
||||
|
|
|
@ -35,6 +35,14 @@ int a_tx(struct msgb *msg)
|
|||
return -1;
|
||||
}
|
||||
|
||||
int a_page(const char *imsi, uint32_t tmsi, uint16_t lac)
|
||||
{
|
||||
LOGP(DMSC, LOGL_ERROR, "Paging to be sent to BSC, but A-interface"
|
||||
" not implemented: IMSI %s TMSI 0x%08x LAC %u\n",
|
||||
imsi, tmsi, lac);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int msc_gsm0808_tx_cipher_mode(struct gsm_subscriber_connection *conn, int cipher,
|
||||
const uint8_t *key, int len, int include_imeisv)
|
||||
{
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include <netinet/in.h>
|
||||
#include <regex.h>
|
||||
#include <sys/types.h>
|
||||
#include <openssl/rand.h>
|
||||
|
||||
#include "bscconfig.h"
|
||||
|
||||
|
@ -69,6 +70,13 @@
|
|||
#include <osmocom/core/talloc.h>
|
||||
#include <osmocom/core/utils.h>
|
||||
#include <osmocom/gsm/tlv.h>
|
||||
#include <osmocom/crypt/auth.h>
|
||||
|
||||
#include <openbsc/msc_ifaces.h>
|
||||
|
||||
#ifdef BUILD_IU
|
||||
#include <openbsc/iu.h>
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
|
@ -105,7 +113,7 @@ static int gsm48_conn_sendmsg(struct msgb *msg, struct gsm_subscriber_connection
|
|||
gh->proto_discr = trans->protocol | (trans->transaction_id << 4);
|
||||
}
|
||||
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
||||
int gsm48_cc_tx_notify_ss(struct gsm_trans *trans, const char *message)
|
||||
|
@ -141,7 +149,7 @@ void gsm0408_clear_all_trans(struct gsm_network *net, int protocol)
|
|||
}
|
||||
|
||||
/* Chapter 9.2.14 : Send LOCATION UPDATING REJECT */
|
||||
int gsm0408_loc_upd_rej(struct gsm_subscriber_connection *conn, uint8_t cause)
|
||||
static int gsm0408_loc_upd_rej(struct gsm_subscriber_connection *conn, uint8_t cause)
|
||||
{
|
||||
struct msgb *msg;
|
||||
|
||||
|
@ -184,12 +192,17 @@ static int gsm0408_loc_upd_acc(struct gsm_subscriber_connection *conn,
|
|||
len = gsm48_generate_mid_from_imsi(mi, conn->vsub->imsi);
|
||||
mid = msgb_put(msg, len);
|
||||
memcpy(mid, mi, len);
|
||||
DEBUGP(DMM, "-> %s LOCATION UPDATE ACCEPT\n",
|
||||
vlr_subscr_name(conn->vsub));
|
||||
} else {
|
||||
/* Include the TMSI, which means that the MS will send a
|
||||
* TMSI REALLOCATION COMPLETE, and we should wait for
|
||||
* that until T3250 expiration */
|
||||
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),
|
||||
send_tmsi);
|
||||
}
|
||||
/* TODO: Follow-on proceed */
|
||||
/* TODO: CTS permission */
|
||||
|
@ -197,7 +210,6 @@ static int gsm0408_loc_upd_acc(struct gsm_subscriber_connection *conn,
|
|||
/* TODO: Emergency Number List */
|
||||
/* TODO: Per-MS T3312 */
|
||||
|
||||
DEBUGP(DMM, "-> LOCATION UPDATE ACCEPT\n");
|
||||
|
||||
return gsm48_conn_sendmsg(msg, conn, NULL);
|
||||
}
|
||||
|
@ -257,11 +269,11 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
|||
uint8_t mi_type;
|
||||
char mi_string[GSM48_MI_SIZE];
|
||||
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_fsm_inst *lu_fsm;
|
||||
bool is_utran;
|
||||
int rc;
|
||||
|
||||
lu = (struct gsm48_loc_upd_req *) gh->data;
|
||||
|
@ -327,16 +339,18 @@ int mm_rx_loc_upd_req(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
|||
new_lai.lac = conn->lac;
|
||||
DEBUGP(DMM, "LU/new-LAC: %u/%u\n", old_lai.lac, new_lai.lac);
|
||||
|
||||
is_utran = (conn->via_ran == RAN_UTRAN_IU);
|
||||
lu_fsm = vlr_loc_update(conn->conn_fsm,
|
||||
SUBSCR_CONN_E_ACCEPTED,
|
||||
SUBSCR_CONN_E_CN_CLOSE,
|
||||
(void*)&conn_from_lu,
|
||||
net->vlr, conn, vlr_lu_type, tmsi, imsi,
|
||||
&old_lai, &new_lai,
|
||||
conn->network->authentication_required,
|
||||
conn->network->a5_encryption,
|
||||
is_utran || conn->network->authentication_required,
|
||||
is_utran? VLR_CIPH_A5_3
|
||||
: conn->network->a5_encryption,
|
||||
classmark_is_r99(&conn->classmark),
|
||||
conn->via_ran == RAN_UTRAN_IU,
|
||||
is_utran,
|
||||
net->vlr->cfg.assign_tmsi);
|
||||
if (!lu_fsm) {
|
||||
DEBUGP(DRR, "%s: Can't start LU FSM\n", mi_string);
|
||||
|
@ -629,6 +643,7 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms
|
|||
uint8_t mi_len = *(classmark2 + classmark2_len);
|
||||
uint8_t *mi = (classmark2 + classmark2_len + 1);
|
||||
struct osmo_location_area_id lai;
|
||||
bool is_utran;
|
||||
int rc;
|
||||
|
||||
lai.plmn.mcc = conn->network->country_code;
|
||||
|
@ -685,16 +700,18 @@ int gsm48_rx_mm_serv_req(struct gsm_subscriber_connection *conn, struct msgb *ms
|
|||
return rc;
|
||||
}
|
||||
|
||||
is_utran = (conn->via_ran == RAN_UTRAN_IU);
|
||||
vlr_proc_acc_req(conn->conn_fsm,
|
||||
SUBSCR_CONN_E_ACCEPTED,
|
||||
SUBSCR_CONN_E_CN_CLOSE,
|
||||
(void*)&conn_from_cm_service_req,
|
||||
net->vlr, conn,
|
||||
VLR_PR_ARQ_T_CM_SERV_REQ, mi-1, &lai,
|
||||
conn->network->authentication_required,
|
||||
conn->network->a5_encryption,
|
||||
is_utran || conn->network->authentication_required,
|
||||
is_utran? VLR_CIPH_A5_3
|
||||
: conn->network->a5_encryption,
|
||||
classmark_is_r99(&conn->classmark),
|
||||
conn->via_ran == RAN_UTRAN_IU);
|
||||
is_utran);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1038,6 +1055,7 @@ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct m
|
|||
char mi_string[GSM48_MI_SIZE];
|
||||
int rc = 0;
|
||||
struct osmo_location_area_id lai;
|
||||
bool is_utran;
|
||||
|
||||
lai.plmn.mcc = conn->network->country_code;
|
||||
lai.plmn.mnc = conn->network->network_code;
|
||||
|
@ -1063,18 +1081,20 @@ static int gsm48_rx_rr_pag_resp(struct gsm_subscriber_connection *conn, struct m
|
|||
memcpy(conn->classmark.classmark2, classmark2_lv+1, *classmark2_lv);
|
||||
conn->classmark.classmark2_len = *classmark2_lv;
|
||||
|
||||
is_utran = (conn->via_ran == RAN_UTRAN_IU);
|
||||
vlr_proc_acc_req(conn->conn_fsm,
|
||||
SUBSCR_CONN_E_ACCEPTED,
|
||||
SUBSCR_CONN_E_CN_CLOSE,
|
||||
(void*)&conn_from_paging_resp,
|
||||
net->vlr, conn,
|
||||
VLR_PR_ARQ_T_PAGING_RESP, mi_lv, &lai,
|
||||
conn->network->authentication_required,
|
||||
conn->network->a5_encryption,
|
||||
is_utran || conn->network->authentication_required,
|
||||
is_utran? VLR_CIPH_A5_3
|
||||
: conn->network->a5_encryption,
|
||||
classmark_is_r99(&conn->classmark),
|
||||
conn->via_ran == RAN_UTRAN_IU);
|
||||
is_utran);
|
||||
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int gsm48_rx_rr_app_info(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
||||
|
@ -1365,8 +1385,7 @@ static int tch_bridge(struct gsm_network *net, struct gsm_mncc_bridge *bridge)
|
|||
/* Which subscriber do we want to track trans1 or trans2? */
|
||||
log_set_context(LOG_CTX_VLR_SUBSCR, trans1->vsub);
|
||||
|
||||
/* future: msc_call_bridge(trans1, trans2); */
|
||||
return -1;
|
||||
return msc_call_bridge(trans1, trans2);
|
||||
}
|
||||
|
||||
static int gsm48_cc_rx_status_enq(struct gsm_trans *trans, struct msgb *msg)
|
||||
|
@ -1694,15 +1713,18 @@ static int gsm48_cc_rx_call_conf(struct gsm_trans *trans, struct msgb *msg)
|
|||
|
||||
new_cc_state(trans, GSM_CSTATE_MO_TERM_CALL_CONF);
|
||||
|
||||
msc_call_assignment(trans);
|
||||
|
||||
return mncc_recvmsg(trans->net, trans, MNCC_CALL_CONF_IND,
|
||||
&call_conf);
|
||||
}
|
||||
|
||||
static int gsm48_cc_tx_call_proc(struct gsm_trans *trans, void *arg)
|
||||
static int gsm48_cc_tx_call_proc_and_assign(struct gsm_trans *trans, void *arg)
|
||||
{
|
||||
struct gsm_mncc *proceeding = arg;
|
||||
struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 CC PROC");
|
||||
struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
|
||||
int rc;
|
||||
|
||||
gh->msg_type = GSM48_MT_CC_CALL_PROC;
|
||||
|
||||
|
@ -1718,7 +1740,11 @@ static int gsm48_cc_tx_call_proc(struct gsm_trans *trans, void *arg)
|
|||
if (proceeding->fields & MNCC_F_PROGRESS)
|
||||
gsm48_encode_progress(msg, 0, &proceeding->progress);
|
||||
|
||||
return gsm48_conn_sendmsg(msg, trans->conn, trans);
|
||||
rc = gsm48_conn_sendmsg(msg, trans->conn, trans);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
return msc_call_assignment(trans);
|
||||
}
|
||||
|
||||
static int gsm48_cc_rx_alerting(struct gsm_trans *trans, struct msgb *msg)
|
||||
|
@ -2555,7 +2581,7 @@ static struct downstate {
|
|||
} downstatelist[] = {
|
||||
/* mobile originating call establishment */
|
||||
{SBIT(GSM_CSTATE_INITIATED), /* 5.2.1.2 */
|
||||
MNCC_CALL_PROC_REQ, gsm48_cc_tx_call_proc},
|
||||
MNCC_CALL_PROC_REQ, gsm48_cc_tx_call_proc_and_assign},
|
||||
{SBIT(GSM_CSTATE_INITIATED) | SBIT(GSM_CSTATE_MO_CALL_PROC), /* 5.2.1.2 | 5.2.1.5 */
|
||||
MNCC_ALERT_REQ, gsm48_cc_tx_alerting},
|
||||
{SBIT(GSM_CSTATE_INITIATED) | SBIT(GSM_CSTATE_MO_CALL_PROC) | SBIT(GSM_CSTATE_CALL_DELIVERED), /* 5.2.1.2 | 5.2.1.6 | 5.2.1.6 */
|
||||
|
@ -2732,15 +2758,15 @@ int mncc_tx_to_cc(struct gsm_network *net, int msg_type, void *arg)
|
|||
trans_free(trans);
|
||||
return 0;
|
||||
}
|
||||
/* store setup informations until paging was successfull */
|
||||
/* store setup information until paging succeeds */
|
||||
memcpy(&trans->cc.msg, data, sizeof(struct gsm_mncc));
|
||||
|
||||
/* Request a channel */
|
||||
trans->paging_request = subscr_request_conn(
|
||||
vsub,
|
||||
RSL_CHANNEED_TCH_F,
|
||||
setup_trig_pag_evt,
|
||||
trans);
|
||||
trans,
|
||||
"MNCC: establish call");
|
||||
if (!trans->paging_request) {
|
||||
LOGP(DCC, LOGL_ERROR, "Failed to allocate paging token.\n");
|
||||
vlr_subscr_put(vsub);
|
||||
|
@ -3007,6 +3033,16 @@ int gsm0408_dispatch(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
|||
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),
|
||||
ran_type_name(conn->vsub->cs.attached_via_ran),
|
||||
ran_type_name(conn->via_ran));
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (silent_call_reroute(conn, msg))
|
||||
return silent_call_rx(conn, msg);
|
||||
|
@ -3090,7 +3126,13 @@ static int msc_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause)
|
|||
static int msc_vlr_tx_cm_serv_acc(void *msc_conn_ref)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn = msc_conn_ref;
|
||||
return gsm48_tx_mm_serv_ack(conn);
|
||||
return msc_gsm48_tx_mm_serv_ack(conn);
|
||||
}
|
||||
|
||||
static int msc_vlr_tx_common_id(void *msc_conn_ref)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn = msc_conn_ref;
|
||||
return msc_tx_common_id(conn);
|
||||
}
|
||||
|
||||
/* VLR asks us to transmit a CM Service Reject */
|
||||
|
@ -3124,7 +3166,7 @@ static int msc_vlr_tx_cm_serv_rej(void *msc_conn_ref, enum vlr_proc_arq_result r
|
|||
break;
|
||||
};
|
||||
|
||||
return gsm48_tx_mm_serv_rej(conn, cause);
|
||||
return msc_gsm48_tx_mm_serv_rej(conn, cause);
|
||||
}
|
||||
|
||||
/* VLR asks us to start using ciphering */
|
||||
|
@ -3152,9 +3194,47 @@ static int msc_vlr_set_ciph_mode(void *msc_conn_ref,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* TODO: MSCSPLIT: don't directly push BSC buttons */
|
||||
return gsm0808_cipher_mode(conn, ciph, tuple->vec.kc, 8,
|
||||
retrieve_imeisv);
|
||||
switch (conn->via_ran) {
|
||||
case RAN_GERAN_A:
|
||||
DEBUGP(DMM, "-> CIPHER MODE COMMAND %s\n",
|
||||
vlr_subscr_name(conn->vsub));
|
||||
return msc_gsm0808_tx_cipher_mode(conn, ciph, tuple->vec.kc, 8,
|
||||
retrieve_imeisv);
|
||||
case RAN_UTRAN_IU:
|
||||
#ifdef BUILD_IU
|
||||
DEBUGP(DMM, "-> SECURITY MODE CONTROL %s\n",
|
||||
vlr_subscr_name(conn->vsub));
|
||||
return iu_tx_sec_mode_cmd(conn->iu.ue_ctx, tuple, 0, 1);
|
||||
#else
|
||||
LOGP(DMM, LOGL_ERROR, "Cannot send Security Mode Control over RAN_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 msc_rx_sec_mode_compl(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/* VLR informs us that the subscriber data has somehow been modified */
|
||||
|
@ -3170,6 +3250,7 @@ static void msc_vlr_subscr_assoc(void *msc_conn_ref,
|
|||
struct gsm_subscriber_connection *conn = msc_conn_ref;
|
||||
OSMO_ASSERT(!conn->vsub);
|
||||
conn->vsub = vlr_subscr_get(vsub);
|
||||
conn->vsub->cs.attached_via_ran = conn->via_ran;
|
||||
}
|
||||
|
||||
/* operations that we need to implement for libvlr */
|
||||
|
@ -3182,6 +3263,7 @@ static const struct vlr_ops msc_vlr_ops = {
|
|||
.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,
|
||||
.tx_common_id = msc_vlr_tx_common_id,
|
||||
.subscr_update = msc_vlr_subscr_update,
|
||||
.subscr_assoc = msc_vlr_subscr_assoc,
|
||||
};
|
||||
|
@ -3203,19 +3285,3 @@ int msc_vlr_start(struct gsm_network *net)
|
|||
return vlr_start("MSC", net->vlr, net->gsup_server_addr_str,
|
||||
net->gsup_server_port);
|
||||
}
|
||||
|
||||
/* This is a temporary shim merely to ensure that the unit tests still work. It
|
||||
* shall be removed as soon as Iu and A interface paging is implemented. */
|
||||
int msc_fake_paging_request(struct vlr_subscr *vsub)
|
||||
{
|
||||
LOGP(DMM, LOGL_ERROR, "Paging currently not implemented in the MSC.\n");
|
||||
OSMO_ASSERT(false);
|
||||
}
|
||||
|
||||
/* This is a temporary shim merely to ensure that the unit tests still work. It
|
||||
* shall be removed as soon as Iu and A interface paging is implemented. */
|
||||
void msc_fake_paging_request_stop(struct vlr_subscr *vsub)
|
||||
{
|
||||
LOGP(DMM, LOGL_ERROR, "Paging currently not implemented in the MSC.\n");
|
||||
OSMO_ASSERT(false);
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
#include <openbsc/paging.h>
|
||||
#include <openbsc/bsc_rll.h>
|
||||
#include <openbsc/chan_alloc.h>
|
||||
#include <openbsc/bsc_api.h>
|
||||
#include <openbsc/msc_ifaces.h>
|
||||
#include <openbsc/osmo_msc.h>
|
||||
#include <openbsc/vlr.h>
|
||||
|
||||
|
@ -128,7 +128,7 @@ static int gsm411_sendmsg(struct gsm_subscriber_connection *conn, struct msgb *m
|
|||
{
|
||||
DEBUGP(DLSMS, "GSM4.11 TX %s\n", osmo_hexdump(msg->data, msg->len));
|
||||
msg->l3h = msg->data;
|
||||
return gsm0808_submit_dtap(conn, msg, UM_SAPI_SMS, 1);
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
||||
/* Prefix msg with a 04.08/04.11 CP header */
|
||||
|
@ -1016,8 +1016,7 @@ int gsm411_send_sms_subscr(struct vlr_subscr *vsub,
|
|||
/* if not, we have to start paging */
|
||||
LOGP(DLSMS, LOGL_DEBUG, "Sending SMS: no connection open, start paging %s\n",
|
||||
vlr_subscr_name(vsub));
|
||||
res = subscr_request_conn(vsub, RSL_CHANNEED_SDCCH, paging_cb_send_sms,
|
||||
sms);
|
||||
res = subscr_request_conn(vsub, paging_cb_send_sms, sms, "send SMS");
|
||||
if (!res) {
|
||||
send_signal(S_SMS_UNKNOWN_ERROR, NULL, sms, GSM_PAGING_BUSY);
|
||||
sms_free(sms);
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/gsm_04_08.h>
|
||||
#include <openbsc/gsm_04_80.h>
|
||||
#include <openbsc/bsc_api.h>
|
||||
#include <openbsc/msc_ifaces.h>
|
||||
|
||||
#include <osmocom/gsm/gsm0480.h>
|
||||
#include <osmocom/gsm/gsm_utils.h>
|
||||
|
@ -106,7 +106,7 @@ int gsm0480_send_ussd_response(struct gsm_subscriber_connection *conn,
|
|||
| (1<<7); /* TI direction = 1 */
|
||||
gh->msg_type = GSM0480_MTYPE_RELEASE_COMPLETE;
|
||||
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
||||
int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn,
|
||||
|
@ -135,7 +135,7 @@ int gsm0480_send_ussd_reject(struct gsm_subscriber_connection *conn,
|
|||
gh->proto_discr |= req->transaction_id | (1<<7); /* TI direction = 1 */
|
||||
gh->msg_type = GSM0480_MTYPE_RELEASE_COMPLETE;
|
||||
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
||||
int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, const char *text)
|
||||
|
@ -143,7 +143,7 @@ int msc_send_ussd_notify(struct gsm_subscriber_connection *conn, int level, cons
|
|||
struct msgb *msg = gsm0480_create_ussd_notify(level, text);
|
||||
if (!msg)
|
||||
return -1;
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
||||
int msc_send_ussd_release_complete(struct gsm_subscriber_connection *conn)
|
||||
|
@ -151,5 +151,5 @@ int msc_send_ussd_release_complete(struct gsm_subscriber_connection *conn)
|
|||
struct msgb *msg = gsm0480_create_ussd_release_complete();
|
||||
if (!msg)
|
||||
return -1;
|
||||
return gsm0808_submit_dtap(conn, msg, 0, 0);
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
|
|
@ -40,6 +40,9 @@
|
|||
#include <openbsc/db.h>
|
||||
#include <openbsc/chan_alloc.h>
|
||||
#include <openbsc/vlr.h>
|
||||
#include <openbsc/iu.h>
|
||||
#include <openbsc/osmo_msc.h>
|
||||
#include <openbsc/msc_ifaces.h>
|
||||
|
||||
int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
|
||||
struct msgb *msg, void *data, void *param)
|
||||
|
@ -49,27 +52,41 @@ int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
|
|||
struct vlr_subscr *vsub = param;
|
||||
struct paging_signal_data sig_data;
|
||||
|
||||
OSMO_ASSERT(vsub && vsub->cs.is_paging);
|
||||
OSMO_ASSERT(vsub);
|
||||
OSMO_ASSERT(hooknum == GSM_HOOK_RR_PAGING);
|
||||
OSMO_ASSERT(!(conn && (conn->vsub != vsub)));
|
||||
OSMO_ASSERT(!((event == GSM_PAGING_SUCCEEDED) && !conn));
|
||||
|
||||
/* FIXME: implement stop paging in libmsc;
|
||||
* faking it for the unit tests to still work */
|
||||
msc_fake_paging_request_stop(vsub);
|
||||
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;
|
||||
}
|
||||
|
||||
if (event == GSM_PAGING_SUCCEEDED)
|
||||
msc_stop_paging(vsub);
|
||||
|
||||
/* Inform parts of the system we don't know */
|
||||
sig_data.vsub = vsub;
|
||||
sig_data.bts = conn ? conn->bts : NULL;
|
||||
sig_data.conn = conn;
|
||||
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
|
||||
);
|
||||
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);
|
||||
request->cbfn(hooknum, event, msg, data, request->param);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -79,21 +96,48 @@ int subscr_paging_dispatch(unsigned int hooknum, unsigned int event,
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub, int channel_type, gsm_cbfn *cbfn,
|
||||
void *param)
|
||||
int msc_paging_request(struct vlr_subscr *vsub)
|
||||
{
|
||||
/* 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). */
|
||||
/* TODO Implementing only RNC paging, since this is code on the iu branch.
|
||||
* Need to add BSC paging at some point. */
|
||||
switch (vsub->cs.attached_via_ran) {
|
||||
case RAN_GERAN_A:
|
||||
return a_page(vsub->imsi, vsub->tmsi, vsub->lac);
|
||||
case RAN_UTRAN_IU:
|
||||
return iu_page_cs(vsub->imsi,
|
||||
vsub->tmsi == GSM_RESERVED_TMSI?
|
||||
NULL : &vsub->tmsi,
|
||||
vsub->lac);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
LOGP(DPAG, LOGL_ERROR, "%s: Cannot page, subscriber not attached\n",
|
||||
vlr_subscr_name(vsub));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*! \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.
|
||||
*/
|
||||
struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub,
|
||||
gsm_cbfn *cbfn, void *param,
|
||||
const char *label)
|
||||
{
|
||||
int rc;
|
||||
struct subscr_request *request;
|
||||
|
||||
/* 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.\n",
|
||||
LOGP(DMM, LOGL_DEBUG, "Subscriber %s not paged yet, start paging.\n",
|
||||
vlr_subscr_name(vsub));
|
||||
|
||||
/* FIXME: implement paging in libmsc;
|
||||
* faking it for the unit tests to still work */
|
||||
rc = msc_fake_paging_request(vsub);
|
||||
|
||||
rc = msc_paging_request(vsub);
|
||||
if (rc <= 0) {
|
||||
LOGP(DMM, LOGL_ERROR, "Subscriber %s paging failed: %d\n",
|
||||
vlr_subscr_name(vsub), rc);
|
||||
|
@ -102,6 +146,9 @@ struct subscr_request *subscr_request_conn(struct vlr_subscr *vsub, int channel_
|
|||
/* reduced on the first paging callback */
|
||||
vlr_subscr_get(vsub);
|
||||
vsub->cs.is_paging = true;
|
||||
} else {
|
||||
LOGP(DMM, LOGL_DEBUG, "Subscriber %s already paged.\n",
|
||||
vlr_subscr_name(vsub));
|
||||
}
|
||||
|
||||
/* TODO: Stop paging in case of memory allocation failure */
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
/* 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 <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <osmocom/core/logging.h>
|
||||
#include <osmocom/vty/logging.h>
|
||||
#include <osmocom/core/msgb.h>
|
||||
|
||||
struct msgb;
|
||||
struct ue_conn_ctx;
|
||||
struct gsm_auth_tuple;
|
||||
struct RANAP_Cause;
|
||||
|
||||
int 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 iu_tx_sec_mode_cmd(struct ue_conn_ctx *uectx, struct gsm_auth_tuple *tp,
|
||||
int send_ck)
|
||||
{
|
||||
LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_sec_mode_cmd() dummy called, NOT transmitting Security Mode Command\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int 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 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 iu_rab_act(struct ue_conn_ctx *ue_ctx, struct msgb *msg)
|
||||
{
|
||||
LOGP(DLGLOBAL, LOGL_INFO, "iu_rab_act() dummy called, NOT activating RAB\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int iu_tx_common_id(struct ue_conn_ctx *uectx, const char *imsi)
|
||||
{
|
||||
LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_common_id() dummy called, NOT sending CommonID\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
|
||||
{
|
||||
LOGP(DLGLOBAL, LOGL_INFO, "iu_tx_release() dummy called, NOT sending Release\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,191 @@
|
|||
/* Code to manage MSC subscriber 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 <openbsc/debug.h>
|
||||
|
||||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/iu.h>
|
||||
#include <openbsc/gsm_subscriber.h>
|
||||
#include <openbsc/osmo_msc.h>
|
||||
#include <openbsc/vlr.h>
|
||||
|
||||
/* For A-interface see libbsc/bsc_api.c subscr_con_allocate() */
|
||||
static struct gsm_subscriber_connection *subscr_conn_allocate_iu(struct gsm_network *network,
|
||||
struct ue_conn_ctx *ue,
|
||||
uint16_t lac)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn;
|
||||
|
||||
DEBUGP(DIUCS, "Allocating IuCS subscriber conn: lac %d, link_id %p, conn_id %" PRIx32 "\n",
|
||||
lac, ue->link, ue->conn_id);
|
||||
|
||||
conn = talloc_zero(network, struct gsm_subscriber_connection);
|
||||
if (!conn)
|
||||
return NULL;
|
||||
|
||||
conn->network = network;
|
||||
conn->via_ran = RAN_UTRAN_IU;
|
||||
conn->iu.ue_ctx = ue;
|
||||
conn->iu.ue_ctx->rab_assign_addr_enc = network->iu.rab_assign_addr_enc;
|
||||
conn->lac = lac;
|
||||
|
||||
llist_add_tail(&conn->entry, &network->subscr_conns);
|
||||
return conn;
|
||||
}
|
||||
|
||||
static int same_ue_conn(struct ue_conn_ctx *a, struct ue_conn_ctx *b)
|
||||
{
|
||||
if (a == b)
|
||||
return 1;
|
||||
return (a->link == b->link)
|
||||
&& (a->conn_id == b->conn_id);
|
||||
}
|
||||
|
||||
static inline void log_subscribers(struct gsm_network *network)
|
||||
{
|
||||
if (!log_check_level(DIUCS, LOGL_DEBUG))
|
||||
return;
|
||||
|
||||
struct gsm_subscriber_connection *conn;
|
||||
int i = 0;
|
||||
llist_for_each_entry(conn, &network->subscr_conns, entry) {
|
||||
DEBUGP(DIUCS, "%3d: %s", i, vlr_subscr_name(conn->vsub));
|
||||
switch (conn->via_ran) {
|
||||
case RAN_UTRAN_IU:
|
||||
DEBUGPC(DIUCS, " Iu");
|
||||
if (conn->iu.ue_ctx) {
|
||||
DEBUGPC(DIUCS, " link %p, conn_id %d",
|
||||
conn->iu.ue_ctx->link,
|
||||
conn->iu.ue_ctx->conn_id
|
||||
);
|
||||
}
|
||||
break;
|
||||
case RAN_GERAN_A:
|
||||
DEBUGPC(DIUCS, " A");
|
||||
/* TODO log A-interface connection details */
|
||||
break;
|
||||
case RAN_UNKNOWN:
|
||||
DEBUGPC(DIUCS, " ?");
|
||||
break;
|
||||
default:
|
||||
DEBUGPC(DIUCS, " invalid");
|
||||
break;
|
||||
}
|
||||
DEBUGPC(DIUCS, "\n");
|
||||
i++;
|
||||
}
|
||||
DEBUGP(DIUCS, "subscribers registered: %d\n", i);
|
||||
}
|
||||
|
||||
/* Return an existing IuCS subscriber connection record for the given link and
|
||||
* connection IDs, or return NULL if not found. */
|
||||
struct gsm_subscriber_connection *subscr_conn_lookup_iu(
|
||||
struct gsm_network *network,
|
||||
struct ue_conn_ctx *ue)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn;
|
||||
|
||||
DEBUGP(DIUCS, "Looking for IuCS subscriber: link_id %p, conn_id %" PRIx32 "\n",
|
||||
ue->link, ue->conn_id);
|
||||
log_subscribers(network);
|
||||
|
||||
llist_for_each_entry(conn, &network->subscr_conns, entry) {
|
||||
if (conn->via_ran != RAN_UTRAN_IU)
|
||||
continue;
|
||||
if (!same_ue_conn(conn->iu.ue_ctx, ue))
|
||||
continue;
|
||||
DEBUGP(DIUCS, "Found IuCS subscriber for link_id %p, conn_id %" PRIx32 "\n",
|
||||
ue->link, ue->conn_id);
|
||||
return conn;
|
||||
}
|
||||
DEBUGP(DIUCS, "No IuCS subscriber found for link_id %p, conn_id %" PRIx32 "\n",
|
||||
ue->link, ue->conn_id);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Receive MM/CC/... message from IuCS (SCCP user SAP).
|
||||
* msg->dst must reference a struct 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)
|
||||
{
|
||||
int rc;
|
||||
struct ue_conn_ctx *ue_ctx;
|
||||
struct gsm_subscriber_connection *conn;
|
||||
|
||||
ue_ctx = (struct ue_conn_ctx*)msg->dst;
|
||||
|
||||
/* TODO: are there message types that could allow us to skip this
|
||||
* search? */
|
||||
conn = subscr_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 */
|
||||
msc_subscr_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);
|
||||
|
||||
msc_dtap(conn, ue_ctx->conn_id, msg);
|
||||
rc = 0;
|
||||
} 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 = subscr_conn_allocate_iu(network, ue_ctx, *lac);
|
||||
if (!conn)
|
||||
abort();
|
||||
|
||||
/* ownership of conn hereby goes to the MSC: */
|
||||
rc = msc_compl_l3(conn, msg, 0);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
/* 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 <openbsc/debug.h>
|
||||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/gsm_subscriber.h>
|
||||
#include <openbsc/iu.h>
|
||||
#include <openbsc/iucs.h>
|
||||
#include <openbsc/vlr.h>
|
||||
#include <openbsc/iucs_ranap.h>
|
||||
#include <openbsc/osmo_msc.h>
|
||||
|
||||
/* To continue authorization after a Security Mode Complete */
|
||||
int gsm0408_authorize(struct gsm_subscriber_connection *conn);
|
||||
|
||||
static int iucs_rx_rab_assign(struct gsm_subscriber_connection *conn,
|
||||
RANAP_RAB_SetupOrModifiedItemIEs_t *setup_ies)
|
||||
{
|
||||
uint8_t rab_id;
|
||||
RANAP_RAB_SetupOrModifiedItem_t *item = &setup_ies->raB_SetupOrModifiedItem;
|
||||
|
||||
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);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int iucs_rx_sec_mode_compl(struct gsm_subscriber_connection *conn,
|
||||
RANAP_SecurityModeCompleteIEs_t *ies)
|
||||
{
|
||||
OSMO_ASSERT(conn->via_ran == RAN_UTRAN_IU);
|
||||
|
||||
/* TODO evalute ies */
|
||||
|
||||
msc_rx_sec_mode_compl(conn);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int iucs_rx_ranap_event(struct gsm_network *network,
|
||||
struct ue_conn_ctx *ue_ctx, int type, void *data)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn;
|
||||
|
||||
conn = subscr_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 IU_EVENT_IU_RELEASE:
|
||||
case IU_EVENT_LINK_INVALIDATED:
|
||||
LOGP(DIUCS, LOGL_INFO, "IuCS release for %s\n",
|
||||
vlr_subscr_name(conn->vsub));
|
||||
msc_subscr_conn_close(conn, 0);
|
||||
return 0;
|
||||
|
||||
case 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 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 */
|
|
@ -23,11 +23,28 @@
|
|||
#include <openbsc/debug.h>
|
||||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/msc_ifaces.h>
|
||||
#include <openbsc/iu.h>
|
||||
#include <openbsc/gsm_subscriber.h>
|
||||
#include <openbsc/transaction.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
#include <openbsc/mgcpgw_client.h>
|
||||
#include <openbsc/vlr.h>
|
||||
|
||||
#include "../../bscconfig.h"
|
||||
|
||||
#ifdef BUILD_IU
|
||||
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);
|
||||
#endif /* BUILD_IU */
|
||||
|
||||
static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
||||
{
|
||||
DEBUGP(DMSC, "msc_tx %u bytes to %s via %s\n",
|
||||
msg->len, vlr_subscr_name(conn->vsub),
|
||||
ran_type_name(conn->via_ran));
|
||||
switch (conn->via_ran) {
|
||||
/* FUTURE
|
||||
case RAN_GERAN_A:
|
||||
msg->dst = conn;
|
||||
return a_tx(msg);
|
||||
|
@ -35,7 +52,7 @@ static int msc_tx(struct gsm_subscriber_connection *conn, struct msgb *msg)
|
|||
case RAN_UTRAN_IU:
|
||||
msg->dst = conn->iu.ue_ctx;
|
||||
return iu_tx(msg, 0);
|
||||
*/
|
||||
|
||||
default:
|
||||
LOGP(DMSC, LOGL_ERROR,
|
||||
"msc_tx(): conn->via_ran invalid (%d)\n",
|
||||
|
@ -61,7 +78,8 @@ int msc_gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn)
|
|||
gh->proto_discr = GSM48_PDISC_MM;
|
||||
gh->msg_type = GSM48_MT_MM_CM_SERV_ACC;
|
||||
|
||||
DEBUGP(DMM, "-> CM SERVICE ACCEPT\n");
|
||||
DEBUGP(DMM, "-> CM SERVICE ACCEPT %s\n",
|
||||
vlr_subscr_name(conn->vsub));
|
||||
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
@ -71,6 +89,7 @@ int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
|
|||
enum gsm48_reject_value value)
|
||||
{
|
||||
struct msgb *msg;
|
||||
conn->received_cm_service_request = false;
|
||||
|
||||
msg = gsm48_create_mm_serv_rej(value);
|
||||
if (!msg) {
|
||||
|
@ -82,3 +101,216 @@ int msc_gsm48_tx_mm_serv_rej(struct gsm_subscriber_connection *conn,
|
|||
|
||||
return msc_tx_dtap(conn, msg);
|
||||
}
|
||||
|
||||
int msc_tx_common_id(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
/* Common ID is only sent over IuCS */
|
||||
if (conn->via_ran != RAN_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 iu_tx_common_id(conn->iu.ue_ctx, conn->vsub->imsi);
|
||||
}
|
||||
|
||||
#ifdef BUILD_IU
|
||||
static void iu_rab_act_cs(struct ue_conn_ctx *uectx, uint8_t rab_id,
|
||||
uint32_t rtp_ip, uint16_t rtp_port)
|
||||
{
|
||||
struct msgb *msg;
|
||||
bool use_x213_nsap;
|
||||
uint32_t conn_id = uectx->conn_id;
|
||||
|
||||
use_x213_nsap = (uectx->rab_assign_addr_enc == 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 (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);
|
||||
}
|
||||
|
||||
static void mgcp_response_rab_act_cs_crcx(struct mgcp_response *r, void *priv)
|
||||
{
|
||||
struct gsm_trans *trans = priv;
|
||||
struct gsm_subscriber_connection *conn = trans->conn;
|
||||
struct ue_conn_ctx *uectx = conn->iu.ue_ctx;
|
||||
uint32_t rtp_ip;
|
||||
int rc;
|
||||
|
||||
if (r->head.response_code != 200) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"MGCPGW response yields error: %d %s\n",
|
||||
r->head.response_code, r->head.comment);
|
||||
goto rab_act_cs_error;
|
||||
}
|
||||
|
||||
rc = mgcp_response_parse_params(r);
|
||||
if (rc) {
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Cannot parse MGCP response, for %s\n",
|
||||
vlr_subscr_name(trans->vsub));
|
||||
goto rab_act_cs_error;
|
||||
}
|
||||
|
||||
conn->iu.mgcp_rtp_port_cn = r->audio_port;
|
||||
|
||||
rtp_ip = mgcpgw_client_remote_addr_n(conn->network->mgcpgw.client);
|
||||
iu_rab_act_cs(uectx, conn->iu.rab_id, rtp_ip,
|
||||
conn->iu.mgcp_rtp_port_ue);
|
||||
/* use_x213_nsap == 0 for ip.access nano3G */
|
||||
|
||||
rab_act_cs_error:
|
||||
/* FIXME abort call, invalidate conn, ... */
|
||||
return;
|
||||
}
|
||||
|
||||
static int conn_iu_rab_act_cs(struct gsm_trans *trans)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn = trans->conn;
|
||||
struct mgcpgw_client *mgcp = conn->network->mgcpgw.client;
|
||||
struct msgb *msg;
|
||||
|
||||
/* HACK. where to scope the RAB Id? At the conn / subscriber /
|
||||
* ue_conn_ctx? */
|
||||
static uint8_t next_rab_id = 1;
|
||||
conn->iu.rab_id = next_rab_id ++;
|
||||
|
||||
conn->iu.mgcp_rtp_endpoint =
|
||||
mgcpgw_client_next_endpoint(conn->network->mgcpgw.client);
|
||||
/* HACK: the addresses should be known from CRCX response
|
||||
* and config. */
|
||||
conn->iu.mgcp_rtp_port_ue = 4000 + 2 * conn->iu.mgcp_rtp_endpoint;
|
||||
|
||||
/* Establish the RTP stream first as looping back to the originator.
|
||||
* The MDCX will patch through to the counterpart. TODO: play a ring
|
||||
* tone instead. */
|
||||
msg = mgcp_msg_crcx(mgcp, conn->iu.mgcp_rtp_endpoint, trans->callref,
|
||||
MGCP_CONN_LOOPBACK);
|
||||
return mgcpgw_client_tx(mgcp, msg, mgcp_response_rab_act_cs_crcx, trans);
|
||||
}
|
||||
#endif
|
||||
|
||||
int msc_call_assignment(struct gsm_trans *trans)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn = trans->conn;
|
||||
|
||||
switch (conn->via_ran) {
|
||||
case RAN_GERAN_A:
|
||||
LOGP(DMSC, LOGL_ERROR,
|
||||
"msc_call_assignment(): A-interface BSSMAP Assignment"
|
||||
" Request not yet implemented\n");
|
||||
return -ENOTSUP;
|
||||
|
||||
case RAN_UTRAN_IU:
|
||||
#ifdef BUILD_IU
|
||||
return conn_iu_rab_act_cs(trans);
|
||||
#else
|
||||
LOGP(DMSC, LOGL_ERROR,
|
||||
"msc_call_assignment(): cannot send RAB Activation, built without Iu support\n");
|
||||
return -ENOTSUP;
|
||||
#endif
|
||||
|
||||
default:
|
||||
LOGP(DMSC, LOGL_ERROR,
|
||||
"msc_tx(): conn->via_ran invalid (%d)\n",
|
||||
conn->via_ran);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static void mgcp_response_bridge_mdcx(struct mgcp_response *r, void *priv);
|
||||
|
||||
static void mgcp_bridge(struct gsm_trans *from, struct gsm_trans *to,
|
||||
enum bridge_state state,
|
||||
enum mgcp_connection_mode mode)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn1 = from->conn;
|
||||
struct gsm_subscriber_connection *conn2 = to->conn;
|
||||
struct mgcpgw_client *mgcp = conn1->network->mgcpgw.client;
|
||||
const char *ip;
|
||||
struct msgb *msg;
|
||||
|
||||
OSMO_ASSERT(mgcp);
|
||||
|
||||
from->bridge.peer = to;
|
||||
from->bridge.state = state;
|
||||
|
||||
/* Loop back to the same MGCP GW */
|
||||
ip = mgcpgw_client_remote_addr_str(mgcp);
|
||||
|
||||
msg = mgcp_msg_mdcx(mgcp,
|
||||
conn1->iu.mgcp_rtp_endpoint,
|
||||
ip, conn2->iu.mgcp_rtp_port_cn,
|
||||
mode);
|
||||
if (mgcpgw_client_tx(mgcp, msg, mgcp_response_bridge_mdcx, from))
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Failed to send MDCX message for %s\n",
|
||||
vlr_subscr_name(from->vsub));
|
||||
}
|
||||
|
||||
static void mgcp_response_bridge_mdcx(struct mgcp_response *r, void *priv)
|
||||
{
|
||||
struct gsm_trans *trans = priv;
|
||||
struct gsm_trans *peer = trans->bridge.peer;
|
||||
|
||||
switch (trans->bridge.state) {
|
||||
case BRIDGE_STATE_LOOPBACK_PENDING:
|
||||
trans->bridge.state = BRIDGE_STATE_LOOPBACK_ESTABLISHED;
|
||||
|
||||
switch (peer->bridge.state) {
|
||||
case BRIDGE_STATE_LOOPBACK_PENDING:
|
||||
/* Wait until the other is done as well. */
|
||||
return;
|
||||
case BRIDGE_STATE_LOOPBACK_ESTABLISHED:
|
||||
/* Now that both are in loopback, switch both to
|
||||
* forwarding. */
|
||||
mgcp_bridge(trans, peer, BRIDGE_STATE_BRIDGE_PENDING,
|
||||
MGCP_CONN_RECV_SEND);
|
||||
mgcp_bridge(peer, trans, BRIDGE_STATE_BRIDGE_PENDING,
|
||||
MGCP_CONN_RECV_SEND);
|
||||
break;
|
||||
default:
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Unexpected bridge state: %d for %s\n",
|
||||
trans->bridge.state, vlr_subscr_name(trans->vsub));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BRIDGE_STATE_BRIDGE_PENDING:
|
||||
trans->bridge.state = BRIDGE_STATE_BRIDGE_ESTABLISHED;
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGP(DMGCP, LOGL_ERROR,
|
||||
"Unexpected bridge state: %d for %s\n",
|
||||
trans->bridge.state, vlr_subscr_name(trans->vsub));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int msc_call_bridge(struct gsm_trans *trans1, struct gsm_trans *trans2)
|
||||
{
|
||||
/* First setup as loopback and configure the counterparts' endpoints,
|
||||
* so that when transmission starts the originating addresses are
|
||||
* already known to be valid. The mgcp callback will continue. */
|
||||
mgcp_bridge(trans1, trans2, BRIDGE_STATE_LOOPBACK_PENDING,
|
||||
MGCP_CONN_LOOPBACK);
|
||||
mgcp_bridge(trans2, trans1, BRIDGE_STATE_LOOPBACK_PENDING,
|
||||
MGCP_CONN_LOOPBACK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
/* MSC interface to quagga VTY */
|
||||
/* (C) 2016 by sysmocom s.m.f.c. GmbH <info@sysmocom.de>
|
||||
* Based on OpenBSC interface to quagga VTY (libmsc/vty_interface_layer3.c)
|
||||
* (C) 2009 by Harald Welte <laforge@gnumonks.org>
|
||||
* (C) 2009-2011 by Holger Hans Peter Freyther
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/* NOTE: I would have liked to call this the MSC_NODE instead of the MSC_NODE,
|
||||
* but MSC_NODE already exists to configure a remote MSC for osmo-bsc. */
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include <osmocom/vty/command.h>
|
||||
|
||||
#include <openbsc/vty.h>
|
||||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/gsm_subscriber.h>
|
||||
#include <openbsc/vlr.h>
|
||||
#include <openbsc/iu.h>
|
||||
|
||||
static struct cmd_node msc_node = {
|
||||
MSC_NODE,
|
||||
"%s(config-msc)# ",
|
||||
1,
|
||||
};
|
||||
|
||||
DEFUN(cfg_msc, cfg_msc_cmd,
|
||||
"msc", "Configure MSC options")
|
||||
{
|
||||
vty->node = MSC_NODE;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_msc_assign_tmsi, cfg_msc_assign_tmsi_cmd,
|
||||
"assign-tmsi",
|
||||
"Assign TMSI during Location Updating.\n")
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
gsmnet->vlr->cfg.assign_tmsi = true;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_msc_no_assign_tmsi, cfg_msc_no_assign_tmsi_cmd,
|
||||
"no assign-tmsi",
|
||||
NO_STR "Assign TMSI during Location Updating.\n")
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
gsmnet->vlr->cfg.assign_tmsi = false;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static int config_write_msc(struct vty *vty)
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
|
||||
vty_out(vty, "msc%s", VTY_NEWLINE);
|
||||
vty_out(vty, " %sassign-tmsi%s",
|
||||
gsmnet->vlr->cfg.assign_tmsi? "" : "no ", VTY_NEWLINE);
|
||||
|
||||
mgcpgw_client_config_write(vty, " ");
|
||||
#ifdef BUILD_IU
|
||||
iu_vty_config_write(vty, " ");
|
||||
#endif
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static int config_write_net(struct vty *vty)
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
|
||||
vty_out(vty, "network%s", VTY_NEWLINE);
|
||||
vty_out(vty, " network country code %u%s", gsmnet->country_code, VTY_NEWLINE);
|
||||
vty_out(vty, " mobile network code %u%s", gsmnet->network_code, VTY_NEWLINE);
|
||||
vty_out(vty, " short name %s%s", gsmnet->name_short, VTY_NEWLINE);
|
||||
vty_out(vty, " long name %s%s", gsmnet->name_long, VTY_NEWLINE);
|
||||
vty_out(vty, " auth policy %s%s", gsm_auth_policy_name(gsmnet->auth_policy), VTY_NEWLINE);
|
||||
vty_out(vty, " location updating reject cause %u%s",
|
||||
gsmnet->reject_cause, VTY_NEWLINE);
|
||||
vty_out(vty, " encryption a5 %u%s", gsmnet->a5_encryption, VTY_NEWLINE);
|
||||
vty_out(vty, " rrlp mode %s%s", rrlp_mode_name(gsmnet->rrlp.mode),
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, " mm info %u%s", gsmnet->send_mm_info, VTY_NEWLINE);
|
||||
if (gsmnet->tz.override != 0) {
|
||||
if (gsmnet->tz.dst)
|
||||
vty_out(vty, " timezone %d %d %d%s",
|
||||
gsmnet->tz.hr, gsmnet->tz.mn, gsmnet->tz.dst,
|
||||
VTY_NEWLINE);
|
||||
else
|
||||
vty_out(vty, " timezone %d %d%s",
|
||||
gsmnet->tz.hr, gsmnet->tz.mn, VTY_NEWLINE);
|
||||
}
|
||||
if (gsmnet->t3212 == 0)
|
||||
vty_out(vty, " no periodic location update%s", VTY_NEWLINE);
|
||||
else
|
||||
vty_out(vty, " periodic location update %u%s",
|
||||
gsmnet->t3212 * 6, VTY_NEWLINE);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
void msc_vty_init(struct gsm_network *msc_network)
|
||||
{
|
||||
common_cs_vty_init(msc_network, config_write_net);
|
||||
|
||||
install_element(CONFIG_NODE, &cfg_msc_cmd);
|
||||
install_node(&msc_node, config_write_msc);
|
||||
vty_install_default(MSC_NODE);
|
||||
install_element(MSC_NODE, &cfg_msc_assign_tmsi_cmd);
|
||||
install_element(MSC_NODE, &cfg_msc_no_assign_tmsi_cmd);
|
||||
mgcpgw_client_vty_init(MSC_NODE, &msc_network->mgcpgw.conf);
|
||||
#ifdef BUILD_IU
|
||||
iu_vty_init(MSC_NODE, &msc_network->iu.rab_assign_addr_enc);
|
||||
#endif
|
||||
}
|
|
@ -28,6 +28,7 @@
|
|||
#include <openbsc/db.h>
|
||||
#include <openbsc/vlr.h>
|
||||
#include <openbsc/osmo_msc.h>
|
||||
#include <openbsc/iu.h>
|
||||
|
||||
#include <openbsc/gsm_04_11.h>
|
||||
|
||||
|
@ -40,24 +41,6 @@ static void msc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
|
|||
gsm411_sapi_n_reject(conn);
|
||||
}
|
||||
|
||||
static bool keep_conn(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
/* TODO: what about a silent call? */
|
||||
|
||||
if (!conn->conn_fsm) {
|
||||
DEBUGP(DMM, "No conn_fsm, release conn\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (conn->conn_fsm->state) {
|
||||
case SUBSCR_CONN_S_NEW:
|
||||
case SUBSCR_CONN_S_ACCEPTED:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static void subscr_conn_bump(struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
if (!conn)
|
||||
|
@ -65,39 +48,32 @@ static void subscr_conn_bump(struct gsm_subscriber_connection *conn)
|
|||
if (!conn->conn_fsm)
|
||||
return;
|
||||
if (!(conn->conn_fsm->state == SUBSCR_CONN_S_ACCEPTED
|
||||
|| conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING))
|
||||
|| conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING)) {
|
||||
DEBUGP(DMM, "%s: bump: conn still being established (%s)\n",
|
||||
vlr_subscr_name(conn->vsub),
|
||||
osmo_fsm_inst_state_name(conn->conn_fsm));
|
||||
return;
|
||||
}
|
||||
osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_BUMP, NULL);
|
||||
}
|
||||
|
||||
/* receive a Level 3 Complete message and return MSC_CONN_ACCEPT or
|
||||
* MSC_CONN_REJECT */
|
||||
static int msc_compl_l3(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, uint16_t chosen_channel)
|
||||
int msc_compl_l3(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, uint16_t chosen_channel)
|
||||
{
|
||||
/* Ownership of the gsm_subscriber_connection is still a bit mucky
|
||||
* between libbsc and libmsc. In libmsc, we use ref counting, but not
|
||||
* in libbsc. This will become simpler with the MSCSPLIT. */
|
||||
|
||||
/* reserve for the duration of this function */
|
||||
msc_subscr_conn_get(conn);
|
||||
|
||||
gsm0408_dispatch(conn, msg);
|
||||
|
||||
if (!keep_conn(conn)) {
|
||||
DEBUGP(DMM, "compl_l3: Discarding conn\n");
|
||||
/* keep the use_count reserved, libbsc will discard. If we
|
||||
* released the ref count and discarded here, libbsc would
|
||||
* double-free. And we will not change bsc_api semantics. */
|
||||
return MSC_CONN_REJECT;
|
||||
}
|
||||
DEBUGP(DMM, "compl_l3: Keeping conn\n");
|
||||
|
||||
/* Bump whether the conn wants to be closed */
|
||||
subscr_conn_bump(conn);
|
||||
|
||||
/* If this should be kept, the conn->conn_fsm has placed a use_count */
|
||||
msc_subscr_conn_put(conn);
|
||||
|
||||
/* Always return acceptance, because even if the conn was not accepted,
|
||||
* we assumed ownership of it and the caller shall not interfere with
|
||||
* that. We may even already have discarded the conn. */
|
||||
return MSC_CONN_ACCEPT;
|
||||
|
||||
#if 0
|
||||
|
@ -119,7 +95,7 @@ static int msc_compl_l3(struct gsm_subscriber_connection *conn,
|
|||
}
|
||||
|
||||
/* Receive a DTAP message from BSC */
|
||||
static void msc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg)
|
||||
void msc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg)
|
||||
{
|
||||
msc_subscr_conn_get(conn);
|
||||
gsm0408_dispatch(conn, msg);
|
||||
|
@ -170,8 +146,8 @@ static void msc_classmark_chg(struct gsm_subscriber_connection *conn,
|
|||
}
|
||||
|
||||
/* Receive a CIPHERING MODE COMPLETE from BSC */
|
||||
static void msc_ciph_m_compl(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, uint8_t alg_id)
|
||||
void msc_cipher_mode_compl(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, uint8_t alg_id)
|
||||
{
|
||||
struct gsm48_hdr *gh = msgb_l3(msg);
|
||||
unsigned int payload_len = msgb_l3len(msg) - sizeof(*gh);
|
||||
|
@ -289,7 +265,7 @@ static struct bsc_api msc_handler = {
|
|||
.assign_compl = msc_assign_compl,
|
||||
.assign_fail = msc_assign_fail,
|
||||
.classmark_chg = msc_classmark_chg,
|
||||
.cipher_mode_compl = msc_ciph_m_compl,
|
||||
.cipher_mode_compl = msc_cipher_mode_compl,
|
||||
.conn_cleanup = msc_subscr_con_cleanup,
|
||||
};
|
||||
|
||||
|
@ -308,7 +284,10 @@ static void msc_subscr_conn_release_all(struct gsm_subscriber_connection *conn,
|
|||
|
||||
switch (conn->via_ran) {
|
||||
case RAN_UTRAN_IU:
|
||||
/* future: iu_tx_release(conn->iu.ue_ctx, NULL); */
|
||||
iu_tx_release(conn->iu.ue_ctx, NULL);
|
||||
/* FIXME: keep the conn until the Iu Release Outcome is
|
||||
* received from the UE, or a timeout expires. For now, the log
|
||||
* says "unknown UE" for each release outcome. */
|
||||
break;
|
||||
case RAN_GERAN_A:
|
||||
/* future: a_iface_tx_clear_cmd(conn); */
|
||||
|
@ -390,8 +369,12 @@ void _msc_subscr_conn_put(struct gsm_subscriber_connection *conn,
|
|||
"%s: MSC conn use - 1 == %u\n",
|
||||
vlr_subscr_name(conn->vsub), conn->use_count);
|
||||
|
||||
if (conn->use_count == 0) {
|
||||
gsm0808_clear(conn);
|
||||
bsc_subscr_con_free(conn);
|
||||
}
|
||||
if (conn->use_count == 0)
|
||||
msc_subscr_con_free(conn);
|
||||
}
|
||||
|
||||
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? */
|
||||
}
|
||||
|
|
|
@ -133,7 +133,8 @@ int gsm_silent_call_start(struct vlr_subscr *vsub, void *data, int type)
|
|||
/* FIXME the VTY command allows selecting a silent call channel type.
|
||||
* This doesn't apply to the situation after MSCSPLIT with an
|
||||
* A-interface. */
|
||||
req = subscr_request_conn(vsub, type, paging_cb_silent, data);
|
||||
req = subscr_request_conn(vsub, paging_cb_silent, data,
|
||||
"establish silent call");
|
||||
return req != NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <openbsc/debug.h>
|
||||
#include <openbsc/transaction.h>
|
||||
#include <openbsc/signal.h>
|
||||
#include <openbsc/iu.h>
|
||||
|
||||
#define SUBSCR_CONN_TIMEOUT 5 /* seconds */
|
||||
|
||||
|
@ -52,8 +53,8 @@ const struct value_string subscr_conn_from_names[] = {
|
|||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static void paging_resp(struct gsm_subscriber_connection *conn,
|
||||
enum gsm_paging_event pe)
|
||||
static void paging_event(struct gsm_subscriber_connection *conn,
|
||||
enum gsm_paging_event pe)
|
||||
{
|
||||
subscr_paging_dispatch(GSM_HOOK_RR_PAGING, pe, NULL, conn, conn->vsub);
|
||||
}
|
||||
|
@ -85,11 +86,17 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
|||
|
||||
case SUBSCR_CONN_E_MO_CLOSE:
|
||||
case SUBSCR_CONN_E_CN_CLOSE:
|
||||
if (data)
|
||||
LOGPFSM(fi, "Close event, cause %u\n",
|
||||
*(uint32_t*)data);
|
||||
/* will release further below, see
|
||||
* 'if (fi->state != SUBSCR_CONN_S_ACCEPTED)' */
|
||||
break;
|
||||
|
||||
default:
|
||||
LOGPFSM(fi, "Unexpected event: %d %s\n",
|
||||
event, osmo_fsm_event_name(fi->fsm, event));
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"Unexpected event: %d %s\n", event,
|
||||
osmo_fsm_event_name(fi->fsm, event));
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -102,21 +109,24 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
|||
|
||||
/* signal paging success or failure in case this was a paging */
|
||||
if (from == SUBSCR_CONN_FROM_PAGING_RESP)
|
||||
paging_resp(conn,
|
||||
success ? GSM_PAGING_SUCCEEDED
|
||||
: GSM_PAGING_EXPIRED);
|
||||
paging_event(conn,
|
||||
success ? GSM_PAGING_SUCCEEDED
|
||||
: GSM_PAGING_EXPIRED);
|
||||
|
||||
/* FIXME rate counters */
|
||||
/*rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_LOC_UPDATE_COMPLETED]);*/
|
||||
|
||||
/* On failure, discard the conn */
|
||||
if (!success) {
|
||||
/* TODO: on MO_CLOSE or CN_CLOSE, first go to RELEASING and
|
||||
* await BSC confirmation? */
|
||||
* await BSC/RNC confirmation? */
|
||||
osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASED, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (from == SUBSCR_CONN_FROM_CM_SERVICE_REQ) {
|
||||
conn->received_cm_service_request = true;
|
||||
LOGPFSM(fi, "received_cm_service_request = true\n");
|
||||
LOGPFSML(fi, LOGL_DEBUG, "received_cm_service_request = true\n");
|
||||
}
|
||||
|
||||
osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_BUMP, data);
|
||||
|
@ -125,19 +135,37 @@ void subscr_conn_fsm_new(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
|||
static void subscr_conn_fsm_bump(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn = fi->priv;
|
||||
struct gsm_trans *trans;
|
||||
|
||||
if (conn->silent_call)
|
||||
if (conn->silent_call) {
|
||||
LOGPFSML(fi, LOGL_DEBUG, "bump: silent call still active\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (conn->received_cm_service_request)
|
||||
if (conn->received_cm_service_request) {
|
||||
LOGPFSML(fi, LOGL_DEBUG, "bump: still awaiting first request after a CM Service Request\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (conn->vsub && !llist_empty(&conn->vsub->cs.requests))
|
||||
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, "bump: still active: %s\n",
|
||||
sr->label);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (trans_has_conn(conn))
|
||||
if ((trans = trans_has_conn(conn))) {
|
||||
LOGPFSML(fi, LOGL_DEBUG,
|
||||
"bump: connection still has active transaction: %s\n",
|
||||
gsm48_pdisc_name(trans->protocol));
|
||||
return;
|
||||
}
|
||||
|
||||
LOGPFSML(fi, LOGL_DEBUG, "bump: releasing conn\n");
|
||||
osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASED, 0, 0);
|
||||
}
|
||||
|
||||
|
@ -269,7 +297,7 @@ static struct osmo_fsm subscr_conn_fsm = {
|
|||
.num_states = ARRAY_SIZE(subscr_conn_fsm_states),
|
||||
.allstate_event_mask = 0,
|
||||
.allstate_action = NULL,
|
||||
.log_subsys = DVLR,
|
||||
.log_subsys = DMM,
|
||||
.event_names = subscr_conn_fsm_event_names,
|
||||
.cleanup = subscr_conn_fsm_cleanup,
|
||||
.timer_cb = subscr_conn_fsm_timeout,
|
||||
|
|
|
@ -180,15 +180,15 @@ int trans_assign_trans_id(struct gsm_network *net, struct vlr_subscr *vsub,
|
|||
* \param[in] conn Connection to check
|
||||
* \returns 1 in case there is a transaction, 0 otherwise
|
||||
*/
|
||||
int trans_has_conn(const struct gsm_subscriber_connection *conn)
|
||||
struct gsm_trans *trans_has_conn(const struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
struct gsm_trans *trans;
|
||||
|
||||
llist_for_each_entry(trans, &conn->network->trans_list, entry)
|
||||
if (trans->conn == conn)
|
||||
return 1;
|
||||
return trans;
|
||||
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*! Free all transactions associated with a connection, presumably when the
|
||||
|
|
|
@ -21,9 +21,8 @@
|
|||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <unistd.h>
|
||||
#include <stdbool.h>
|
||||
#include <inttypes.h>
|
||||
#include <time.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include <osmocom/vty/command.h>
|
||||
#include <osmocom/vty/buffer.h>
|
||||
|
@ -474,17 +473,6 @@ DEFUN(subscriber_ussd_notify,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(ena_subscr_delete,
|
||||
ena_subscr_delete_cmd,
|
||||
"subscriber " SUBSCR_TYPES " ID delete",
|
||||
SUBSCR_HELP "Delete subscriber in VLR\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber delete' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(ena_subscr_expire,
|
||||
ena_subscr_expire_cmd,
|
||||
"subscriber " SUBSCR_TYPES " ID expire",
|
||||
|
@ -516,43 +504,6 @@ DEFUN(ena_subscr_expire,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(ena_subscr_authorized,
|
||||
ena_subscr_authorized_cmd,
|
||||
"subscriber " SUBSCR_TYPES " ID authorized (0|1)",
|
||||
SUBSCR_HELP "(De-)Authorize subscriber in HLR\n"
|
||||
"Subscriber should NOT be authorized\n"
|
||||
"Subscriber should be authorized\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber authorized' is no longer supported.%s"
|
||||
"%% Authorization is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(ena_subscr_name,
|
||||
ena_subscr_name_cmd,
|
||||
"subscriber " SUBSCR_TYPES " ID name .NAME",
|
||||
SUBSCR_HELP "Set the name of the subscriber\n"
|
||||
"Name of the Subscriber\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber name' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(ena_subscr_extension,
|
||||
ena_subscr_extension_cmd,
|
||||
"subscriber " SUBSCR_TYPES " ID extension EXTENSION",
|
||||
SUBSCR_HELP "Set the extension (phone number) of the subscriber\n"
|
||||
"Extension (phone number)\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber extension' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
#define A3A8_ALG_TYPES "(none|xor|comp128v1)"
|
||||
#define A3A8_ALG_HELP \
|
||||
"Use No A3A8 algorithm\n" \
|
||||
|
@ -571,18 +522,6 @@ DEFUN(ena_subscr_a3a8,
|
|||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(subscriber_purge,
|
||||
subscriber_purge_cmd,
|
||||
"subscriber purge-inactive",
|
||||
"Operations on a Subscriber\n" "Purge subscribers with a zero use count.\n")
|
||||
{
|
||||
/* TODO: does this still have a use with the VLR? */
|
||||
vty_out(vty, "%% 'subscriber purge-inactive' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(subscriber_update,
|
||||
subscriber_update_cmd,
|
||||
"subscriber " SUBSCR_TYPES " ID update",
|
||||
|
@ -834,7 +773,6 @@ DEFUN(logging_fltr_imsi,
|
|||
"Filter log messages by IMSI\n" "IMSI to be used as filter\n")
|
||||
{
|
||||
struct vlr_subscr *vlr_subscr;
|
||||
struct bsc_subscr *bsc_subscr;
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
struct log_target *tgt = osmo_log_vty2tgt(vty);
|
||||
const char *imsi = argv[0];
|
||||
|
@ -843,16 +781,14 @@ DEFUN(logging_fltr_imsi,
|
|||
return CMD_WARNING;
|
||||
|
||||
vlr_subscr = vlr_subscr_find_by_imsi(gsmnet->vlr, imsi);
|
||||
bsc_subscr = bsc_subscr_find_by_imsi(gsmnet->bsc_subscribers, imsi);
|
||||
|
||||
if (!vlr_subscr && !bsc_subscr) {
|
||||
if (!vlr_subscr) {
|
||||
vty_out(vty, "%%no subscriber with IMSI(%s)%s",
|
||||
argv[0], VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
log_set_filter_vlr_subscr(tgt, vlr_subscr);
|
||||
log_set_filter_bsc_subscr(tgt, bsc_subscr);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -900,81 +836,6 @@ static int config_write_hlr(struct vty *vty)
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static struct cmd_node nitb_node = {
|
||||
NITB_NODE,
|
||||
"%s(config-nitb)# ",
|
||||
1,
|
||||
};
|
||||
|
||||
DEFUN(cfg_nitb, cfg_nitb_cmd,
|
||||
"nitb", "Configure NITB options")
|
||||
{
|
||||
vty->node = NITB_NODE;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
/* Note: limit on the parameter length is set by internal vty code limitations */
|
||||
DEFUN(cfg_nitb_subscr_random, cfg_nitb_subscr_random_cmd,
|
||||
"subscriber-create-on-demand random <1-9999999999> <2-9999999999>",
|
||||
"Set random parameters for a new record when a subscriber is first seen.\n"
|
||||
"Set random parameters for a new record when a subscriber is first seen.\n"
|
||||
"Minimum for subscriber extension\n""Maximum for subscriber extension\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber-create-on-demand' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nitb_subscr_create, cfg_nitb_subscr_create_cmd,
|
||||
"subscriber-create-on-demand [no-extension]",
|
||||
"Make a new record when a subscriber is first seen.\n"
|
||||
"Do not automatically assign extension to created subscribers\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber-create-on-demand' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nitb_no_subscr_create, cfg_nitb_no_subscr_create_cmd,
|
||||
"no subscriber-create-on-demand",
|
||||
NO_STR "Make a new record when a subscriber is first seen.\n")
|
||||
{
|
||||
vty_out(vty, "%% 'subscriber-create-on-demand' is no longer supported.%s"
|
||||
"%% This is now up to osmo-hlr.%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nitb_assign_tmsi, cfg_nitb_assign_tmsi_cmd,
|
||||
"assign-tmsi",
|
||||
"Assign TMSI during Location Updating.\n")
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
gsmnet->vlr->cfg.assign_tmsi = true;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(cfg_nitb_no_assign_tmsi, cfg_nitb_no_assign_tmsi_cmd,
|
||||
"no assign-tmsi",
|
||||
NO_STR "Assign TMSI during Location Updating.\n")
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
gsmnet->vlr->cfg.assign_tmsi = false;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static int config_write_nitb(struct vty *vty)
|
||||
{
|
||||
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
|
||||
|
||||
vty_out(vty, "nitb%s", VTY_NEWLINE);
|
||||
vty_out(vty, " %sassign-tmsi%s",
|
||||
gsmnet->vlr->cfg.assign_tmsi? "" : "no ", VTY_NEWLINE);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int bsc_vty_init_extra(void)
|
||||
{
|
||||
osmo_signal_register_handler(SS_SCALL, scall_cbfn, NULL);
|
||||
|
@ -995,13 +856,8 @@ int bsc_vty_init_extra(void)
|
|||
install_element_ve(&show_smsqueue_cmd);
|
||||
install_element_ve(&logging_fltr_imsi_cmd);
|
||||
|
||||
install_element(ENABLE_NODE, &ena_subscr_delete_cmd);
|
||||
install_element(ENABLE_NODE, &ena_subscr_expire_cmd);
|
||||
install_element(ENABLE_NODE, &ena_subscr_name_cmd);
|
||||
install_element(ENABLE_NODE, &ena_subscr_extension_cmd);
|
||||
install_element(ENABLE_NODE, &ena_subscr_authorized_cmd);
|
||||
install_element(ENABLE_NODE, &ena_subscr_a3a8_cmd);
|
||||
install_element(ENABLE_NODE, &subscriber_purge_cmd);
|
||||
install_element(ENABLE_NODE, &smsqueue_trigger_cmd);
|
||||
install_element(ENABLE_NODE, &smsqueue_max_cmd);
|
||||
install_element(ENABLE_NODE, &smsqueue_clear_cmd);
|
||||
|
@ -1025,13 +881,5 @@ int bsc_vty_init_extra(void)
|
|||
install_element(HLR_NODE, &cfg_hlr_remote_ip_cmd);
|
||||
install_element(HLR_NODE, &cfg_hlr_remote_port_cmd);
|
||||
|
||||
install_element(CONFIG_NODE, &cfg_nitb_cmd);
|
||||
install_node(&nitb_node, config_write_nitb);
|
||||
install_element(NITB_NODE, &cfg_nitb_subscr_create_cmd);
|
||||
install_element(NITB_NODE, &cfg_nitb_subscr_random_cmd);
|
||||
install_element(NITB_NODE, &cfg_nitb_no_subscr_create_cmd);
|
||||
install_element(NITB_NODE, &cfg_nitb_assign_tmsi_cmd);
|
||||
install_element(NITB_NODE, &cfg_nitb_no_assign_tmsi_cmd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -961,6 +961,9 @@ struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
|
|||
{
|
||||
struct vlr_instance *vlr = talloc_zero(ctx, struct vlr_instance);
|
||||
OSMO_ASSERT(vlr);
|
||||
|
||||
/* Some of these are needed only on UTRAN, but in case the caller wants
|
||||
* only GERAN, she should just provide dummy callbacks. */
|
||||
OSMO_ASSERT(ops->tx_auth_req);
|
||||
OSMO_ASSERT(ops->tx_auth_rej);
|
||||
OSMO_ASSERT(ops->tx_id_req);
|
||||
|
@ -969,6 +972,7 @@ struct vlr_instance *vlr_alloc(void *ctx, const struct vlr_ops *ops)
|
|||
OSMO_ASSERT(ops->tx_cm_serv_acc);
|
||||
OSMO_ASSERT(ops->tx_cm_serv_rej);
|
||||
OSMO_ASSERT(ops->set_ciph_mode);
|
||||
OSMO_ASSERT(ops->tx_common_id);
|
||||
OSMO_ASSERT(ops->subscr_update);
|
||||
OSMO_ASSERT(ops->subscr_assoc);
|
||||
|
||||
|
|
|
@ -254,6 +254,14 @@ static void _proc_arq_vlr_node2_post_ciph(struct osmo_fsm_inst *fi)
|
|||
|
||||
LOGPFSM(fi, "%s()\n", __func__);
|
||||
|
||||
if (par->is_utran) {
|
||||
int rc;
|
||||
rc = par->vlr->ops.tx_common_id(par->msc_conn_ref);
|
||||
if (rc)
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"Error while sending Common ID (%d)\n", rc);
|
||||
}
|
||||
|
||||
vsub->conf_by_radio_contact_ind = true;
|
||||
if (vsub->loc_conf_in_hlr_ind == false) {
|
||||
/* start Update_Location_Child_VLR. WE use
|
||||
|
@ -681,6 +689,10 @@ vlr_proc_acc_req(struct osmo_fsm_inst *parent,
|
|||
(ciphering_required? "+Ciph" : " (no Ciph)")
|
||||
: "");
|
||||
|
||||
if (is_utran && !authentication_required)
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"Authentication off on UTRAN network. Good luck.\n");
|
||||
|
||||
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) {
|
||||
|
|
|
@ -783,6 +783,14 @@ static void vlr_loc_upd_post_ciph(struct osmo_fsm_inst *fi)
|
|||
|
||||
OSMO_ASSERT(vsub);
|
||||
|
||||
if (lfp->is_utran) {
|
||||
int rc;
|
||||
rc = lfp->vlr->ops.tx_common_id(lfp->msc_conn_ref);
|
||||
if (rc)
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"Error while sending Common ID (%d)\n", rc);
|
||||
}
|
||||
|
||||
vsub->conf_by_radio_contact_ind = true;
|
||||
/* Update LAI */
|
||||
vsub->cgi.lai = lfp->new_lai;
|
||||
|
@ -1413,6 +1421,10 @@ vlr_loc_update(struct osmo_fsm_inst *parent,
|
|||
(ciphering_required? "+Ciph" : " (no Ciph)")
|
||||
: "");
|
||||
|
||||
if (is_utran && !authentication_required)
|
||||
LOGPFSML(fi, LOGL_ERROR,
|
||||
"Authentication off on UTRAN network. Good luck.\n");
|
||||
|
||||
osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL);
|
||||
|
||||
return fi;
|
||||
|
|
|
@ -536,7 +536,7 @@ static struct bsc_api bsc_handler = {
|
|||
.sapi_n_reject = bsc_sapi_n_reject,
|
||||
.cipher_mode_compl = bsc_cipher_mode_compl,
|
||||
.compl_l3 = bsc_compl_l3,
|
||||
.dtap = bsc_dtap,
|
||||
.dtap = bsc_dtap,
|
||||
.assign_compl = bsc_assign_compl,
|
||||
.assign_fail = bsc_assign_fail,
|
||||
.clear_request = bsc_clear_request,
|
||||
|
|
|
@ -14,6 +14,9 @@ AM_CFLAGS = \
|
|||
$(LIBOSMOABIS_CFLAGS) \
|
||||
$(LIBSMPP34_CFLAGS) \
|
||||
$(LIBCRYPTO_CFLAGS) \
|
||||
$(LIBOSMORANAP_CFLAGS) \
|
||||
$(LIBASN1C_CFLAGS) \
|
||||
$(LIBOSMOSIGTRAN_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
AM_LDFLAGS = \
|
||||
|
@ -21,20 +24,20 @@ AM_LDFLAGS = \
|
|||
$(NULL)
|
||||
|
||||
bin_PROGRAMS = \
|
||||
osmo-nitb \
|
||||
osmo-msc \
|
||||
$(NULL)
|
||||
|
||||
osmo_nitb_SOURCES = \
|
||||
bsc_hack.c \
|
||||
osmo_msc_SOURCES = \
|
||||
msc_main.c \
|
||||
$(NULL)
|
||||
|
||||
osmo_nitb_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libcommon-cs/libcommon-cs.a \
|
||||
osmo_msc_LDADD = \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libvlr/libvlr.a \
|
||||
$(top_builddir)/src/libcommon-cs/libcommon-cs.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(LIBOSMOGSM_LIBS) \
|
||||
$(LIBOSMOVTY_LIBS) \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
|
@ -42,5 +45,13 @@ osmo_nitb_LDADD = \
|
|||
$(LIBOSMOABIS_LIBS) \
|
||||
$(LIBSMPP34_LIBS) \
|
||||
$(LIBCRYPTO_LIBS) \
|
||||
$(LIBOSMOSIGTRAN_LIBS) \
|
||||
-ldbi \
|
||||
$(NULL)
|
||||
if BUILD_IU
|
||||
osmo_msc_LDADD += \
|
||||
$(top_builddir)/src/libiu/libiu.a \
|
||||
$(LIBOSMORANAP_LIBS) \
|
||||
$(LIBASN1C_LIBS) \
|
||||
$(NULL)
|
||||
endif
|
|
@ -1,6 +1,11 @@
|
|||
/* A hackish minimal BSC (+MSC +HLR) implementation */
|
||||
/* OsmoMSC - Circuit-Switched Core Network (MSC+VLR+HLR+SMSC) implementation
|
||||
*/
|
||||
|
||||
/* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
|
||||
/* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
|
||||
* All Rights Reserved
|
||||
*
|
||||
* Based on OsmoNITB:
|
||||
* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
|
||||
* (C) 2009-2012 by Holger Hans Peter Freyther <zecke@selfish.org>
|
||||
* All Rights Reserved
|
||||
*
|
||||
|
@ -29,6 +34,9 @@
|
|||
#define _GNU_SOURCE
|
||||
#include <getopt.h>
|
||||
|
||||
/* build switches from the configure script */
|
||||
#include "../../bscconfig.h"
|
||||
|
||||
#include <openbsc/db.h>
|
||||
#include <osmocom/core/application.h>
|
||||
#include <osmocom/core/select.h>
|
||||
|
@ -41,29 +49,63 @@
|
|||
#include <openbsc/osmo_msc.h>
|
||||
#include <openbsc/bsc_msc_data.h>
|
||||
#include <openbsc/sms_queue.h>
|
||||
#include <osmocom/vty/telnet_interface.h>
|
||||
#include <osmocom/vty/ports.h>
|
||||
#include <osmocom/vty/logging.h>
|
||||
#include <openbsc/vty.h>
|
||||
#include <openbsc/bss.h>
|
||||
#include <openbsc/mncc.h>
|
||||
#include <openbsc/handover_decision.h>
|
||||
#include <openbsc/rrlp.h>
|
||||
#include <osmocom/ctrl/control_if.h>
|
||||
#include <osmocom/ctrl/ports.h>
|
||||
#include <osmocom/ctrl/control_vty.h>
|
||||
#include <osmocom/ctrl/ports.h>
|
||||
#include <openbsc/ctrl.h>
|
||||
#include <openbsc/osmo_bsc_rf.h>
|
||||
#include <openbsc/smpp.h>
|
||||
#include <openbsc/mgcpgw_client.h>
|
||||
|
||||
#include "../../bscconfig.h"
|
||||
#include <openbsc/msc_ifaces.h>
|
||||
|
||||
/* MCC and MNC for the Location Area Identifier */
|
||||
struct gsm_network *bsc_gsmnet = 0;
|
||||
static const char *database_name = "sms.db";
|
||||
static const char *config_file = "openbsc.cfg";
|
||||
static const char *rf_ctrl_path = NULL;
|
||||
extern const char *openbsc_copyright;
|
||||
static int daemonize = 0;
|
||||
static const char *mncc_sock_path = NULL;
|
||||
static int use_db_counter = 1;
|
||||
#include <openbsc/iu.h>
|
||||
#include <openbsc/iucs.h>
|
||||
#include <openbsc/iucs_ranap.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"
|
||||
"Based on OsmoNITB:\r\n"
|
||||
" (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>\r\n"
|
||||
" (C) 2009-2012 by Holger Hans Peter Freyther <zecke@selfish.org>\r\n"
|
||||
"Contributions by Daniel Willmann, Jan Lübbe, Stefan Schmidt\r\n"
|
||||
"Dieter Spaar, Andreas Eversberg, Sylvain Munaut, Neels Hofmeyr\r\n\r\n"
|
||||
"License AGPLv3+: GNU AGPL version 3 or later <http://gnu.org/licenses/agpl-3.0.html>\r\n"
|
||||
"This is free software: you are free to change and redistribute it.\r\n"
|
||||
"There is NO WARRANTY, to the extent permitted by law.\r\n";
|
||||
|
||||
void *tall_msc_ctx = NULL;
|
||||
|
||||
/* satisfy deps from libbsc legacy.
|
||||
TODO double check these */
|
||||
void *tall_fle_ctx = NULL;
|
||||
void *tall_paging_ctx = NULL;
|
||||
void *tall_map_ctx = NULL;
|
||||
void *tall_upq_ctx = NULL;
|
||||
/* end deps from libbsc legacy. */
|
||||
|
||||
static struct {
|
||||
const char *database_name;
|
||||
const char *config_file;
|
||||
int daemonize;
|
||||
const char *mncc_sock_path;
|
||||
int use_db_counter;
|
||||
} msc_cmdline_config = {
|
||||
"sms.db",
|
||||
"osmo-msc.cfg",
|
||||
0,
|
||||
0,
|
||||
1
|
||||
};
|
||||
|
||||
/* timer to store statistics */
|
||||
#define DB_SYNC_INTERVAL 60, 0
|
||||
|
@ -104,7 +146,7 @@ static void print_help()
|
|||
printf(" -P --rtp-proxy Enable the RTP Proxy code inside OpenBSC.\n");
|
||||
printf(" -e --log-level number Set a global loglevel.\n");
|
||||
printf(" -M --mncc-sock-path PATH Disable built-in MNCC handler and offer socket.\n");
|
||||
printf(" -m --mncc-sock Same as `-M /tmp/bsc_mncc' (deprecated).\n");
|
||||
printf(" -m --mncc-sock Same as `-M /tmp/bsc_mncc' (deprecated).\n");
|
||||
printf(" -C --no-dbcounter Disable regular syncing of counters to database.\n");
|
||||
printf(" -r --rf-ctl PATH A unix domain socket to listen for cmds.\n");
|
||||
printf(" -p --pcap PATH Write abis communication to pcap trace file.\n");
|
||||
|
@ -130,11 +172,10 @@ static void handle_options(int argc, char **argv)
|
|||
{"mncc-sock", 0, 0, 'm'},
|
||||
{"mncc-sock-path", 1, 0, 'M'},
|
||||
{"no-dbcounter", 0, 0, 'C'},
|
||||
{"rf-ctl", 1, 0, 'r'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
c = getopt_long(argc, argv, "hd:Dsl:ar:p:TPVc:e:mCr:M:",
|
||||
c = getopt_long(argc, argv, "hd:Dsl:ap:TPVc:e:mCM:",
|
||||
long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
|
@ -151,13 +192,13 @@ static void handle_options(int argc, char **argv)
|
|||
log_parse_category_mask(osmo_stderr_target, optarg);
|
||||
break;
|
||||
case 'D':
|
||||
daemonize = 1;
|
||||
msc_cmdline_config.daemonize = 1;
|
||||
break;
|
||||
case 'l':
|
||||
database_name = optarg;
|
||||
msc_cmdline_config.database_name = optarg;
|
||||
break;
|
||||
case 'c':
|
||||
config_file = optarg;
|
||||
msc_cmdline_config.config_file = optarg;
|
||||
break;
|
||||
case 'p':
|
||||
create_pcap_file(optarg);
|
||||
|
@ -165,37 +206,61 @@ static void handle_options(int argc, char **argv)
|
|||
case 'T':
|
||||
log_set_print_timestamp(osmo_stderr_target, 1);
|
||||
break;
|
||||
#if BEFORE_MSCSPLIT
|
||||
case 'P':
|
||||
ipacc_rtp_direct = 0;
|
||||
break;
|
||||
#endif
|
||||
case 'e':
|
||||
log_set_log_level(osmo_stderr_target, atoi(optarg));
|
||||
break;
|
||||
case 'M':
|
||||
mncc_sock_path = optarg;
|
||||
msc_cmdline_config.mncc_sock_path = optarg;
|
||||
break;
|
||||
case 'm':
|
||||
mncc_sock_path = "/tmp/bsc_mncc";
|
||||
msc_cmdline_config.mncc_sock_path = "/tmp/bsc_mncc";
|
||||
break;
|
||||
case 'C':
|
||||
use_db_counter = 0;
|
||||
msc_cmdline_config.use_db_counter = 0;
|
||||
break;
|
||||
case 'V':
|
||||
print_version(1);
|
||||
exit(0);
|
||||
break;
|
||||
case 'r':
|
||||
rf_ctrl_path = optarg;
|
||||
break;
|
||||
default:
|
||||
/* catch unknown options *as well as* missing arguments. */
|
||||
fprintf(stderr, "Error in command line options. Exiting.\n");
|
||||
exit(-1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct gsm_network *msc_network_alloc(void *ctx,
|
||||
mncc_recv_cb_t mncc_recv)
|
||||
{
|
||||
struct gsm_network *net = gsm_network_init(ctx, 1, 1, mncc_recv);
|
||||
if (!net)
|
||||
return NULL;
|
||||
|
||||
net->name_long = talloc_strdup(net, "OsmoMSC");
|
||||
net->name_short = talloc_strdup(net, "OsmoMSC");
|
||||
|
||||
net->gsup_server_addr_str = talloc_strdup(net,
|
||||
MSC_HLR_REMOTE_IP_DEFAULT);
|
||||
net->gsup_server_port = MSC_HLR_REMOTE_PORT_DEFAULT;
|
||||
|
||||
mgcpgw_client_conf_init(&net->mgcpgw.conf);
|
||||
|
||||
return net;
|
||||
}
|
||||
|
||||
void msc_network_shutdown(struct gsm_network *net)
|
||||
{
|
||||
/* nothing here yet */
|
||||
}
|
||||
|
||||
static struct gsm_network *msc_network = NULL;
|
||||
|
||||
extern void *tall_vty_ctx;
|
||||
static void signal_handler(int signal)
|
||||
{
|
||||
|
@ -203,7 +268,7 @@ static void signal_handler(int signal)
|
|||
|
||||
switch (signal) {
|
||||
case SIGINT:
|
||||
bsc_shutdown_net(bsc_gsmnet);
|
||||
msc_network_shutdown(msc_network);
|
||||
osmo_signal_dispatch(SS_L_GLOBAL, S_L_GLOBAL_SHUTDOWN, NULL);
|
||||
sleep(3);
|
||||
exit(0);
|
||||
|
@ -214,7 +279,7 @@ static void signal_handler(int signal)
|
|||
* and then return to the caller, who will abort the process */
|
||||
case SIGUSR1:
|
||||
talloc_report(tall_vty_ctx, stderr);
|
||||
talloc_report_full(tall_bsc_ctx, stderr);
|
||||
talloc_report_full(tall_msc_ctx, stderr);
|
||||
break;
|
||||
case SIGUSR2:
|
||||
talloc_report_full(tall_vty_ctx, stderr);
|
||||
|
@ -237,72 +302,80 @@ static void db_sync_timer_cb(void *data)
|
|||
osmo_timer_schedule(&db_sync_timer, DB_SYNC_INTERVAL);
|
||||
}
|
||||
|
||||
static void subscr_expire_cb(void *data)
|
||||
{
|
||||
/* TODO expire vlr_subscrs? */
|
||||
osmo_timer_schedule(&bsc_gsmnet->subscr_expire_timer, EXPIRE_INTERVAL);
|
||||
}
|
||||
|
||||
extern int bsc_vty_go_parent(struct vty *vty);
|
||||
|
||||
static struct vty_app_info vty_info = {
|
||||
.name = "OpenBSC",
|
||||
static struct vty_app_info msc_vty_info = {
|
||||
.name = "OsmoMSC",
|
||||
.version = PACKAGE_VERSION,
|
||||
.go_parent_cb = bsc_vty_go_parent,
|
||||
.is_config_node = bsc_vty_is_config_node,
|
||||
};
|
||||
|
||||
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, osmo_hexdump(msg->data, msg->len));
|
||||
if (ra_id) {
|
||||
DEBUGP(DIUCS, "got IuCS message on"
|
||||
" MNC %d MCC %d LAC %d RAC %d\n",
|
||||
ra_id->mnc, ra_id->mcc, ra_id->lac, ra_id->rac);
|
||||
}
|
||||
|
||||
return gsm0408_rcvmsg_iucs(msc_network, msg, ra_id? &ra_id->lac : NULL);
|
||||
}
|
||||
|
||||
static int rx_iu_event(struct ue_conn_ctx *ctx, enum iu_event_type type,
|
||||
void *data)
|
||||
{
|
||||
DEBUGP(DIUCS, "got IuCS event %u: %s\n", type,
|
||||
iu_event_type_str(type));
|
||||
|
||||
return iucs_rx_ranap_event(msc_network, ctx, type, data);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int rc;
|
||||
|
||||
vty_info.copyright = openbsc_copyright;
|
||||
msc_vty_info.copyright = osmomsc_copyright;
|
||||
|
||||
tall_bsc_ctx = talloc_named_const(NULL, 1, "openbsc");
|
||||
talloc_ctx_init(tall_bsc_ctx);
|
||||
on_dso_load_rrlp();
|
||||
on_dso_load_ho_dec();
|
||||
tall_msc_ctx = talloc_named_const(NULL, 1, "osmo_msc");
|
||||
talloc_ctx_init(tall_msc_ctx);
|
||||
|
||||
libosmo_abis_init(tall_bsc_ctx);
|
||||
osmo_init_logging(&log_info);
|
||||
osmo_stats_init(tall_bsc_ctx);
|
||||
bts_init();
|
||||
vty_init(&vty_info);
|
||||
osmo_stats_init(tall_msc_ctx);
|
||||
|
||||
/* For --version, vty_init() must be called before handling options */
|
||||
vty_init(&msc_vty_info);
|
||||
|
||||
/* Parse options */
|
||||
handle_options(argc, argv);
|
||||
|
||||
/* Allocate global gsm_network struct; choose socket/internal MNCC */
|
||||
rc = bsc_network_alloc(mncc_sock_path?
|
||||
mncc_sock_from_cc : int_mncc_recv);
|
||||
if (rc) {
|
||||
fprintf(stderr, "Allocation failed. Exiting.\n");
|
||||
exit(1);
|
||||
}
|
||||
msc_network = msc_network_alloc(tall_msc_ctx,
|
||||
msc_cmdline_config.mncc_sock_path?
|
||||
mncc_sock_from_cc
|
||||
: int_mncc_recv);
|
||||
if (!msc_network)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Initialize VTY */
|
||||
bsc_vty_init(bsc_gsmnet);
|
||||
ctrl_vty_init(tall_bsc_ctx);
|
||||
if (msc_vlr_alloc(bsc_gsmnet)) {
|
||||
if (msc_vlr_alloc(msc_network)) {
|
||||
fprintf(stderr, "Failed to allocate VLR\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ctrl_vty_init(tall_msc_ctx);
|
||||
logging_vty_add_cmds(&log_info);
|
||||
msc_vty_init(msc_network);
|
||||
bsc_vty_init_extra();
|
||||
|
||||
#ifdef BUILD_SMPP
|
||||
if (smpp_openbsc_alloc_init(tall_bsc_ctx) < 0)
|
||||
if (smpp_openbsc_alloc_init(tall_msc_ctx) < 0)
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
/* Initialize MNCC socket if appropriate */
|
||||
if (mncc_sock_path) {
|
||||
rc = mncc_sock_init(bsc_gsmnet, mncc_sock_path);
|
||||
if (rc) {
|
||||
fprintf(stderr, "MNCC socket initialization failed. exiting.\n");
|
||||
exit(1);
|
||||
}
|
||||
} else
|
||||
DEBUGP(DMNCC, "Using internal MNCC handler.\n");
|
||||
|
||||
/*
|
||||
* For osmo-nitb, skip TCH/F for now, because otherwise dyn TS
|
||||
* always imply the possibility to have a mix of TCH/F and
|
||||
|
@ -315,78 +388,91 @@ int main(int argc, char **argv)
|
|||
* mismatch. Moreover, this option may be overwritten in the
|
||||
* config file or in VTY.
|
||||
*/
|
||||
bsc_gsmnet->dyn_ts_allow_tch_f = false;
|
||||
msc_network->dyn_ts_allow_tch_f = false;
|
||||
|
||||
/* Read the config */
|
||||
rc = bsc_network_configure(config_file);
|
||||
rc = vty_read_config_file(msc_cmdline_config.config_file, NULL);
|
||||
if (rc < 0) {
|
||||
fprintf(stderr, "Reading config failed. Exiting.\n");
|
||||
exit(1);
|
||||
LOGP(DNM, LOGL_FATAL, "Failed to parse the config file: '%s'\n",
|
||||
msc_cmdline_config.config_file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Initialize MNCC socket if appropriate */
|
||||
if (msc_cmdline_config.mncc_sock_path) {
|
||||
rc = mncc_sock_init(msc_network,
|
||||
msc_cmdline_config.mncc_sock_path);
|
||||
if (rc) {
|
||||
fprintf(stderr, "MNCC socket initialization failed. exiting.\n");
|
||||
exit(1);
|
||||
}
|
||||
} else
|
||||
DEBUGP(DMNCC, "Using internal MNCC handler.\n");
|
||||
|
||||
/* start telnet after reading config for vty_get_bind_addr() */
|
||||
rc = telnet_init_dynif(tall_msc_ctx, &msc_network,
|
||||
vty_get_bind_addr(), OSMO_VTY_PORT_MSC);
|
||||
if (rc < 0)
|
||||
return 2;
|
||||
|
||||
/* BSC stuff is to be split behind an A-interface to be used with
|
||||
* OsmoBSC, but there is no need to remove it yet. Most of the
|
||||
* following code until iu_init() is legacy. */
|
||||
|
||||
#ifdef BUILD_SMPP
|
||||
smpp_openbsc_start(bsc_gsmnet);
|
||||
smpp_openbsc_start(msc_network);
|
||||
#endif
|
||||
bsc_api_init(bsc_gsmnet, msc_bsc_api());
|
||||
|
||||
/* start control interface after reading config for
|
||||
* ctrl_vty_get_bind_addr() */
|
||||
bsc_gsmnet->ctrl = bsc_controlif_setup(bsc_gsmnet,
|
||||
ctrl_vty_get_bind_addr(),
|
||||
OSMO_CTRL_PORT_NITB_BSC);
|
||||
if (!bsc_gsmnet->ctrl) {
|
||||
msc_network->ctrl = ctrl_interface_setup_dynip(msc_network, ctrl_vty_get_bind_addr(),
|
||||
OSMO_CTRL_PORT_MSC, NULL);
|
||||
if (!msc_network->ctrl) {
|
||||
printf("Failed to initialize control interface. Exiting.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if 0
|
||||
TODO: we probably want some of the _net_ ctrl commands from bsc_base_ctrl_cmds_install().
|
||||
if (bsc_base_ctrl_cmds_install() != 0) {
|
||||
printf("Failed to initialize the BSC control commands.\n");
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (msc_ctrl_cmds_install(bsc_gsmnet) != 0) {
|
||||
if (msc_ctrl_cmds_install(msc_network) != 0) {
|
||||
printf("Failed to initialize the MSC control commands.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* seed the PRNG */
|
||||
srand(time(NULL));
|
||||
/* TODO: is this used for crypto?? Improve randomness, at least we
|
||||
* should try to use the nanoseconds part of the current time. */
|
||||
|
||||
bsc_gsmnet->bsc_data->rf_ctrl = osmo_bsc_rf_create(rf_ctrl_path, bsc_gsmnet);
|
||||
if (!bsc_gsmnet->bsc_data->rf_ctrl) {
|
||||
fprintf(stderr, "Failed to create the RF service.\n");
|
||||
exit(1);
|
||||
if (db_init(msc_cmdline_config.database_name)) {
|
||||
printf("DB: Failed to init database: %s\n",
|
||||
msc_cmdline_config.database_name);
|
||||
return 4;
|
||||
}
|
||||
|
||||
osmo_fsm_log_addr(true);
|
||||
if (msc_vlr_start(bsc_gsmnet)) {
|
||||
if (msc_vlr_start(msc_network)) {
|
||||
fprintf(stderr, "Failed to start VLR\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
msc_subscr_conn_init();
|
||||
|
||||
if (db_init(database_name)) {
|
||||
printf("DB: Failed to init database. Please check the option settings.\n");
|
||||
return -1;
|
||||
}
|
||||
printf("DB: Database initialized.\n");
|
||||
|
||||
if (db_prepare()) {
|
||||
printf("DB: Failed to prepare database.\n");
|
||||
return -1;
|
||||
return 5;
|
||||
}
|
||||
printf("DB: Database prepared.\n");
|
||||
|
||||
/* setup the timer */
|
||||
osmo_timer_setup(&db_sync_timer, db_sync_timer_cb, NULL);
|
||||
if (use_db_counter)
|
||||
if (msc_cmdline_config.use_db_counter)
|
||||
osmo_timer_schedule(&db_sync_timer, DB_SYNC_INTERVAL);
|
||||
|
||||
osmo_timer_setup(&bsc_gsmnet->subscr_expire_timer, subscr_expire_cb,
|
||||
NULL);
|
||||
osmo_timer_schedule(&bsc_gsmnet->subscr_expire_timer, EXPIRE_INTERVAL);
|
||||
|
||||
signal(SIGINT, &signal_handler);
|
||||
signal(SIGABRT, &signal_handler);
|
||||
signal(SIGUSR1, &signal_handler);
|
||||
|
@ -394,14 +480,30 @@ int main(int argc, char **argv)
|
|||
osmo_init_ignore_signals();
|
||||
|
||||
/* start the SMS queue */
|
||||
if (sms_queue_start(bsc_gsmnet, 20) != 0)
|
||||
if (sms_queue_start(msc_network, 20) != 0)
|
||||
return -1;
|
||||
|
||||
if (daemonize) {
|
||||
msc_network->mgcpgw.client = mgcpgw_client_init(
|
||||
msc_network, &msc_network->mgcpgw.conf);
|
||||
|
||||
if (mgcpgw_client_connect(msc_network->mgcpgw.client)) {
|
||||
printf("MGCPGW connect failed\n");
|
||||
return 7;
|
||||
}
|
||||
|
||||
/* Set up A-Interface */
|
||||
/* TODO: implement A-Interface and remove above legacy stuff. */
|
||||
|
||||
#ifdef BUILD_IU
|
||||
/* Set up IuCS */
|
||||
iu_init(tall_msc_ctx, "127.0.0.1", 14001, rcvmsg_iu_cs, rx_iu_event);
|
||||
#endif
|
||||
|
||||
if (msc_cmdline_config.daemonize) {
|
||||
rc = osmo_daemonize();
|
||||
if (rc < 0) {
|
||||
perror("Error during daemonize");
|
||||
exit(1);
|
||||
return 6;
|
||||
}
|
||||
}
|
||||
|
|
@ -455,69 +455,6 @@ class TestCtrlBSC(TestCtrlBase):
|
|||
self.assertEquals(r['var'], 'mcc')
|
||||
self.assertEquals(r['value'], '202')
|
||||
|
||||
class TestCtrlNITB(TestCtrlBase):
|
||||
|
||||
def tearDown(self):
|
||||
TestCtrlBase.tearDown(self)
|
||||
os.unlink("test_hlr.sqlite3")
|
||||
|
||||
def ctrl_command(self):
|
||||
return ["./src/osmo-nitb/osmo-nitb", "-c",
|
||||
"doc/examples/osmo-nitb/nanobts/openbsc.cfg", "-l", "test_hlr.sqlite3"]
|
||||
|
||||
def ctrl_app(self):
|
||||
return (4249, "./src/osmo-nitb/osmo-nitb", "OsmoBSC", "nitb")
|
||||
|
||||
def testNumberOfBTS(self):
|
||||
r = self.do_get('number-of-bts')
|
||||
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||
self.assertEquals(r['var'], 'number-of-bts')
|
||||
self.assertEquals(r['value'], '1')
|
||||
|
||||
def testSubscriberAddRemove(self):
|
||||
r = self.do_set('subscriber-modify-v1', '2620345,445566')
|
||||
self.assertEquals(r['mtype'], 'ERROR')
|
||||
self.assertEquals(r['error'], 'Command moved to osmo-hlr, no longer available here')
|
||||
|
||||
r = self.do_set('subscriber-delete-v1', '2620345')
|
||||
self.assertEquals(r['mtype'], 'ERROR')
|
||||
self.assertEquals(r['error'], 'Command moved to osmo-hlr, no longer available here')
|
||||
|
||||
def testSubscriberList(self):
|
||||
# TODO. Add command to mark a subscriber as active
|
||||
r = self.do_get('subscriber-list-active-v1')
|
||||
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||
self.assertEquals(r['var'], 'subscriber-list-active-v1')
|
||||
self.assertEquals(r['value'], None)
|
||||
|
||||
def testApplyConfiguration(self):
|
||||
r = self.do_get('bts.0.apply-configuration')
|
||||
self.assertEquals(r['mtype'], 'ERROR')
|
||||
self.assertEquals(r['error'], 'Write Only attribute')
|
||||
|
||||
r = self.do_set('bts.0.apply-configuration', '1')
|
||||
self.assertEquals(r['mtype'], 'SET_REPLY')
|
||||
self.assertEquals(r['value'], 'Tried to drop the BTS')
|
||||
|
||||
def testGprsMode(self):
|
||||
r = self.do_get('bts.0.gprs-mode')
|
||||
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||
self.assertEquals(r['var'], 'bts.0.gprs-mode')
|
||||
self.assertEquals(r['value'], 'none')
|
||||
|
||||
r = self.do_set('bts.0.gprs-mode', 'bla')
|
||||
self.assertEquals(r['mtype'], 'ERROR')
|
||||
self.assertEquals(r['error'], 'Mode is not known')
|
||||
|
||||
r = self.do_set('bts.0.gprs-mode', 'egprs')
|
||||
self.assertEquals(r['mtype'], 'SET_REPLY')
|
||||
self.assertEquals(r['value'], 'egprs')
|
||||
|
||||
r = self.do_get('bts.0.gprs-mode')
|
||||
self.assertEquals(r['mtype'], 'GET_REPLY')
|
||||
self.assertEquals(r['var'], 'bts.0.gprs-mode')
|
||||
self.assertEquals(r['value'], 'egprs')
|
||||
|
||||
class TestCtrlNAT(TestCtrlBase):
|
||||
|
||||
def ctrl_command(self):
|
||||
|
@ -587,10 +524,6 @@ def add_bsc_test(suite, workdir):
|
|||
test = unittest.TestLoader().loadTestsFromTestCase(TestCtrlBSC)
|
||||
suite.addTest(test)
|
||||
|
||||
def add_nitb_test(suite, workdir):
|
||||
test = unittest.TestLoader().loadTestsFromTestCase(TestCtrlNITB)
|
||||
suite.addTest(test)
|
||||
|
||||
def add_nat_test(suite, workdir):
|
||||
if not os.path.isfile(os.path.join(workdir, "src/osmo-bsc_nat/osmo-bsc_nat")):
|
||||
print("Skipping the NAT test")
|
||||
|
@ -636,7 +569,6 @@ if __name__ == '__main__':
|
|||
print "Running tests for specific control commands"
|
||||
suite = unittest.TestSuite()
|
||||
add_bsc_test(suite, workdir)
|
||||
add_nitb_test(suite, workdir)
|
||||
add_nat_test(suite, workdir)
|
||||
add_sgsn_test(suite, workdir)
|
||||
res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)
|
||||
|
|
|
@ -36,6 +36,7 @@ db_test_LDADD = \
|
|||
$(top_builddir)/src/libcommon-cs/libcommon-cs.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(top_builddir)/tests/libiudummy/libiudummy.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
$(LIBOSMOABIS_LIBS) \
|
||||
$(LIBOSMOGSM_LIBS) \
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <openbsc/db.h>
|
||||
#include <openbsc/gsm_subscriber.h>
|
||||
#include <openbsc/gsm_04_11.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
|
||||
#include <osmocom/core/application.h>
|
||||
|
||||
|
@ -261,3 +262,25 @@ void vlr_subscr_rx_auth_resp() {}
|
|||
void vlr_loc_update() {}
|
||||
void vlr_proc_acc_req() {}
|
||||
void vlr_init() {}
|
||||
unsigned int mgcpgw_client_next_endpoint(struct mgcpgw_client *client)
|
||||
{ return 0; }
|
||||
struct msgb *mgcp_msg_crcx(struct mgcpgw_client *mgcp,
|
||||
uint16_t rtp_endpoint, unsigned int call_id,
|
||||
enum mgcp_connection_mode mode)
|
||||
{ return NULL; }
|
||||
struct msgb *mgcp_msg_mdcx(struct mgcpgw_client *mgcp,
|
||||
uint16_t rtp_endpoint, const char *rtp_conn_addr,
|
||||
uint16_t rtp_port, enum mgcp_connection_mode mode)
|
||||
{ return NULL; }
|
||||
int mgcpgw_client_tx(struct mgcpgw_client *mgcp, struct msgb *msg,
|
||||
mgcp_response_cb_t response_cb, void *priv)
|
||||
{ return -EINVAL; }
|
||||
const char *mgcpgw_client_remote_addr_str(struct mgcpgw_client *mgcp)
|
||||
{ return "0.0.0.0"; }
|
||||
uint32_t mgcpgw_client_remote_addr_n(struct mgcpgw_client *mgcp)
|
||||
{ return 0; }
|
||||
int mgcp_response_parse_params(struct mgcp_response *r)
|
||||
{ return -EINVAL; }
|
||||
struct RANAP_Cause;
|
||||
int iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
|
||||
{ return 0; }
|
||||
|
|
|
@ -22,10 +22,13 @@ AM_LDFLAGS = \
|
|||
EXTRA_DIST = \
|
||||
mgcp_test.ok \
|
||||
mgcp_transcoding_test.ok \
|
||||
mgcpgw_client_test.ok \
|
||||
mgcpgw_client_test.err \
|
||||
$(NULL)
|
||||
|
||||
noinst_PROGRAMS = \
|
||||
mgcp_test \
|
||||
mgcpgw_client_test \
|
||||
$(NULL)
|
||||
if BUILD_MGCP_TRANSCODING
|
||||
noinst_PROGRAMS += \
|
||||
|
@ -70,3 +73,21 @@ mgcp_transcoding_test_LDADD = \
|
|||
-lrt \
|
||||
-lm \
|
||||
$(NULL)
|
||||
|
||||
mgcpgw_client_test_SOURCES = \
|
||||
mgcpgw_client_test.c \
|
||||
$(NULL)
|
||||
|
||||
mgcpgw_client_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
$(LIBOSMOGSM_LIBS) \
|
||||
$(LIBOSMOSCCP_LIBS) \
|
||||
$(LIBOSMOVTY_LIBS) \
|
||||
$(LIBRARY_DL) \
|
||||
$(LIBOSMONETIF_LIBS) \
|
||||
-lrt \
|
||||
-lm \
|
||||
$(NULL)
|
||||
|
|
|
@ -0,0 +1,165 @@
|
|||
/*
|
||||
* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
|
||||
* All Rights Reserved
|
||||
*
|
||||
* Author: Neels Hofmeyr
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <osmocom/core/msgb.h>
|
||||
#include <osmocom/core/application.h>
|
||||
#include <openbsc/mgcp.h>
|
||||
#include <openbsc/mgcpgw_client.h>
|
||||
|
||||
void *ctx;
|
||||
|
||||
#define buf_len 4096
|
||||
|
||||
#if 0
|
||||
static struct msgb *from_hex(const char *hex)
|
||||
{
|
||||
struct msgb *msg = msgb_alloc(buf_len, "mgcpgw_test_from_hex");
|
||||
unsigned int l = osmo_hexparse(hex, msg->data, buf_len);
|
||||
msg->l2h = msgb_put(msg, l);
|
||||
return msg;
|
||||
}
|
||||
|
||||
static struct msgb *mgcp_from_str(const char *head, const char *params)
|
||||
{
|
||||
struct msgb *msg = msgb_alloc(buf_len, "mgcp_from_str");
|
||||
unsigned int l;
|
||||
char *data;
|
||||
l = strlen(head);
|
||||
msg->l2h = msgb_put(msg, l);
|
||||
data = (char*)msgb_l2(msg);
|
||||
strncpy(data, head, l);
|
||||
|
||||
data = (char*)msgb_put(msg, 1);
|
||||
*data = '\n';
|
||||
|
||||
l = strlen(params);
|
||||
data = (char*)msgb_put(msg, l);
|
||||
strncpy(data, params, l);
|
||||
|
||||
return msg;
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct msgb *from_str(const char *str)
|
||||
{
|
||||
struct msgb *msg = msgb_alloc(buf_len, "from_str");
|
||||
unsigned int l = strlen(str);
|
||||
char *data;
|
||||
msg->l2h = msgb_put(msg, l);
|
||||
data = (char*)msgb_l2(msg);
|
||||
strncpy(data, str, l);
|
||||
return msg;
|
||||
}
|
||||
|
||||
static struct mgcpgw_client_conf conf;
|
||||
struct mgcpgw_client *mgcp = NULL;
|
||||
|
||||
static void reply_to(mgcp_trans_id_t trans_id, int code, const char *comment,
|
||||
int conn_id, const char *params)
|
||||
{
|
||||
static char compose[4096 - 128];
|
||||
int len;
|
||||
|
||||
len = snprintf(compose, sizeof(compose),
|
||||
"%d %u %s\r\nI: %d\n\n%s",
|
||||
code, trans_id, comment, conn_id, params);
|
||||
OSMO_ASSERT(len < sizeof(compose));
|
||||
OSMO_ASSERT(len > 0);
|
||||
|
||||
printf("composed response:\n-----\n%s\n-----\n",
|
||||
compose);
|
||||
mgcpgw_client_rx(mgcp, from_str(compose));
|
||||
}
|
||||
|
||||
void test_response_cb(struct mgcp_response *response, void *priv)
|
||||
{
|
||||
OSMO_ASSERT(priv == mgcp);
|
||||
mgcp_response_parse_params(response);
|
||||
|
||||
printf("response cb received:\n"
|
||||
" head.response_code = %d\n"
|
||||
" head.trans_id = %u\n"
|
||||
" head.comment = %s\n"
|
||||
" audio_port = %u\n",
|
||||
response->head.response_code,
|
||||
response->head.trans_id,
|
||||
response->head.comment,
|
||||
response->audio_port
|
||||
);
|
||||
}
|
||||
|
||||
mgcp_trans_id_t dummy_mgcp_send(struct msgb *msg)
|
||||
{
|
||||
mgcp_trans_id_t trans_id;
|
||||
trans_id = msg->cb[MSGB_CB_MGCP_TRANS_ID];
|
||||
char *end;
|
||||
|
||||
OSMO_ASSERT(mgcpgw_client_pending_add(mgcp, trans_id, test_response_cb, mgcp));
|
||||
|
||||
end = (char*)msgb_put(msg, 1);
|
||||
*end = '\0';
|
||||
printf("composed:\n-----\n%s\n-----\n",
|
||||
(char*)msgb_l2(msg));
|
||||
|
||||
talloc_free(msg);
|
||||
return trans_id;
|
||||
}
|
||||
|
||||
void test_crcx(void)
|
||||
{
|
||||
struct msgb *msg;
|
||||
mgcp_trans_id_t trans_id;
|
||||
|
||||
printf("\n===== %s =====\n", __func__);
|
||||
|
||||
if (mgcp)
|
||||
talloc_free(mgcp);
|
||||
mgcp = mgcpgw_client_init(ctx, &conf);
|
||||
|
||||
msg = mgcp_msg_crcx(mgcp, 23, 42, MGCP_CONN_LOOPBACK);
|
||||
trans_id = dummy_mgcp_send(msg);
|
||||
|
||||
reply_to(trans_id, 200, "OK", 1,
|
||||
"v=0\r\n"
|
||||
"o=- 1 23 IN IP4 10.9.1.120\r\n"
|
||||
"s=-\r\n"
|
||||
"c=IN IP4 10.9.1.120\r\n"
|
||||
"t=0 0\r\n"
|
||||
"m=audio 16002 RTP/AVP 98\r\n"
|
||||
"a=rtpmap:98 AMR/8000\r\n"
|
||||
"a=ptime:20\r\n");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
ctx = talloc_named_const(NULL, 1, "mgcpgw_client_test");
|
||||
msgb_talloc_ctx_init(ctx, 0);
|
||||
osmo_init_logging(&log_info);
|
||||
|
||||
mgcpgw_client_conf_init(&conf);
|
||||
|
||||
test_crcx();
|
||||
|
||||
printf("Done\n");
|
||||
fprintf(stderr, "Done\n");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Done
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
===== test_crcx =====
|
||||
composed:
|
||||
-----
|
||||
CRCX 1 17@mgw MGCP 1.0
|
||||
C: 2a
|
||||
L: p:20, a:AMR, nt:IN
|
||||
M: loopback
|
||||
|
||||
-----
|
||||
composed response:
|
||||
-----
|
||||
200 1 OK
|
||||
I: 1
|
||||
|
||||
v=0
|
||||
o=- 1 23 IN IP4 10.9.1.120
|
||||
s=-
|
||||
c=IN IP4 10.9.1.120
|
||||
t=0 0
|
||||
m=audio 16002 RTP/AVP 98
|
||||
a=rtpmap:98 AMR/8000
|
||||
a=ptime:20
|
||||
|
||||
-----
|
||||
response cb received:
|
||||
head.response_code = 200
|
||||
head.trans_id = 1
|
||||
head.comment = OK
|
||||
audio_port = 16002
|
||||
Done
|
|
@ -12,6 +12,9 @@ AM_CFLAGS = \
|
|||
$(LIBCRYPTO_CFLAGS) \
|
||||
$(LIBOSMOVTY_CFLAGS) \
|
||||
$(LIBOSMOABIS_CFLAGS) \
|
||||
$(LIBOSMOSIGTRAN_CFLAGS) \
|
||||
$(LIBOSMORANAP_CFLAGS) \
|
||||
$(LIBASN1C_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
noinst_HEADERS = \
|
||||
|
@ -45,13 +48,24 @@ COMMON_LDADD = \
|
|||
$(top_builddir)/src/libvlr/libvlr.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(NULL)
|
||||
if BUILD_IU
|
||||
COMMON_LDADD += \
|
||||
$(top_builddir)/src/libiu/libiu.a \
|
||||
$(NULL)
|
||||
endif
|
||||
COMMON_LDADD += \
|
||||
$(LIBSMPP34_LIBS) \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
$(LIBOSMOGSM_LIBS) \
|
||||
$(LIBCRYPTO_LIBS) \
|
||||
$(LIBOSMOVTY_LIBS) \
|
||||
$(LIBOSMOABIS_LIBS) \
|
||||
$(LIBOSMOSIGTRAN_LIBS) \
|
||||
$(LIBOSMORANAP_LIBS) \
|
||||
$(LIBASN1C_LIBS) \
|
||||
-ldbi \
|
||||
-lrt \
|
||||
$(NULL)
|
||||
|
@ -59,9 +73,13 @@ COMMON_LDADD = \
|
|||
COMMON_LDFLAGS = \
|
||||
-Wl,--wrap=gsup_client_create \
|
||||
-Wl,--wrap=gsup_client_send \
|
||||
-Wl,--wrap=gsm0808_submit_dtap \
|
||||
-Wl,--wrap=msc_fake_paging_request \
|
||||
-Wl,--wrap=msc_fake_paging_request_stop \
|
||||
-Wl,--wrap=a_tx \
|
||||
-Wl,--wrap=a_page \
|
||||
-Wl,--wrap=iu_tx \
|
||||
-Wl,--wrap=iu_tx_release \
|
||||
-Wl,--wrap=iu_tx_common_id \
|
||||
-Wl,--wrap=iu_page_cs \
|
||||
-Wl,--wrap=msc_stop_paging \
|
||||
-Wl,--wrap=gsm340_gen_scts \
|
||||
-Wl,--wrap=RAND_bytes \
|
||||
$(NULL)
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -27,7 +27,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -89,6 +89,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -136,12 +137,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -151,8 +153,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -166,9 +168,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -186,7 +188,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
|
||||
- ...expecting sres=20bde240
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 0
|
||||
auth_request_sent == 1
|
||||
|
@ -227,12 +229,14 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_f
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
- sending CM Service Accept for MSISDN:46071
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 1
|
||||
- a USSD request is serviced
|
||||
|
@ -242,23 +246,25 @@ DREF MSISDN:46071: MSC conn use - 1 == 1
|
|||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:46071 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:46071: MSISDN = 46071
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -269,9 +275,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||
DMM Subscriber MSISDN:46071 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:46071
|
||||
strcmp(paging_expecting_imsi, vsub->imsi) == 0
|
||||
DMM Subscriber MSISDN:46071 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
|
||||
strcmp(paging_expecting_imsi, imsi) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
|
@ -288,9 +294,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -308,7 +314,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
|
||||
- ...expecting sres=a29514ae
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
- needs auth, not yet accepted
|
||||
|
@ -347,16 +353,21 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:46071 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 5
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
|
@ -370,32 +381,35 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -415,14 +429,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_gsm_authen: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_gsm_authen_tmsi
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -431,9 +444,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -453,7 +466,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -515,6 +528,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -593,12 +607,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -606,8 +621,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -628,9 +643,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -648,7 +663,7 @@ DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count
|
|||
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
|
||||
- ...expecting sres=20bde240
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 0
|
||||
auth_request_sent == 1
|
||||
|
@ -689,12 +704,14 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
- sending CM Service Accept for MSISDN:46071
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 1
|
||||
- a USSD request is serviced
|
||||
|
@ -704,23 +721,25 @@ DREF MSISDN:46071: MSC conn use - 1 == 1
|
|||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:46071 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:46071: MSISDN = 46071
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -731,8 +750,8 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||
DMM Subscriber MSISDN:46071 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:46071
|
||||
DMM Subscriber MSISDN:46071 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0
|
||||
paging_expecting_tmsi == 0x03020100
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
|
@ -750,9 +769,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(TMSI)=50462976
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -770,7 +789,7 @@ DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count
|
|||
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
|
||||
- ...expecting sres=a29514ae
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
- needs auth, not yet accepted
|
||||
|
@ -809,16 +828,21 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_pos
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:46071 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 5
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
|
@ -832,32 +856,35 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -872,9 +899,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -894,7 +921,7 @@ DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count
|
|||
- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=3 auth_types=0x1 and...
|
||||
- ...rand=fa8f20b781b5881329d4fea26b1a3c51
|
||||
- ...expecting sres=5afc8d72
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
lu_result_sent == 0
|
||||
|
@ -923,6 +950,7 @@ DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -1000,12 +1028,13 @@ DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_l
|
|||
DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1013,8 +1042,8 @@ DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -1040,14 +1069,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_gsm_authen_tmsi: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_gsm_authen_imei
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -1056,9 +1084,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -1078,7 +1106,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -1140,6 +1168,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -1179,7 +1208,8 @@ DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
|
|||
DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
|
||||
- DTAP --> MS: 051802
|
||||
DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051802
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -1215,12 +1245,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1228,8 +1259,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -1253,14 +1284,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_gsm_authen_imei: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_gsm_authen_tmsi_imei
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -1269,9 +1299,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -1291,7 +1321,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -1353,6 +1383,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -1392,7 +1423,8 @@ DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
|
|||
DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
|
||||
- DTAP --> MS: 051802
|
||||
DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051802
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -1422,6 +1454,7 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
|
||||
- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
|
@ -1458,12 +1491,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1471,8 +1505,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -1496,14 +1530,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_gsm_authen_tmsi_imei: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_gsm_milenage_authen
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -1512,9 +1545,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL
|
||||
DMM LU/new-LAC: 0/0
|
||||
DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -1534,7 +1567,7 @@ DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000000156f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0
|
||||
DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000010650: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -1577,6 +1610,7 @@ DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000000156f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000010650: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -1624,12 +1658,13 @@ DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
|
||||
DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1639,8 +1674,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:42342: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:42342: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -1654,9 +1689,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -1674,7 +1709,7 @@ DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=c187a53a5e6b9d573cac7c74451fd46d
|
||||
- ...expecting sres=85aa3130
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 0
|
||||
auth_request_sent == 1
|
||||
|
@ -1715,12 +1750,14 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_f
|
|||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
- sending CM Service Accept for MSISDN:42342
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 1
|
||||
- a USSD request is serviced
|
||||
|
@ -1730,23 +1767,25 @@ DREF MSISDN:42342: MSC conn use - 1 == 1
|
|||
DREF MSISDN:42342: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:42342 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:42342: MSISDN = 42342
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:42342: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 1
|
||||
|
@ -1757,9 +1796,9 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:42342 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:42342 usage increases to: 3
|
||||
DMM Subscriber MSISDN:42342 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:42342
|
||||
strcmp(paging_expecting_imsi, vsub->imsi) == 0
|
||||
DMM Subscriber MSISDN:42342 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 0
|
||||
strcmp(paging_expecting_imsi, imsi) == 0
|
||||
DREF VLR subscr MSISDN:42342 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 3
|
||||
|
@ -1776,9 +1815,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(IMSI)=901700000010650
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -1796,7 +1835,7 @@ DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=efa9c29a9742148d5c9070348716e1bb
|
||||
- ...expecting sres=69d5f9fb
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
- needs auth, not yet accepted
|
||||
|
@ -1835,16 +1874,21 @@ DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_
|
|||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:42342 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:42342 usage increases to: 5
|
||||
DREF MSISDN:42342: MSC conn use + 1 == 3
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 4
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 2
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
|
@ -1858,32 +1902,35 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:42342: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:42342: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 2
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:42342: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:42342: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:42342 usage decreases to: 1
|
||||
|
@ -1903,14 +1950,13 @@ DREF VLR subscr MSISDN:42342 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:42342 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:42342
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_gsm_milenage_authen: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -27,7 +27,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -63,6 +63,7 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
|
||||
- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- needs ciph, not yet accepted
|
||||
|
@ -136,12 +137,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -151,8 +153,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -166,9 +168,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
|
||||
|
@ -186,7 +188,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
|
||||
- ...expecting sres=20bde240
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
cm_service_result_sent == 0
|
||||
|
@ -220,6 +222,7 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AU
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
|
||||
- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=07fa7502e07e1c00 retrieve_imeisv=0
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 0
|
||||
cipher_mode_cmd_sent == 1
|
||||
|
@ -246,11 +249,12 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
cm_service_result_sent == 0
|
||||
- a USSD request is serviced
|
||||
expecting USSD:
|
||||
|
@ -259,23 +263,25 @@ DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR
|
|||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:46071 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:46071: MSISDN = 46071
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -286,9 +292,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||
DMM Subscriber MSISDN:46071 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:46071
|
||||
strcmp(paging_expecting_imsi, vsub->imsi) == 0
|
||||
DMM Subscriber MSISDN:46071 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
|
||||
strcmp(paging_expecting_imsi, imsi) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
|
@ -305,9 +311,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
|
||||
|
@ -325,7 +331,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
|
||||
- ...expecting sres=a29514ae
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
- needs auth, not yet accepted
|
||||
|
@ -358,6 +364,7 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AU
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
|
||||
- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=e2b234f807886400 retrieve_imeisv=0
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cipher_mode_cmd_sent == 1
|
||||
- needs ciph, not yet accepted
|
||||
|
@ -383,15 +390,19 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:46071 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 5
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
- SMS was delivered, no requests pending for subscr
|
||||
|
@ -404,32 +415,35 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -449,14 +463,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_ciph: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_ciph_tmsi
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -465,9 +478,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -487,7 +500,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -523,6 +536,7 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
|
||||
- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
auth_request_sent == 1
|
||||
|
@ -628,12 +642,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -641,8 +656,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -663,9 +678,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
|
||||
|
@ -683,7 +698,7 @@ DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count
|
|||
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
|
||||
- ...expecting sres=20bde240
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
cm_service_result_sent == 0
|
||||
|
@ -717,6 +732,7 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
|
||||
- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=07fa7502e07e1c00 retrieve_imeisv=0
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 0
|
||||
cipher_mode_cmd_sent == 1
|
||||
|
@ -743,11 +759,12 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_pos
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
cm_service_result_sent == 0
|
||||
- a USSD request is serviced
|
||||
expecting USSD:
|
||||
|
@ -756,23 +773,25 @@ DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E
|
|||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:46071 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:46071: MSISDN = 46071
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -783,8 +802,8 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||
DMM Subscriber MSISDN:46071 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:46071
|
||||
DMM Subscriber MSISDN:46071 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0
|
||||
paging_expecting_tmsi == 0x03020100
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
|
@ -802,9 +821,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(TMSI)=50462976
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
|
||||
|
@ -822,7 +841,7 @@ DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count
|
|||
- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
|
||||
- ...expecting sres=a29514ae
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
auth_request_sent == 1
|
||||
- needs auth, not yet accepted
|
||||
|
@ -855,6 +874,7 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
|
||||
- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=e2b234f807886400 retrieve_imeisv=0
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cipher_mode_cmd_sent == 1
|
||||
- needs ciph, not yet accepted
|
||||
|
@ -880,15 +900,19 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_pos
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:46071 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 5
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
- SMS was delivered, no requests pending for subscr
|
||||
|
@ -901,32 +925,35 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -946,14 +973,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_ciph_tmsi: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_ciph_imei
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -962,9 +988,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -984,7 +1010,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -1020,6 +1046,7 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
|
||||
- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- needs ciph, not yet accepted
|
||||
|
@ -1085,7 +1112,8 @@ DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
|
|||
DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
|
||||
- DTAP --> MS: 051802
|
||||
DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051802
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -1121,12 +1149,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1134,8 +1163,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -1159,14 +1188,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_ciph_imei: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_ciph_imeisv
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -1175,9 +1203,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -1197,7 +1225,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -1233,6 +1261,7 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
|
||||
- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=1
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
cipher_mode_cmd_sent == 1
|
||||
cipher_mode_cmd_sent_with_imeisv == 1
|
||||
|
@ -1290,6 +1319,7 @@ DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
|
|||
DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_ID_IMEI
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Event VLR_ULA_E_ID_IMEI not permitted
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
|
||||
|
@ -1336,12 +1366,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1351,8 +1382,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -1371,14 +1402,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_ciph_imeisv: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_ciph_tmsi_imei
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -1387,9 +1417,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -1409,7 +1439,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -1445,6 +1475,7 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
|
||||
- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- needs ciph, not yet accepted
|
||||
|
@ -1510,7 +1541,8 @@ DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
|
|||
DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
|
||||
- DTAP --> MS: 051802
|
||||
DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051802
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -1540,6 +1572,7 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
|
||||
- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
|
@ -1576,12 +1609,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1589,8 +1623,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -1614,14 +1648,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_ciph_tmsi_imei: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -27,7 +27,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI
|
||||
|
@ -45,10 +45,11 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
|
||||
- sending LU Reject for IMSI:901700000004620, cause 2
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -58,8 +59,8 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
|||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||
DREF freeing VLR subscr IMSI:901700000004620
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -69,7 +70,7 @@ DREF freeing VLR subscr IMSI:901700000004620
|
|||
===== 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) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_rej_auth_info_net_fail
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -78,9 +79,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -100,7 +101,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _SEND_AUTH_INFO_ERROR = net fail
|
||||
|
@ -118,10 +119,11 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
|
||||
- sending LU Reject for IMSI:901700000004620, cause 17
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -131,8 +133,8 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
|||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||
DREF freeing VLR subscr IMSI:901700000004620
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -142,7 +144,7 @@ DREF freeing VLR subscr IMSI:901700000004620
|
|||
===== 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) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_rej_auth_info_net_fail_reuse_tuples
|
||||
---
|
||||
|
@ -153,9 +155,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -175,7 +177,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -218,6 +220,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -265,12 +268,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -280,8 +284,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -300,9 +304,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -320,7 +324,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _SEND_AUTH_INFO_ERROR = net fail
|
||||
|
@ -363,6 +367,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -409,12 +414,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -424,8 +430,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -435,7 +441,7 @@ DREF freeing VLR subscr MSISDN:46071
|
|||
===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples
|
||||
---
|
||||
|
@ -446,9 +452,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -468,7 +474,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -511,6 +517,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -558,12 +565,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -573,8 +581,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -593,9 +601,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -613,7 +621,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _SEND_AUTH_INFO_ERROR = net fail
|
||||
|
@ -631,10 +639,11 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
|
||||
- sending LU Reject for MSISDN:46071, cause 17
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -644,8 +653,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
|
||||
auth_request_sent == 0
|
||||
|
@ -655,7 +664,7 @@ DREF freeing VLR subscr MSISDN:46071
|
|||
===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples
|
||||
---
|
||||
|
@ -666,9 +675,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -688,7 +697,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -731,6 +740,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -778,12 +788,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -793,8 +804,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -814,9 +825,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -834,7 +845,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI
|
||||
|
@ -852,10 +863,11 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
|
||||
- sending LU Reject for MSISDN:46071, cause 2
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -865,8 +877,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
|
||||
auth_request_sent == 0
|
||||
|
@ -876,7 +888,7 @@ DREF freeing VLR subscr MSISDN:46071
|
|||
===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_acc_but_no_auth_tuples
|
||||
- Location Update request causes a GSUP Send Auth Info request to HLR
|
||||
|
@ -885,9 +897,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -907,7 +919,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT but it lacks auth tuples
|
||||
|
@ -924,10 +936,11 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
|
||||
- sending LU Reject for IMSI:901700000004620, cause 17
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -937,8 +950,8 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
|||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||
DREF freeing VLR subscr IMSI:901700000004620
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -948,7 +961,7 @@ DREF freeing VLR subscr IMSI:901700000004620
|
|||
===== 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) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_rej_lu
|
||||
- Location Update request causes a GSUP LU request to HLR
|
||||
|
@ -957,9 +970,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -982,7 +995,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends UPDATE_LOCATION_ERROR
|
||||
|
@ -1000,10 +1013,11 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
|
||||
- sending LU Reject for IMSI:901700000004620, cause 2
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1013,8 +1027,8 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
|||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||
DREF freeing VLR subscr IMSI:901700000004620
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -1023,7 +1037,7 @@ DREF freeing VLR subscr IMSI:901700000004620
|
|||
===== test_hlr_rej_lu: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_no_insert_data
|
||||
- Location Update request causes a GSUP LU request to HLR
|
||||
|
@ -1032,9 +1046,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -1057,7 +1071,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA
|
||||
|
@ -1095,12 +1109,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1110,8 +1125,8 @@ DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, rele
|
|||
DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
||||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -1121,7 +1136,7 @@ DREF freeing VLR subscr IMSI:901700000004620
|
|||
===== test_hlr_no_insert_data: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -28,7 +28,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
---
|
||||
|
@ -45,14 +45,15 @@ DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
|||
- Total time passed: 4.001363 s
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- Total time passed: 5.001598 s
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
|
||||
- sending LU Reject for IMSI:901700000004620, cause 22
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Removing from parent vlr_lu_fsm(901700000004620)
|
||||
|
@ -67,17 +68,17 @@ DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
|||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||
DREF freeing VLR subscr IMSI:901700000004620
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
lu_result_sent == 2
|
||||
===== test_hlr_timeout_lu_auth_info: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_hlr_timeout_lu_upd_loc_result
|
||||
- Total time passed: 0.000000 s
|
||||
|
@ -87,9 +88,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -112,7 +113,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -144,14 +145,15 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
llist_count(&net->subscr_conns) == 1
|
||||
lu_result_sent == 0
|
||||
- Total time passed: 5.001598 s
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out
|
||||
- sending LU Reject for MSISDN:46071, cause 22
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Removing from parent vlr_lu_fsm(901700000004620)
|
||||
|
@ -166,17 +168,17 @@ DREF MSISDN:46071: MSC conn use - 1 == 0
|
|||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
lu_result_sent == 2
|
||||
===== test_hlr_timeout_lu_upd_loc_result: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -28,7 +28,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -65,14 +65,15 @@ DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
|
|||
llist_count(&net->subscr_conns) == 1
|
||||
lu_result_sent == 0
|
||||
- Total time passed: 5.001598 s
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
|
||||
- sending LU Reject for IMSI:901700000004620, cause 22
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent vlr_lu_fsm(901700000004620)
|
||||
|
@ -87,17 +88,17 @@ DREF IMSI:901700000004620: MSC conn use - 1 == 0
|
|||
DRLL subscr IMSI:901700000004620: Freeing subscriber connection
|
||||
DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
|
||||
DREF freeing VLR subscr IMSI:901700000004620
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
lu_result_sent == 2
|
||||
===== test_ms_timeout_lu_auth_resp: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_ms_timeout_cm_auth_resp
|
||||
- Total time passed: 0.000000 s
|
||||
|
@ -107,9 +108,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -129,7 +130,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VL
|
|||
DVLR GSUP tx: 08010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
|
||||
|
@ -172,6 +173,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -219,12 +221,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -234,8 +237,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -249,9 +252,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
|
||||
|
@ -269,7 +272,7 @@ DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: us
|
|||
- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
|
||||
- ...expecting sres=20bde240
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 0
|
||||
auth_request_sent == 1
|
||||
|
@ -292,16 +295,17 @@ DREF MSISDN:46071: MSC conn use - 1 == 1
|
|||
llist_count(&net->subscr_conns) == 1
|
||||
cm_service_result_sent == 0
|
||||
- Total time passed: 5.001598 s
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT
|
||||
- sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent Process_Access_Request_VLR(901700000004620)
|
||||
|
@ -314,10 +318,10 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
|
||||
- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
cm_service_result_sent == 2
|
||||
|
@ -325,7 +329,7 @@ DREF freeing VLR subscr MSISDN:46071
|
|||
===== test_ms_timeout_cm_auth_resp: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
|
@ -27,6 +27,9 @@ void test_no_authen()
|
|||
{
|
||||
struct vlr_subscr *vsub;
|
||||
const char *imsi = "901700000004620";
|
||||
|
||||
/* No auth only works on GERAN */
|
||||
rx_from_ran = RAN_GERAN_A;
|
||||
|
||||
comment_start();
|
||||
|
||||
|
@ -68,6 +71,7 @@ void test_no_authen()
|
|||
btw("a USSD request is serviced");
|
||||
dtap_expect_tx_ussd("Your extension is 46071\r");
|
||||
ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
|
||||
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
|
||||
|
||||
btw("all requests serviced, conn has been released");
|
||||
EXPECT_CONN_COUNT(0);
|
||||
|
@ -155,6 +159,8 @@ void test_no_authen_tmsi()
|
|||
struct vlr_subscr *vsub;
|
||||
const char *imsi = "901700000004620";
|
||||
|
||||
rx_from_ran = RAN_GERAN_A;
|
||||
|
||||
comment_start();
|
||||
|
||||
net->vlr->cfg.assign_tmsi = true;
|
||||
|
@ -363,6 +369,8 @@ void test_no_authen_imei()
|
|||
struct vlr_subscr *vsub;
|
||||
const char *imsi = "901700000004620";
|
||||
|
||||
rx_from_ran = RAN_GERAN_A;
|
||||
|
||||
comment_start();
|
||||
|
||||
net->vlr->cfg.check_imei_rqd = true;
|
||||
|
@ -423,6 +431,8 @@ void test_no_authen_tmsi_imei()
|
|||
struct vlr_subscr *vsub;
|
||||
const char *imsi = "901700000004620";
|
||||
|
||||
rx_from_ran = RAN_GERAN_A;
|
||||
|
||||
comment_start();
|
||||
|
||||
net->vlr->cfg.assign_tmsi = true;
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -30,7 +30,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -90,12 +90,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -105,8 +106,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -120,9 +121,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
|
||||
|
@ -140,14 +141,15 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_do
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
- sending CM Service Accept for MSISDN:46071
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 1
|
||||
msc_subscr_conn_is_accepted() == true
|
||||
|
@ -158,26 +160,29 @@ msc_subscr_conn_is_accepted() == true
|
|||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:46071 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:46071: MSISDN = 46071
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
dtap_tx_confirmed == 1
|
||||
- all requests serviced, conn has been released
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
---
|
||||
|
@ -185,9 +190,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||
DMM Subscriber MSISDN:46071 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:46071
|
||||
strcmp(paging_expecting_imsi, vsub->imsi) == 0
|
||||
DMM Subscriber MSISDN:46071 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
|
||||
strcmp(paging_expecting_imsi, imsi) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
|
@ -204,9 +209,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
|
||||
|
@ -223,18 +228,22 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_p
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:46071 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 6
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 5
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
|
@ -248,32 +257,35 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -293,14 +305,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_no_authen: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_no_authen_tmsi
|
||||
- Location Update request causes a GSUP LU request to HLR
|
||||
|
@ -309,9 +320,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -334,7 +345,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -425,12 +436,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -438,8 +450,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -460,9 +472,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
|
||||
|
@ -480,14 +492,15 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
- sending CM Service Accept for MSISDN:46071
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DMM compl_l3: Keeping conn
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
cm_service_result_sent == 1
|
||||
msc_subscr_conn_is_accepted() == true
|
||||
|
@ -498,23 +511,25 @@ msc_subscr_conn_is_accepted() == true
|
|||
DREF MSISDN:46071: MSC conn use + 1 == 2
|
||||
DRLL Dispatching 04.08 message, pdisc=11
|
||||
DMM MSISDN:46071 pdisc=11 msg_type=0x3b: received_cm_service_request changes to false
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM USSD: Own number requested
|
||||
DMM MSISDN:46071: MSISDN = 46071
|
||||
- DTAP --> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
|
||||
- DTAP matches expected message
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -525,8 +540,8 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage increases to: 2
|
||||
llist_count(&vsub->cs.requests) == 0
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 3
|
||||
DMM Subscriber MSISDN:46071 not paged yet.
|
||||
BTS/BSC sends out paging request to MSISDN:46071
|
||||
DMM Subscriber MSISDN:46071 not paged yet, start paging.
|
||||
RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0
|
||||
paging_expecting_tmsi == 0x03020100
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 4
|
||||
llist_count(&vsub->cs.requests) == 1
|
||||
|
@ -544,9 +559,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=6
|
||||
DRR PAGING RESPONSE: MI(TMSI)=50462976
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
|
||||
|
@ -563,18 +578,22 @@ DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_ime
|
|||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DPAG Paging success for MSISDN:46071 (event=0)
|
||||
DPAG Calling paging cbfn.
|
||||
DREF VLR subscr MSISDN:46071 usage increases to: 6
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
- DTAP --> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 5
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
||||
DMM compl_l3: Keeping conn
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
dtap_tx_confirmed == 1
|
||||
paging_stopped == 1
|
||||
|
@ -588,32 +607,35 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 4
|
|||
rx from MS: pdisc=0x89 msg_type=0x04
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
|
||||
rx from MS: pdisc=0x89 msg_type=0x01
|
||||
DREF MSISDN:46071: MSC conn use + 1 == 3
|
||||
DRLL Dispatching 04.08 message, pdisc=9
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
- DTAP --> MS: 0904
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
|
||||
DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 0904
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 3
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -628,9 +650,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -651,7 +673,7 @@ DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -741,12 +763,13 @@ DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_l
|
|||
DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(50462976)
|
||||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -754,8 +777,8 @@ DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -781,14 +804,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_no_authen_tmsi: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_no_authen_imei
|
||||
- Location Update request causes a GSUP LU request to HLR
|
||||
|
@ -797,9 +819,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -822,7 +844,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -874,7 +896,8 @@ DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
|
|||
DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
|
||||
- DTAP --> MS: 051802
|
||||
DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051802
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -910,12 +933,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -923,8 +947,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -948,14 +972,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_no_authen_imei: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_no_authen_tmsi_imei
|
||||
- Location Update request causes a GSUP LU request to HLR
|
||||
|
@ -964,9 +987,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -989,7 +1012,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -1041,7 +1064,8 @@ DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
|
|||
DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
|
||||
- DTAP --> MS: 051802
|
||||
DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051802
|
||||
- DTAP matches expected message
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
|
@ -1071,6 +1095,7 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
|
||||
- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
|
@ -1100,12 +1125,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -1113,8 +1139,8 @@ DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
|
|||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
|
@ -1139,14 +1165,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_no_authen_tmsi_imei: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,9 +5,9 @@ msc_subscr_conn_is_accepted() == false
|
|||
msc_subscr_conn_is_accepted() == false
|
||||
- conn_fsm present, in state NEW
|
||||
DREF unknown: MSC conn use + 1 == 1
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
msc_subscr_conn_is_accepted() == false
|
||||
requests shall be thwarted
|
||||
DRLL Dispatching 04.08 message, pdisc=3
|
||||
|
@ -20,26 +20,26 @@ DRLL Dispatching 04.08 message, pdisc=9
|
|||
DRLL subscr unknown: Message not permitted for initial conn: pdisc=0x09 msg_type=0x01
|
||||
- fake: acceptance
|
||||
DREF VLR subscr unknown usage increases to: 1
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
llist_count(&net->subscr_conns) == 1
|
||||
msc_subscr_conn_is_accepted() == true
|
||||
- CLOSE event marks conn_fsm as released and frees the conn
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=2): no conn fsm, releasing directly without release event.
|
||||
DMM unknown: Unknown RAN type, cannot tx release/clear
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL subscr unknown: Freeing subscriber connection
|
||||
DREF VLR subscr unknown usage decreases to: 0
|
||||
DREF freeing VLR subscr unknown
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_early_stage: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_cm_service_without_lu
|
||||
- CM Service Request without a prior Location Updating
|
||||
|
@ -49,9 +49,9 @@ DREF unknown: MSC conn use + 1 == 1
|
|||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
|
||||
|
@ -60,27 +60,27 @@ DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_do
|
|||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR
|
||||
- sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
|
||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=2): no conn fsm, releasing directly without release event.
|
||||
DREF unknown: MSC conn use - 1 == 1
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
- conn was released
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_cm_service_without_lu: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_two_lu
|
||||
- Location Update request causes a GSUP LU request to HLR
|
||||
|
@ -89,9 +89,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -114,7 +114,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -174,12 +174,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -189,8 +190,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -204,9 +205,9 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -227,7 +228,7 @@ DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HL
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF MSISDN:46071: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -286,12 +287,13 @@ DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from paren
|
|||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
|
||||
DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -301,8 +303,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -321,14 +323,13 @@ DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
|||
DREF VLR subscr MSISDN:46071 usage decreases to: 0
|
||||
DREF freeing VLR subscr MSISDN:46071
|
||||
DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event.
|
||||
DMM No conn_fsm, release conn
|
||||
DMM compl_l3: Discarding conn
|
||||
DREF unknown: MSC conn use - 1 == 0
|
||||
DRLL Freeing subscriber connection with NULL subscriber
|
||||
llist_count(&net->subscr_conns) == 0
|
||||
===== test_two_lu: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
===== test_lu_unknown_tmsi
|
||||
- Location Update request with unknown TMSI sends ID Request for IMSI
|
||||
|
@ -337,9 +338,9 @@ talloc_total_blocks(tall_bsc_ctx) == 75
|
|||
DREF unknown: MSC conn use + 1 == 1
|
||||
DRLL Dispatching 04.08 message, pdisc=5
|
||||
DREF unknown: MSC conn use + 1 == 2
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Allocated
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
|
||||
DMM LOCATION UPDATING REQUEST: MI(TMSI)=591536962 type=IMSI ATTACH
|
||||
DMM LU/new-LAC: 1/0
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Allocated
|
||||
|
@ -352,9 +353,10 @@ DREF VLR subscr TMSI:0x23422342 usage increases to: 2
|
|||
DREF VLR subscr TMSI:0x23422342 usage decreases to: 1
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: vlr_loc_upd_want_imsi()
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMSI
|
||||
- DTAP --> MS: 051801
|
||||
DMSC msc_tx 3 bytes to TMSI:0x23422342 via RAN_GERAN_A
|
||||
- DTAP --RAN_GERAN_A--> MS: 051801
|
||||
- DTAP matches expected message
|
||||
DMM compl_l3: Keeping conn
|
||||
DMM TMSI:0x23422342: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF TMSI:0x23422342: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
msc_subscr_conn_is_accepted() == false
|
||||
|
@ -386,6 +388,7 @@ DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_
|
|||
DVLR GSUP tx: 04010809710000004026f0
|
||||
GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
|
||||
DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
|
||||
DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
|
||||
DREF IMSI:901700000004620: MSC conn use - 1 == 1
|
||||
lu_result_sent == 0
|
||||
- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
|
||||
|
@ -445,12 +448,13 @@ DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_
|
|||
DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Freeing instance
|
||||
DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Deallocated
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(591536962)
|
||||
DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
|
||||
|
@ -460,8 +464,8 @@ DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing di
|
|||
DREF MSISDN:46071: MSC conn use - 1 == 0
|
||||
DRLL subscr MSISDN:46071: Freeing subscriber connection
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 2
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DVLR Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance
|
||||
DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated
|
||||
DREF VLR subscr MSISDN:46071 usage decreases to: 1
|
||||
<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
|
||||
- LU was successful, and the conn has already been closed
|
||||
|
@ -471,7 +475,7 @@ DREF freeing VLR subscr MSISDN:46071
|
|||
===== test_lu_unknown_tmsi: SUCCESS
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 75
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
||||
full talloc report on 'msgb' (total 0 bytes in 1 blocks)
|
||||
talloc_total_blocks(tall_bsc_ctx) == 9
|
||||
|
|
|
@ -27,8 +27,31 @@ void _test_umts_authen(enum ran_type via_ran)
|
|||
{
|
||||
struct vlr_subscr *vsub;
|
||||
const char *imsi = "901700000010650";
|
||||
const char *sms =
|
||||
"09" /* SMS messages */
|
||||
"01" /* CP-DATA */
|
||||
"58" /* length */
|
||||
"01" /* Network to MS */
|
||||
"00" /* reference */
|
||||
/* originator (gsm411_send_sms() hardcodes this weird nr) */
|
||||
"0791" "447758100650" /* 447785016005 */
|
||||
"00" /* dest */
|
||||
/* SMS TPDU */
|
||||
"4c" /* len */
|
||||
"00" /* SMS deliver */
|
||||
"05802443f2" /* originating address 42342 */
|
||||
"00" /* TP-PID */
|
||||
"00" /* GSM default alphabet */
|
||||
"071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
|
||||
"000000" /* H-M-S */
|
||||
"00" /* GMT+0 */
|
||||
"44" /* data length */
|
||||
"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
|
||||
"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
|
||||
"0c7ac3e9e9b7db05";
|
||||
|
||||
net->authentication_required = true;
|
||||
net->vlr->cfg.assign_tmsi = true;
|
||||
rx_from_ran = via_ran;
|
||||
|
||||
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
|
||||
|
@ -99,10 +122,26 @@ void _test_umts_authen(enum ran_type via_ran)
|
|||
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
|
||||
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
|
||||
gsup_expect_tx("04010809710000000156f0");
|
||||
ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
if (via_ran == RAN_GERAN_A) {
|
||||
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
|
||||
gsup_expect_tx("04010809710000000156f0");
|
||||
ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
|
||||
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
} else {
|
||||
/* On UTRAN */
|
||||
btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
|
||||
cipher_mode_cmd_sent = false;
|
||||
ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
|
||||
VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
|
||||
btw("MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR");
|
||||
gsup_expect_tx("04010809710000000156f0");
|
||||
ms_sends_security_mode_complete();
|
||||
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
}
|
||||
|
||||
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
|
||||
gsup_rx("10010809710000000156f00804032443f2",
|
||||
|
@ -112,8 +151,25 @@ void _test_umts_authen(enum ran_type via_ran)
|
|||
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
|
||||
gsup_rx("06010809710000000156f0", NULL);
|
||||
|
||||
btw("LU was successful, and the conn has already been closed");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
|
||||
|
||||
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
|
||||
EXPECT_CONN_COUNT(1);
|
||||
EXPECT_ACCEPTED(false);
|
||||
thwart_rx_non_initial_requests();
|
||||
|
||||
btw("even though the TMSI is not acked, we can already find the subscr with it");
|
||||
vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
|
||||
VERBOSE_ASSERT(vsub != NULL, == true, "%d");
|
||||
VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
|
||||
VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
|
||||
VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
|
||||
vlr_subscr_put(vsub);
|
||||
|
||||
btw("MS sends TMSI Realloc Complete");
|
||||
ms_sends_msg("055b");
|
||||
|
||||
btw("LU was successful, and the conn has already been closed");
|
||||
EXPECT_CONN_COUNT(0);
|
||||
|
||||
BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
|
||||
|
@ -134,10 +190,23 @@ void _test_umts_authen(enum ran_type via_ran)
|
|||
EXPECT_ACCEPTED(false);
|
||||
thwart_rx_non_initial_requests();
|
||||
|
||||
btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
|
||||
gsup_expect_tx(NULL);
|
||||
ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */
|
||||
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
|
||||
if (via_ran == RAN_GERAN_A) {
|
||||
btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
|
||||
gsup_expect_tx(NULL);
|
||||
ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */
|
||||
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
|
||||
} else {
|
||||
/* On UTRAN */
|
||||
btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
|
||||
cipher_mode_cmd_sent = false;
|
||||
ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */
|
||||
VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
|
||||
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
|
||||
|
||||
btw("MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept");
|
||||
ms_sends_security_mode_complete();
|
||||
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
|
||||
}
|
||||
|
||||
btw("a USSD request is serviced");
|
||||
dtap_expect_tx_ussd("Your extension is 42342\r");
|
||||
|
@ -183,31 +252,25 @@ void _test_umts_authen(enum ran_type via_ran)
|
|||
EXPECT_ACCEPTED(false);
|
||||
thwart_rx_non_initial_requests();
|
||||
|
||||
btw("MS sends Authen Response, VLR accepts and sends pending SMS");
|
||||
dtap_expect_tx("09" /* SMS messages */
|
||||
"01" /* CP-DATA */
|
||||
"58" /* length */
|
||||
"01" /* Network to MS */
|
||||
"00" /* reference */
|
||||
/* originator (gsm411_send_sms() hardcodes this weird nr) */
|
||||
"0791" "447758100650" /* 447785016005 */
|
||||
"00" /* dest */
|
||||
/* SMS TPDU */
|
||||
"4c" /* len */
|
||||
"00" /* SMS deliver */
|
||||
"05802443f2" /* originating address 42342 */
|
||||
"00" /* TP-PID */
|
||||
"00" /* GSM default alphabet */
|
||||
"071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
|
||||
"000000" /* H-M-S */
|
||||
"00" /* GMT+0 */
|
||||
"44" /* data length */
|
||||
"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
|
||||
"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
|
||||
"0c7ac3e9e9b7db05");
|
||||
ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
|
||||
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
|
||||
VERBOSE_ASSERT(paging_stopped, == true, "%d");
|
||||
if (via_ran == RAN_GERAN_A) {
|
||||
btw("MS sends Authen Response, VLR accepts and sends pending SMS");
|
||||
dtap_expect_tx(sms);
|
||||
ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
|
||||
VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
|
||||
VERBOSE_ASSERT(paging_stopped, == true, "%d");
|
||||
} else {
|
||||
/* On UTRAN */
|
||||
btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
|
||||
cipher_mode_cmd_sent = false;
|
||||
ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
|
||||
VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
|
||||
VERBOSE_ASSERT(paging_stopped, == false, "%d");
|
||||
|
||||
btw("MS sends SecurityModeControl acceptance, VLR accepts and sends SMS");
|
||||
dtap_expect_tx(sms);
|
||||
ms_sends_security_mode_complete();
|
||||
VERBOSE_ASSERT(paging_stopped, == true, "%d");
|
||||
}
|
||||
|
||||
btw("SMS was delivered, no requests pending for subscr");
|
||||
vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
|
||||
|
@ -264,7 +327,11 @@ extern int milenage_f1(const u8 *opc, const u8 *k, const u8 *_rand,
|
|||
|
||||
void _test_umts_authen_resync(enum ran_type via_ran)
|
||||
{
|
||||
struct vlr_subscr *vsub;
|
||||
const char *imsi = "901700000010650";
|
||||
|
||||
net->authentication_required = true;
|
||||
net->vlr->cfg.assign_tmsi = true;
|
||||
rx_from_ran = via_ran;
|
||||
|
||||
btw("Location Update request causes a GSUP Send Auth Info request to HLR");
|
||||
|
@ -415,10 +482,26 @@ void _test_umts_authen_resync(enum ran_type via_ran)
|
|||
VERBOSE_ASSERT(auth_request_sent, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
|
||||
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
|
||||
gsup_expect_tx("04010809710000000156f0");
|
||||
ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
if (via_ran == RAN_GERAN_A) {
|
||||
btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
|
||||
gsup_expect_tx("04010809710000000156f0");
|
||||
ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
|
||||
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
} else {
|
||||
/* On UTRAN */
|
||||
btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
|
||||
cipher_mode_cmd_sent = false;
|
||||
ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
|
||||
VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
|
||||
btw("MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR");
|
||||
gsup_expect_tx("04010809710000000156f0");
|
||||
ms_sends_security_mode_complete();
|
||||
VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
|
||||
}
|
||||
|
||||
btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
|
||||
gsup_rx("10010809710000000156f00804032443f2",
|
||||
|
@ -428,8 +511,25 @@ void _test_umts_authen_resync(enum ran_type via_ran)
|
|||
btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
|
||||
gsup_rx("06010809710000000156f0", NULL);
|
||||
|
||||
btw("LU was successful, and the conn has already been closed");
|
||||
VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
|
||||
|
||||
btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
|
||||
EXPECT_CONN_COUNT(1);
|
||||
EXPECT_ACCEPTED(false);
|
||||
thwart_rx_non_initial_requests();
|
||||
|
||||
btw("even though the TMSI is not acked, we can already find the subscr with it");
|
||||
vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
|
||||
VERBOSE_ASSERT(vsub != NULL, == true, "%d");
|
||||
VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
|
||||
VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
|
||||
VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
|
||||
vlr_subscr_put(vsub);
|
||||
|
||||
btw("MS sends TMSI Realloc Complete");
|
||||
ms_sends_msg("055b");
|
||||
|
||||
btw("LU was successful, and the conn has already been closed");
|
||||
EXPECT_CONN_COUNT(0);
|
||||
|
||||
clear_vlr();
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -34,6 +34,8 @@
|
|||
#include <openbsc/gsm_04_11.h>
|
||||
#include <openbsc/bsc_subscriber.h>
|
||||
#include <openbsc/debug.h>
|
||||
#include <openbsc/iu.h>
|
||||
#include <openbsc/iucs_ranap.h>
|
||||
|
||||
#include "msc_vlr_tests.h"
|
||||
|
||||
|
@ -69,6 +71,7 @@ struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex)
|
|||
|
||||
void dtap_expect_tx(const char *hex)
|
||||
{
|
||||
/* Has the previously expected dtap been received? */
|
||||
OSMO_ASSERT(!dtap_tx_expected);
|
||||
if (!hex)
|
||||
return;
|
||||
|
@ -132,6 +135,14 @@ struct gsm_subscriber_connection *conn_new(void)
|
|||
conn = msc_subscr_con_allocate(net);
|
||||
conn->bts = the_bts;
|
||||
conn->via_ran = rx_from_ran;
|
||||
if (conn->via_ran == RAN_UTRAN_IU) {
|
||||
struct ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ue_conn_ctx);
|
||||
*ue_ctx = (struct ue_conn_ctx){
|
||||
.link = (void*)0x23,
|
||||
.conn_id = 42,
|
||||
};
|
||||
conn->iu.ue_ctx = ue_ctx;
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
|
@ -151,7 +162,7 @@ void rx_from_ms(struct msgb *msg)
|
|||
if (!g_conn) {
|
||||
log("new conn");
|
||||
g_conn = conn_new();
|
||||
rc = net->bsc_api->compl_l3(g_conn, msg, 23);
|
||||
rc = msc_compl_l3(g_conn, msg, 23);
|
||||
if (rc == BSC_API_CONN_POL_REJECT) {
|
||||
msc_subscr_con_free(g_conn);
|
||||
g_conn = NULL;
|
||||
|
@ -159,9 +170,9 @@ void rx_from_ms(struct msgb *msg)
|
|||
} else {
|
||||
if ((gsm48_hdr_pdisc(gh) == GSM48_PDISC_RR)
|
||||
&& (gsm48_hdr_msg_type(gh) == GSM48_MT_RR_CIPH_M_COMPL))
|
||||
net->bsc_api->cipher_mode_compl(g_conn, msg, 0);
|
||||
msc_cipher_mode_compl(g_conn, msg, 0);
|
||||
else
|
||||
net->bsc_api->dtap(g_conn, 23, msg);
|
||||
msc_dtap(g_conn, 23, msg);
|
||||
}
|
||||
|
||||
if (g_conn && !conn_exists(g_conn))
|
||||
|
@ -252,25 +263,38 @@ void paging_expect_tmsi(uint32_t tmsi)
|
|||
paging_expecting_imsi = NULL;
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=msc_fake_paging_request' */
|
||||
int __real_msc_fake_paging_request(struct vlr_subscr *vsub);
|
||||
int __wrap_msc_fake_paging_request(struct vlr_subscr *vsub)
|
||||
int _paging_sent(enum ran_type via_ran, const char *imsi, uint32_t tmsi, uint32_t lac)
|
||||
{
|
||||
log("BTS/BSC sends out paging request to %s",
|
||||
vlr_subscr_name(vsub));
|
||||
log("%s sends out paging request to IMSI %s, TMSI 0x%08x, LAC %u",
|
||||
ran_type_name(via_ran), imsi, tmsi, lac);
|
||||
OSMO_ASSERT(paging_expecting_imsi || (paging_expecting_tmsi != GSM_RESERVED_TMSI));
|
||||
if (paging_expecting_imsi)
|
||||
VERBOSE_ASSERT(strcmp(paging_expecting_imsi, vsub->imsi), == 0, "%d");
|
||||
if (paging_expecting_tmsi != GSM_RESERVED_TMSI)
|
||||
VERBOSE_ASSERT(paging_expecting_tmsi, == vsub->tmsi, "0x%08x");
|
||||
VERBOSE_ASSERT(strcmp(paging_expecting_imsi, imsi), == 0, "%d");
|
||||
if (paging_expecting_tmsi != GSM_RESERVED_TMSI) {
|
||||
VERBOSE_ASSERT(paging_expecting_tmsi, == tmsi, "0x%08x");
|
||||
}
|
||||
paging_sent = true;
|
||||
paging_stopped = false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=msc_fake_paging_request_stop' */
|
||||
void __real_msc_fake_paging_request_stop(struct vlr_subscr *vsub);
|
||||
void __wrap_msc_fake_paging_request_stop(struct vlr_subscr *vsub)
|
||||
/* override, requires '-Wl,--wrap=iu_page_cs' */
|
||||
int __real_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac);
|
||||
int __wrap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac)
|
||||
{
|
||||
return _paging_sent(RAN_UTRAN_IU, imsi, tmsi ? *tmsi : GSM_RESERVED_TMSI, lac);
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=a_page' */
|
||||
int __real_a_page(const char *imsi, uint32_t tmsi, uint16_t lac);
|
||||
int __wrap_a_page(const char *imsi, uint32_t tmsi, uint16_t lac)
|
||||
{
|
||||
return _paging_sent(RAN_GERAN_A, imsi, tmsi, lac);
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=msc_stop_paging' */
|
||||
void __real_msc_stop_paging(struct vlr_subscr *vsub);
|
||||
void __wrap_msc_stop_paging(struct vlr_subscr *vsub)
|
||||
{
|
||||
paging_stopped = true;
|
||||
}
|
||||
|
@ -340,6 +364,16 @@ static struct log_info_cat test_categories[] = {
|
|||
.description = "Reference Counting",
|
||||
.enabled = 1, .loglevel = LOGL_DEBUG,
|
||||
},
|
||||
[DPAG] = {
|
||||
.name = "DPAG",
|
||||
.description = "Paging Subsystem",
|
||||
.enabled = 1, .loglevel = LOGL_DEBUG,
|
||||
},
|
||||
[DIUCS] = {
|
||||
.name = "DIUCS",
|
||||
.description = "Iu-CS Protocol",
|
||||
.enabled = 1, .loglevel = LOGL_DEBUG,
|
||||
},
|
||||
};
|
||||
|
||||
static struct log_info info = {
|
||||
|
@ -391,13 +425,11 @@ int __wrap_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=gsm0808_submit_dtap' */
|
||||
int __real_gsm0808_submit_dtap(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, int link_id, int allow_sacch);
|
||||
int __wrap_gsm0808_submit_dtap(struct gsm_subscriber_connection *conn,
|
||||
struct msgb *msg, int link_id, int allow_sacch)
|
||||
int _validate_dtap(struct msgb *msg, enum ran_type to_ran)
|
||||
{
|
||||
btw("DTAP --> MS: %s", osmo_hexdump_nospc(msg->data, msg->len));
|
||||
btw("DTAP --%s--> MS: %s",
|
||||
ran_type_name(to_ran),
|
||||
osmo_hexdump_nospc(msg->data, msg->len));
|
||||
|
||||
OSMO_ASSERT(dtap_tx_expected);
|
||||
if (msg->len != dtap_tx_expected->len
|
||||
|
@ -417,6 +449,36 @@ int __wrap_gsm0808_submit_dtap(struct gsm_subscriber_connection *conn,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=iu_tx' */
|
||||
int __real_iu_tx(struct msgb *msg, uint8_t sapi);
|
||||
int __wrap_iu_tx(struct msgb *msg, uint8_t sapi)
|
||||
{
|
||||
return _validate_dtap(msg, RAN_UTRAN_IU);
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=iu_tx_release' */
|
||||
int __real_iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause);
|
||||
int __wrap_iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause)
|
||||
{
|
||||
btw("Iu Release --%s--> MS", ran_type_name(RAN_UTRAN_IU));
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=iu_tx_common_id' */
|
||||
int __real_iu_tx_common_id(struct ue_conn_ctx *ue_ctx, const char *imsi);
|
||||
int __wrap_iu_tx_common_id(struct ue_conn_ctx *ue_ctx, const char *imsi)
|
||||
{
|
||||
btw("Iu Common ID --%s--> MS (IMSI=%s)", ran_type_name(RAN_UTRAN_IU), imsi);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* override, requires '-Wl,--wrap=a_tx' */
|
||||
int __real_a_tx(struct msgb *msg, uint8_t sapi);
|
||||
int __wrap_a_tx(struct msgb *msg, uint8_t sapi)
|
||||
{
|
||||
return _validate_dtap(msg, RAN_GERAN_A);
|
||||
}
|
||||
|
||||
static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi)
|
||||
{
|
||||
struct gsm_subscriber_connection *conn = msc_conn_ref;
|
||||
|
@ -516,17 +578,37 @@ static int fake_vlr_tx_ciph_mode_cmd(void *msc_conn_ref, enum vlr_ciph ciph,
|
|||
* gsm0808_cipher_mode() directly. When the MSCSPLIT is ready, check
|
||||
* the tx bytes in the sense of dtap_expect_tx() above. */
|
||||
struct gsm_subscriber_connection *conn = msc_conn_ref;
|
||||
btw("sending Ciphering Mode Command for %s: cipher=%s kc=%s"
|
||||
" retrieve_imeisv=%d",
|
||||
vlr_subscr_name(conn->vsub),
|
||||
vlr_ciph_name(conn->network->a5_encryption),
|
||||
osmo_hexdump_nospc(conn->vsub->last_tuple->vec.kc, 8),
|
||||
retrieve_imeisv);
|
||||
switch (conn->via_ran) {
|
||||
case RAN_GERAN_A:
|
||||
btw("sending Ciphering Mode Command for %s: cipher=%s kc=%s"
|
||||
" retrieve_imeisv=%d",
|
||||
vlr_subscr_name(conn->vsub),
|
||||
vlr_ciph_name(conn->network->a5_encryption),
|
||||
osmo_hexdump_nospc(conn->vsub->last_tuple->vec.kc, 8),
|
||||
retrieve_imeisv);
|
||||
break;
|
||||
case RAN_UTRAN_IU:
|
||||
btw("sending SecurityModeControl for %s",
|
||||
vlr_subscr_name(conn->vsub));
|
||||
break;
|
||||
default:
|
||||
btw("UNKNOWN RAN TYPE %d", conn->via_ran);
|
||||
OSMO_ASSERT(false);
|
||||
return -1;
|
||||
}
|
||||
cipher_mode_cmd_sent = true;
|
||||
cipher_mode_cmd_sent_with_imeisv = retrieve_imeisv;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ms_sends_security_mode_complete()
|
||||
{
|
||||
OSMO_ASSERT(g_conn);
|
||||
OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU);
|
||||
OSMO_ASSERT(g_conn->iu.ue_ctx);
|
||||
msc_rx_sec_mode_compl(g_conn);
|
||||
}
|
||||
|
||||
const struct timeval fake_time_start_time = { 123, 456 };
|
||||
|
||||
void fake_time_start()
|
||||
|
@ -615,7 +697,7 @@ void run_tests(int nr)
|
|||
if (cmdline_opts.verbose)
|
||||
fprintf(stderr, "(test nr %d)\n", test_nr + 1);
|
||||
|
||||
check_talloc(msgb_ctx, tall_bsc_ctx, 75);
|
||||
check_talloc(msgb_ctx, tall_bsc_ctx, 9);
|
||||
} while(0);
|
||||
}
|
||||
|
||||
|
@ -636,8 +718,6 @@ int main(int argc, char **argv)
|
|||
log_set_print_category(osmo_stderr_target, 1);
|
||||
|
||||
net = gsm_network_init(tall_bsc_ctx, 1, 1, fake_mncc_recv);
|
||||
bsc_api_init(net, msc_bsc_api());
|
||||
the_bts = gsm_bts_alloc(net);
|
||||
net->gsup_server_addr_str = talloc_strdup(net, "no_gsup_server");
|
||||
net->gsup_server_port = 0;
|
||||
|
||||
|
@ -656,6 +736,8 @@ int main(int argc, char **argv)
|
|||
net->vlr->ops.tx_auth_rej = fake_vlr_tx_auth_rej;
|
||||
net->vlr->ops.set_ciph_mode = fake_vlr_tx_ciph_mode_cmd;
|
||||
|
||||
clear_vlr();
|
||||
|
||||
if (optind >= argc)
|
||||
run_tests(-1);
|
||||
else {
|
||||
|
|
|
@ -98,6 +98,7 @@ void paging_expect_imsi(const char *imsi);
|
|||
void paging_expect_tmsi(uint32_t tmsi);
|
||||
|
||||
void ms_sends_msg(const char *hex);
|
||||
void ms_sends_security_mode_complete();
|
||||
void gsup_rx(const char *rx_hex, const char *expect_tx_hex);
|
||||
void send_sms(struct vlr_subscr *receiver,
|
||||
struct vlr_subscr *sender,
|
||||
|
@ -126,7 +127,10 @@ void check_talloc(void *msgb_ctx, void *tall_bsc_ctx, int expected_blocks);
|
|||
|
||||
#define gsup_expect_tx(hex) do \
|
||||
{ \
|
||||
OSMO_ASSERT(!gsup_tx_expected); \
|
||||
if (gsup_tx_expected) { \
|
||||
log("Previous expected GSUP tx was not confirmed!"); \
|
||||
OSMO_ASSERT(!gsup_tx_expected); \
|
||||
} \
|
||||
if (!hex) \
|
||||
break; \
|
||||
gsup_tx_expected = hex; \
|
||||
|
|
|
@ -60,14 +60,14 @@ class TestVTYBase(unittest.TestCase):
|
|||
osmoutil.end_proc(self.proc)
|
||||
|
||||
|
||||
class TestSMPPNITB(TestVTYBase):
|
||||
class TestSMPPMSC(TestVTYBase):
|
||||
|
||||
def vty_command(self):
|
||||
return ["./src/osmo-nitb/osmo-nitb", "-c",
|
||||
"doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
|
||||
return ["./src/osmo-msc/osmo-msc", "-c",
|
||||
"doc/examples/osmo-msc/osmo-msc.cfg"]
|
||||
|
||||
def vty_app(self):
|
||||
return (4242, "./src/osmo-nitb/osmo-nitb", "OpenBSC", "nitb")
|
||||
return (4254, "./src/osmo-msc/osmo-msc", "OsmoMSC", "msc")
|
||||
|
||||
def testSMPPCrashes(self):
|
||||
# Enable the configuration
|
||||
|
@ -84,7 +84,7 @@ class TestSMPPNITB(TestVTYBase):
|
|||
self.assertTrue(self.vty.verify('default-route', ['']))
|
||||
self.assertTrue(self.vty.verify('end', ['']))
|
||||
|
||||
# NITB should listen to 2775 now!
|
||||
# MSC should listen to 2775 now!
|
||||
sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sck.setblocking(1)
|
||||
sck.connect(('0.0.0.0', 2775))
|
||||
|
@ -132,6 +132,6 @@ if __name__ == '__main__':
|
|||
os.chdir(workdir)
|
||||
print "Running tests for specific SMPP"
|
||||
suite = unittest.TestSuite()
|
||||
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPNITB))
|
||||
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPMSC))
|
||||
res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)
|
||||
sys.exit(len(res.errors) + len(res.failures))
|
||||
|
|
|
@ -8,6 +8,12 @@ AM_CFLAGS = \
|
|||
-ggdb3 \
|
||||
$(LIBOSMOCORE_CFLAGS) \
|
||||
$(LIBOSMOGSM_CFLAGS) \
|
||||
$(LIBCRYPTO_CFLAGS) \
|
||||
$(LIBOSMOVTY_CFLAGS) \
|
||||
$(LIBOSMOABIS_CFLAGS) \
|
||||
$(LIBOSMOSIGTRAN_CFLAGS) \
|
||||
$(LIBOSMORANAP_CFLAGS) \
|
||||
$(LIBASN1C_CFLAGS) \
|
||||
$(NULL)
|
||||
|
||||
EXTRA_DIST = \
|
||||
|
@ -28,14 +34,25 @@ sms_queue_test_LDADD = \
|
|||
$(top_builddir)/src/libvlr/libvlr.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(top_builddir)/src/libcommon-cs/libcommon-cs.a \
|
||||
$(NULL)
|
||||
if BUILD_IU
|
||||
sms_queue_test_LDADD += \
|
||||
$(top_builddir)/src/libiu/libiu.a \
|
||||
$(NULL)
|
||||
endif
|
||||
sms_queue_test_LDADD += \
|
||||
$(LIBSMPP34_LIBS) \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
$(LIBOSMOGSM_LIBS) \
|
||||
$(LIBCRYPTO_LIBS) \
|
||||
$(LIBOSMOVTY_LIBS) \
|
||||
$(LIBOSMOABIS_LIBS) \
|
||||
$(LIBOSMOSIGTRAN_LIBS) \
|
||||
$(LIBOSMORANAP_LIBS) \
|
||||
$(LIBASN1C_LIBS) \
|
||||
-ldbi \
|
||||
-lrt \
|
||||
$(NULL)
|
||||
|
|
|
@ -33,6 +33,13 @@ cat $abs_srcdir/mgcp/mgcp_transcoding_test.ok > expout
|
|||
AT_CHECK([$abs_top_builddir/tests/mgcp/mgcp_transcoding_test], [], [expout], [ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([mgcpgw_client])
|
||||
AT_KEYWORDS([mgcpgw_client])
|
||||
cat $abs_srcdir/mgcp/mgcpgw_client_test.ok > expout
|
||||
cat $abs_srcdir/mgcp/mgcpgw_client_test.err > experr
|
||||
AT_CHECK([$abs_top_builddir/tests/mgcp/mgcpgw_client_test], [], [expout], [experr])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([gprs])
|
||||
AT_KEYWORDS([gprs])
|
||||
cat $abs_srcdir/gprs/gprs_test.ok > expout
|
||||
|
|
|
@ -34,6 +34,14 @@ confpath = os.path.join(sys.path[0], '..')
|
|||
|
||||
class TestVTYBase(unittest.TestCase):
|
||||
|
||||
def checkForEndAndExit(self):
|
||||
res = self.vty.command("list")
|
||||
#print ('looking for "exit"\n')
|
||||
self.assert_(res.find(' exit\r') > 0)
|
||||
#print 'found "exit"\nlooking for "end"\n'
|
||||
self.assert_(res.find(' end\r') > 0)
|
||||
#print 'found "end"\n'
|
||||
|
||||
def vty_command(self):
|
||||
raise Exception("Needs to be implemented by a subclass")
|
||||
|
||||
|
@ -124,15 +132,7 @@ class TestVTYMGCP(TestVTYBase):
|
|||
|
||||
class TestVTYGenericBSC(TestVTYBase):
|
||||
|
||||
def checkForEndAndExit(self):
|
||||
res = self.vty.command("list")
|
||||
#print ('looking for "exit"\n')
|
||||
self.assert_(res.find(' exit\r') > 0)
|
||||
#print 'found "exit"\nlooking for "end"\n'
|
||||
self.assert_(res.find(' end\r') > 0)
|
||||
#print 'found "end"\n'
|
||||
|
||||
def _testConfigNetworkTree(self):
|
||||
def _testConfigNetworkTree(self, include_bsc_items=True):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify("configure terminal",['']))
|
||||
self.assertEquals(self.vty.node(), 'config')
|
||||
|
@ -166,17 +166,28 @@ class TestVTYGenericBSC(TestVTYBase):
|
|||
self.assertTrue(self.vty.verify("exit",['']))
|
||||
self.assertTrue(self.vty.node() is None)
|
||||
|
||||
class TestVTYNITB(TestVTYGenericBSC):
|
||||
class TestVTYMSC(TestVTYBase):
|
||||
|
||||
def vty_command(self):
|
||||
return ["./src/osmo-nitb/osmo-nitb", "-c",
|
||||
"doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
|
||||
return ["./src/osmo-msc/osmo-msc", "-c",
|
||||
"doc/examples/osmo-msc/osmo-msc.cfg"]
|
||||
|
||||
def vty_app(self):
|
||||
return (4242, "./src/osmo-nitb/osmo-nitb", "OpenBSC", "nitb")
|
||||
return (4254, "./src/osmo-msc/osmo-msc", "OsmoMSC", "msc")
|
||||
|
||||
def testConfigNetworkTree(self):
|
||||
self._testConfigNetworkTree()
|
||||
def testConfigNetworkTree(self, include_bsc_items=True):
|
||||
self.vty.enable()
|
||||
self.assertTrue(self.vty.verify("configure terminal",['']))
|
||||
self.assertEquals(self.vty.node(), 'config')
|
||||
self.checkForEndAndExit()
|
||||
self.assertTrue(self.vty.verify("network",['']))
|
||||
self.assertEquals(self.vty.node(), 'config-net')
|
||||
self.checkForEndAndExit()
|
||||
self.vty.command("write terminal")
|
||||
self.assertTrue(self.vty.verify("exit",['']))
|
||||
self.assertEquals(self.vty.node(), 'config')
|
||||
self.assertTrue(self.vty.verify("exit",['']))
|
||||
self.assertTrue(self.vty.node() is None)
|
||||
|
||||
def checkForSmpp(self):
|
||||
"""SMPP is not always enabled, check if it is"""
|
||||
|
@ -248,13 +259,6 @@ class TestVTYNITB(TestVTYGenericBSC):
|
|||
self.assertTrue(self.vty.verify("authorized-regexp 02$", ['']))
|
||||
self.assertTrue(self.vty.verify("authorized-regexp *123.*", ['']))
|
||||
self.vty.command("end")
|
||||
self.vty.command("configure terminal")
|
||||
self.vty.command("nitb")
|
||||
self.assertTrue(self.vty.verify('subscriber-create-on-demand',
|
||||
["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
self.assertTrue(self.vty.verify("subscriber-create-on-demand no-extension",
|
||||
["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
self.vty.command("end")
|
||||
|
||||
def testSi2Q(self):
|
||||
self.vty.enable()
|
||||
|
@ -316,103 +320,6 @@ class TestVTYNITB(TestVTYGenericBSC):
|
|||
self.assertEquals(res.find('periodic location update 60'), -1)
|
||||
self.assert_(res.find('no periodic location update') > 0)
|
||||
|
||||
def testEnableDisableSiHacks(self):
|
||||
self.vty.enable()
|
||||
self.vty.command("configure terminal")
|
||||
self.vty.command("network")
|
||||
self.vty.command("bts 0")
|
||||
|
||||
# Enable periodic lu..
|
||||
self.vty.verify("force-combined-si", [''])
|
||||
res = self.vty.command("write terminal")
|
||||
self.assert_(res.find(' force-combined-si') > 0)
|
||||
self.assertEquals(res.find('no force-combined-si'), -1)
|
||||
|
||||
# Now disable it..
|
||||
self.vty.verify("no force-combined-si", [''])
|
||||
res = self.vty.command("write terminal")
|
||||
self.assertEquals(res.find(' force-combined-si'), -1)
|
||||
self.assert_(res.find('no force-combined-si') > 0)
|
||||
|
||||
def testRachAccessControlClass(self):
|
||||
self.vty.enable()
|
||||
self.vty.command("configure terminal")
|
||||
self.vty.command("network")
|
||||
self.vty.command("bts 0")
|
||||
|
||||
# Test invalid input
|
||||
self.vty.verify("rach access-control-class", ['% Command incomplete.'])
|
||||
self.vty.verify("rach access-control-class 1", ['% Command incomplete.'])
|
||||
self.vty.verify("rach access-control-class -1", ['% Unknown command.'])
|
||||
self.vty.verify("rach access-control-class 10", ['% Unknown command.'])
|
||||
self.vty.verify("rach access-control-class 16", ['% Unknown command.'])
|
||||
|
||||
# Barred rach access control classes
|
||||
for classNum in range(16):
|
||||
if classNum != 10:
|
||||
self.vty.verify("rach access-control-class " + str(classNum) + " barred", [''])
|
||||
|
||||
# Verify settings
|
||||
res = self.vty.command("write terminal")
|
||||
for classNum in range(16):
|
||||
if classNum != 10:
|
||||
self.assert_(res.find("rach access-control-class " + str(classNum) + " barred") > 0)
|
||||
|
||||
# Allowed rach access control classes
|
||||
for classNum in range(16):
|
||||
if classNum != 10:
|
||||
self.vty.verify("rach access-control-class " + str(classNum) + " allowed", [''])
|
||||
|
||||
# Verify settings
|
||||
res = self.vty.command("write terminal")
|
||||
for classNum in range(16):
|
||||
if classNum != 10:
|
||||
self.assertEquals(res.find("rach access-control-class " + str(classNum) + " barred"), -1)
|
||||
|
||||
def testSubscriberCreateDelete(self):
|
||||
self.vty.enable()
|
||||
|
||||
imsi = "204300854013739"
|
||||
|
||||
# Initially we don't have this subscriber
|
||||
self.assertTrue(self.vty.verify('show subscriber imsi '+imsi, ['% No subscriber found for imsi '+imsi]))
|
||||
|
||||
# deprecated
|
||||
self.assertTrue(self.vty.verify('subscriber create imsi '+imsi, ["% 'subscriber create' now needs to be done at osmo-hlr"]))
|
||||
|
||||
# range
|
||||
self.vty.command("end")
|
||||
self.vty.command("configure terminal")
|
||||
self.vty.command("nitb")
|
||||
self.assertTrue(self.vty.verify('subscriber-create-on-demand', ["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
res = self.vty.command("show running-config")
|
||||
self.assert_(res.find("subscriber-create-on-demand") < 0)
|
||||
self.vty.command("end")
|
||||
|
||||
res = self.vty.command('show subscriber imsi '+imsi)
|
||||
self.assert_(('% No subscriber found for imsi ' + imsi) == res)
|
||||
|
||||
|
||||
def testSubscriberSettings(self):
|
||||
self.vty.enable()
|
||||
|
||||
imsi = "204300854013739"
|
||||
|
||||
self.assertTrue(self.vty.verify('subscriber imsi '+imsi+' name foo', ["% 'subscriber name' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
self.assertTrue(self.vty.verify('subscriber imsi '+imsi+' extension 1234', ["% 'subscriber extension' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
self.assertTrue(self.vty.verify('subscriber imsi '+imsi+' delete', ["% 'subscriber delete' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
|
||||
# With narrow random interval
|
||||
self.vty.command("configure terminal")
|
||||
self.vty.command("nitb")
|
||||
self.assertTrue(self.vty.verify('subscriber-create-on-demand', ["% 'subscriber-create-on-demand' is no longer supported.", '% This is now up to osmo-hlr.']))
|
||||
|
||||
def testShowPagingGroup(self):
|
||||
res = self.vty.command("show paging-group 255 1234567")
|
||||
self.assertEqual(res, "% can't find BTS 255")
|
||||
res = self.vty.command("show paging-group 0 1234567")
|
||||
self.assertEquals(res, "%Paging group for IMSI 1234567 on BTS #0 is 7")
|
||||
|
||||
def testShowNetwork(self):
|
||||
res = self.vty.command("show network")
|
||||
self.assert_(res.startswith('BSC is on Country Code') >= 0)
|
||||
|
@ -1246,7 +1153,7 @@ if __name__ == '__main__':
|
|||
print "Running tests for specific VTY commands"
|
||||
suite = unittest.TestSuite()
|
||||
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYMGCP))
|
||||
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYNITB))
|
||||
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYMSC))
|
||||
add_bsc_test(suite, workdir)
|
||||
add_nat_test(suite, workdir)
|
||||
add_gbproxy_test(suite, workdir)
|
||||
|
|
Loading…
Reference in New Issue