mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-10-23 08:12:01 +00:00
doc: add call graphs from MSC to BSC or HNB-GW (wip)
This commit is contained in:
608
openbsc/doc/call-graphs-MSC-BSC-HNBGW.txt
Normal file
608
openbsc/doc/call-graphs-MSC-BSC-HNBGW.txt
Normal file
@@ -0,0 +1,608 @@
|
||||
gprs_iu_tx
|
||||
|
||||
-- WORK IN PROGRESS --
|
||||
|
||||
This is an incomplete collection of call graphs between MSC and Osmo-BSC,
|
||||
partly including Osmo-BTS. These traces helped understanding the separation of
|
||||
the BSC part from Osmo-NITB. The aim: obtain a clearly separated "A" interface
|
||||
towards the BSC, and have an Iu-CS interface to operate with HNB-GW and hNodeB.
|
||||
The working title for the result is Osmo-CSCN (Circuit Switched Core Network),
|
||||
combining an MSC with various other core network components, but without the
|
||||
BSC parts.
|
||||
|
||||
|
||||
Some Specs and Overview
|
||||
|
||||
0408: Radio interface
|
||||
0411: PP-SMS on Radio interface
|
||||
0802: A Interface MSC<->BSS (BSS = BSC + BTS)
|
||||
0804: A Interface L1 MSC<->BSS
|
||||
0806: A Interface L2 MSC<->BSS
|
||||
0808: A Interface L3 MSC<->BSS
|
||||
0808: Figure 1: A MSC<->BSS
|
||||
0820: RA (Rate Adaption) MSC<->BSS
|
||||
|
||||
0851,0852: A-bis general BSC<->BTS
|
||||
1221: A-bis NM BSC<->BTS
|
||||
1201: Figure 9: A-bis BSC<->BTS
|
||||
|
||||
MS <-> BTS <-> BSC <-> MSC <-> cn
|
||||
| | | | |
|
||||
|<-------0408=DTAP----->| |
|
||||
|<-------0411---------->| |
|
||||
| | |<--0808>| |
|
||||
| | |<BSSMAP>| |
|
||||
| | | | |
|
||||
| Abis | A |
|
||||
|
||||
MS <-> hNodeB <-> HNB-GW <-> MSC <-> cn
|
||||
| | | | |
|
||||
|<-0408->|<--Iu--->|<-Iu-cs->| |
|
||||
|<-0411->| | | |
|
||||
| | | | |
|
||||
|
||||
Entry/Exit points
|
||||
|
||||
Osmo-BSC <--A--> MSC or Osmo-CSCN
|
||||
format: BSSAP/SCCP (where BSSAP = DTAP + BSSMAP)
|
||||
Osmo-BSC
|
||||
read from MSC: sccp_system_incoming_ctx()
|
||||
write to MSC: sccp_connection_write() <-- osmo-bsc/osmo_bsc_sccp.c:bsc_queue_for_msc()
|
||||
MSC:
|
||||
third party
|
||||
Osmo-CSCN:
|
||||
read: does not exist yet
|
||||
write: does not exist yet
|
||||
|
||||
HNB-GW <--Iu-CS--> Osmo-CSCN
|
||||
format: CC+MM/RANAP/SUA
|
||||
HNB-GW:
|
||||
read: does not exist yet
|
||||
write: does not exist yet
|
||||
Osmo-CSCN:
|
||||
read: does not exist yet
|
||||
write: does not exist yet
|
||||
|
||||
Osmo-BTS <-Abis-> Osmo-BSC
|
||||
Osmo-BSC:
|
||||
read: libbsc/abis_rsl.c:abis_rsl_rcvmsg(msg)
|
||||
write: libosmo-abis/src/e1_input.c:abis_sendmsg() (e1inp_sign_link*)msg->dst;
|
||||
|
||||
Osmo-BTS <-Abis-> Osmo-NITB
|
||||
Osmo-NITB:
|
||||
read:
|
||||
osmo_signal_dispatch():
|
||||
from on_dso_load_token() libmsc/token_auth.c
|
||||
SS_SUBSCR: token_subscr_cb() libmsc/token_auth.c
|
||||
SS_SMS: token_sms_cb() libmsc/token_auth.c
|
||||
from subscr_sig_cb() libmsc/rrlp.c
|
||||
SS_SUBSCR: subscr_sig_cb() libmsc/rrlp.c
|
||||
SS_PAGING: paging_sig_cb() libmsc/rrlp.c
|
||||
from on_dso_load_ho_dec() libbsc/handover_decision.c
|
||||
SS_LCHAN: ho_dec_sig_cb() libbsc/handover_decision.c
|
||||
from e1inp_init() libosmo-abis/src/e1_input.c
|
||||
SS_L_GLOBAL: e1i_sig_cb() libosmo-abis/src/e1_input.c
|
||||
|
||||
bts_model_bs11_init();
|
||||
bts_model_rbs2k_init();
|
||||
bts_model_nanobts_init();
|
||||
bts_model_nokia_site_init();
|
||||
bts_model_sysmobts_init();
|
||||
|
||||
bsc_bootstrap_network():
|
||||
osmo_signal_register_handler(SS_NM, nm_sig_cb, NULL);
|
||||
osmo_signal_register_handler(SS_L_INPUT, inp_sig_cb, NULL);
|
||||
|
||||
|
||||
Call Trees
|
||||
|
||||
- A Interface
|
||||
|
||||
Osmo-BSC sends to MSC:
|
||||
|
||||
sccp_connection_write(conn->sccp, msg);
|
||||
^ bsc_queue_for_msc()
|
||||
^
|
||||
| osmo-bsc/osmo_bsc_api.c:
|
||||
| bsc_clear_request()
|
||||
| queue_msg_or_return() osmo-bsc/osmo_bsc_api.c
|
||||
| ^ bsc_sapi_n_reject()
|
||||
| | ^send_sapi_reject()
|
||||
| | ^ gsm0808_submit_dtap() libbsc/bsc_api.c
|
||||
| | | ^ gsm48_conn_sendmsg() libmsc/gsm_04_08.c
|
||||
| | | | ^ gsm48_cc_tx_notify_ss() libmsc/gsm_04_08.c
|
||||
| | | | | mm_tx_identity_req() libmsc/gsm_04_08.c
|
||||
| | | | | gsm48_tx_mm_info() libmsc/gsm_04_08.c
|
||||
| | | | | gsm48_tx_mm_auth_req()
|
||||
| | | | | gsm48_send_rr_app_info()
|
||||
| | | | | gsm48_cc_tx_status()
|
||||
| | | | | gsm48_tx_simple()
|
||||
| | | | | ^ gsm48_tx_mm_auth_rej()
|
||||
| | | | | gsm48_cc_tx_setup()
|
||||
| | | | | gsm48_cc_tx_call_proc()
|
||||
| | | | | gsm48_cc_tx_alerting()
|
||||
| | | | | gsm48_cc_tx_progress()
|
||||
| | | | | gsm48_cc_tx_connect()
|
||||
| | | | | gsm48_cc_tx_connect_ack()
|
||||
| | | | | gsm48_cc_tx_disconnect()
|
||||
| | | | | gsm48_cc_tx_release()
|
||||
| | | | | gsm48_cc_tx_release_compl()
|
||||
| | | | | gsm48_cc_tx_facility()
|
||||
| | | | | gsm48_cc_tx_hold_ack()
|
||||
| | | | | gsm48_cc_tx_hold_rej()
|
||||
| | | | | gsm48_cc_tx_retrieve_ack()
|
||||
| | | | | gsm48_cc_tx_retrieve_rej()
|
||||
| | | | | gsm48_cc_tx_start_dtmf_ack()
|
||||
| | | | | gsm48_cc_tx_start_dtmf_rej()
|
||||
| | | | | gsm48_cc_tx_stop_dtmf_ack()
|
||||
| | | | | gsm48_cc_tx_modify()
|
||||
| | | | | gsm48_cc_tx_modify_complete()
|
||||
| | | | | gsm48_cc_tx_modify_reject()
|
||||
| | | | | gsm48_cc_tx_notify()
|
||||
| | | | | gsm48_cc_tx_userinfo()
|
||||
| | | |
|
||||
| | | | gsm0480_send_ussd_response() libmsc/gsm_04_80.c
|
||||
| | | | gsm0480_send_ussd_reject() libmsc/gsm_04_80.c
|
||||
| | | | gsm0480_send_ussdNotify() libmsc/gsm_04_80.c
|
||||
| | | | ^ bsc_send_ussd_no_srv() osmo-bsc/osmo_bsc_api.c
|
||||
| | | | gsm0480_send_releaseComplete() libmsc/gsm_04_80.c
|
||||
| | | | ^ bsc_send_ussd_no_srv() osmo-bsc/osmo_bsc_api.c
|
||||
| | | |
|
||||
| | | | gsm411_sendmsg() libmsc/gsm_04_11.c
|
||||
| | | |
|
||||
| | | | bsc_maybe_lu_reject() osmo-bsc/osmo_bsc_api.c
|
||||
| | | | ^ complete_layer3()
|
||||
| | | | | bsc_dtap()
|
||||
| | | |
|
||||
| | | | dtap_rcvmsg() osmo-bsc/osmo_bsc_bssap.c
|
||||
| | | |
|
||||
| | | | gsm48_tx_mm_serv_ack() libbsc/gsm_04_08_utils.c
|
||||
| | | | ^ _gsm48_rx_mm_serv_req_sec_cb()
|
||||
| | | | | bsc_send_ussd_no_srv() osmo-bsc/osmo_bsc_api.c
|
||||
| | | |
|
||||
| | | | gsm48_tx_mm_serv_rej() libbsc/gsm_04_08_utils.c
|
||||
| | |
|
||||
| | | bsc_rll_req.cb = rll_ind_cb() from rll_establish() from gsm0808_submit_dtap()
|
||||
| | | ^ complete_rllr() libbsc/bsc_rll.c
|
||||
| | | | ^ timer_cb() libbsc/bsc_rll.c
|
||||
| | | | | rll_indication() libbsc/bsc_rll.c
|
||||
| | | | | rll_lchan_signal() libbsc/bsc_rll.c
|
||||
| |
|
||||
| | bsc_cipher_mode_compl()
|
||||
| | ^ bsc_api.cipher_mode_compl()
|
||||
| | | dispatch_dtap() (2)
|
||||
| | | with GSM48_MT_RR_CIPH_M_COMPL
|
||||
| |
|
||||
| | bsc_dtap()
|
||||
| | ^ cb from osmo-bsc/osmo_bsc_api.c
|
||||
| | bsc_api.dtap()
|
||||
| | ^ libbsc/bsc_api.c:
|
||||
| | | dispatch_dtap() (2)
|
||||
| | | case GSM48_MT_RR_APP_INFO
|
||||
| | | case unknown 04.08 RR
|
||||
| |
|
||||
| | bsc_assign_compl()
|
||||
| | ^ osmo-bsc/osmo_bsc_api.c
|
||||
| | bsc_api.assign_compl()
|
||||
| | ^ libbsc/bsc_api.c:
|
||||
| | | dispatch_dtap() (2)
|
||||
| | | case GSM48_MT_RR_CHAN_MODE_MODIF_ACK
|
||||
| | | handle_ass_compl()
|
||||
| | | ^ dispatch_dtap() (2)
|
||||
| | | | case GSM48_MT_RR_ASS_COMPL
|
||||
| |
|
||||
| | bsc_assign_fail()
|
||||
| |
|
||||
| | bsc_cm_update()
|
||||
|
|
||||
| osmo-bsc/osmo_bsc_bssap.c:
|
||||
| bssmap_handle_clear_command()
|
||||
| bssmap_handle_cipher_mode()
|
||||
| bssmap_handle_assignm_req()
|
||||
|
|
||||
|
||||
|
||||
Osmo-BSC receives from MSC:
|
||||
sccp_system_incoming_ctx() (libosmo-sccp)
|
||||
| L2 type:
|
||||
v SCCP_MSG_TYPE_CR: _sccp_handle_connection_request(msgb, ctx);
|
||||
SCCP_MSG_TYPE_RLSD: _sccp_handle_connection_released(msgb);
|
||||
SCCP_MSG_TYPE_CREF: _sccp_handle_connection_refused(msgb);
|
||||
SCCP_MSG_TYPE_CC: _sccp_handle_connection_confirm(msgb);
|
||||
SCCP_MSG_TYPE_RLC: _sccp_handle_connection_release_complete(msgb);
|
||||
|
||||
SCCP_MSG_TYPE_DT1: _sccp_handle_connection_dt1(msgb);
|
||||
Note: a dt1 target entry was created during one of:
|
||||
- bsc_open_connection() (SCCP connections are established by the BSC, exclusively)
|
||||
sccp_connection_connect()
|
||||
_sccp_send_connection_request()
|
||||
llist_add_tail(&connection->list, &sccp_connections);
|
||||
- sccp_system_incoming_ctx()
|
||||
SCCP_MSG_TYPE_CR:
|
||||
_sccp_handle_connection_request(struct msgb *msgb, void *ctx)
|
||||
cb->accept_cb() = msc_sccp_accept()
|
||||
|
||||
SCCP_MSG_TYPE_UDT: _sccp_handle_read(msgb) --read_cb--> osmo-bsc/osmo_bsc_sccp.c:msc_sccp_read()
|
||||
msc_sccp_read()
|
||||
| bsc_handle_udt() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_bssap.c:494
|
||||
v bssmap_rcvmsg_udt() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_bssap.c:387
|
||||
gsm0808_bssmap_name() ./libosmocore/src/gsm/gsm0808.c:535
|
||||
bssmap_handle_reset_ack() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_bssap.c:91
|
||||
LOGP()
|
||||
bssmap_handle_paging() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_bssap.c:99
|
||||
GSM0808_IE_IMSI
|
||||
GSM0808_IE_CELL_IDENTIFIER_LIST
|
||||
GSM0808_IE_TMSI
|
||||
CELL_IDENT_LAC
|
||||
CELL_IDENT_BSS
|
||||
GSM0808_IE_CHANNEL_NEEDED
|
||||
GSM0808_IE_EMLPP_PRIORITY
|
||||
subscr_get_or_create() ./openbsc/openbsc/src/libcommon/gsm_subscriber_base.c:101
|
||||
subscr_group
|
||||
LOGL_INFO
|
||||
bsc_grace_paging_request() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_grace.c:87
|
||||
normal_paging() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_grace.c:37
|
||||
if (msc->core_lac != -1)
|
||||
paging_request_bts() ./openbsc/openbsc/src/libbsc/paging.c:307
|
||||
trx_is_usable() ./openbsc/openbsc/src/libbsc/chan_alloc.c:49
|
||||
if is_ipaccess_bts() and nm_is_running(): 0
|
||||
else: 1
|
||||
paging_init_if_needed() ./openbsc/openbsc/src/libbsc/paging.c:224
|
||||
LAUNCH TIMER:
|
||||
bts->paging.work_timer.cb = paging_worker;
|
||||
paging_worker() ./openbsc/openbsc/src/libbsc/paging.c:217
|
||||
paging_handle_pending_requests() ./openbsc/openbsc/src/libbsc/paging.c:169 (R):
|
||||
paging_give_credit() ./openbsc/openbsc/src/libbsc/paging.c:107 (R):
|
||||
recurse paging_handle_pending_requests()
|
||||
can_send_pag_req() ./openbsc/openbsc/src/libbsc/paging.c:116
|
||||
page_ms() ./openbsc/openbsc/src/libbsc/paging.c:69
|
||||
gsm0808_page() ./openbsc/openbsc/src/libbsc/bsc_api.c:415
|
||||
rsl_paging_cmd() ./openbsc/openbsc/src/libbsc/abis_rsl.c:751
|
||||
abis_rsl_dchan_hdr
|
||||
RSL_MT_PAGING_CMD
|
||||
RSL_CHAN_PCH_AGCH
|
||||
init_dchan_hdr() ./openbsc/openbsc/src/libbsc/abis_rsl.c:99
|
||||
mdisc_by_msgtype() ./openbsc/openbsc/src/libbsc/abis_rsl.c:80
|
||||
ABIS_RSL_MDISC_RLL
|
||||
ABIS_RSL_MDISC_TRX
|
||||
ABIS_RSL_MDISC_COM_CHAN
|
||||
ABIS_RSL_MDISC_DED_CHAN
|
||||
ABIS_RSL_MDISC_LOC
|
||||
RSL_IE_CHAN_NR
|
||||
RSL_IE_PAGING_GROUP
|
||||
RSL_IE_MS_IDENTITY
|
||||
RSL_IE_CHAN_NEEDED
|
||||
abis_rsl_sendmsg() ./libosmo-abis/src/e1_input.c:258
|
||||
_paging_request() ./openbsc/openbsc/src/libbsc/paging.c:279
|
||||
llist_add_tail(&req->entry, &bts_entry->pending_requests);
|
||||
paging_schedule_if_needed() ./openbsc/openbsc/src/libbsc/paging.c:96
|
||||
if (msc->core_lac == -1)
|
||||
paging_request()
|
||||
gsm_bts_by_lac() ./openbsc/openbsc/src/libcommon/gsm_data.c:135
|
||||
paging_request_bts() ./openbsc/openbsc/src/libbsc/paging.c:307
|
||||
(see above)
|
||||
if err
|
||||
paging_request_stop()
|
||||
(see below)
|
||||
locked_paging() ./openbsc/openbsc/src/osmo-bsc/osmo_bsc_grace.c:54
|
||||
paging_request_bts() ./openbsc/openbsc/src/libbsc/paging.c:307
|
||||
(see above)
|
||||
|
||||
|
||||
- A-bis Interface
|
||||
|
||||
Osmo-BSC to BTS:
|
||||
abis_sendmsg()
|
||||
^
|
||||
| libosmo-abis/src/e1_input.c:abis_rsl_sendmsg()
|
||||
| ^
|
||||
| | libbsc/abis_rsl.c: 23 callers
|
||||
| | rsl_bcch_info()
|
||||
| | rsl_sacch_filling()
|
||||
| | rsl_sacch_info_modify()
|
||||
| | rsl_chan_bs_power_ctrl()
|
||||
| | rsl_chan_ms_power_ctrl()
|
||||
| | rsl_chan_activate_lchan()
|
||||
| | rsl_chan_mode_modify_req()
|
||||
| | rsl_encryption_cmd()
|
||||
| | rsl_deact_sacch()
|
||||
| | rsl_rf_chan_release()
|
||||
| | rsl_paging_cmd()
|
||||
| | rsl_imm_assign_cmd()
|
||||
| | rsl_siemens_mrpci()
|
||||
| | rsl_data_request()
|
||||
| | rsl_establish_request()
|
||||
| | rsl_release_request()
|
||||
| | rsl_ipacc_crcx()
|
||||
| | rsl_ipacc_mdcx()
|
||||
| | rsl_ipacc_pdch_activate()
|
||||
| | rsl_sms_cb_command()
|
||||
| | rsl_nokia_si_begin()
|
||||
| | rsl_nokia_si_end()
|
||||
| | rsl_bs_power_control()
|
||||
|
|
||||
| libbsc/bts_nokia_site.c:nokia_abis_nm_queue_send_next()
|
||||
|
|
||||
| libbsc/abis_nm.c:_abis_nm_sendmsg()
|
||||
| ^ abis_nm_sendmsg()
|
||||
| | abis_nm_sendmsg_direct()
|
||||
|
|
||||
| osmo-bts/src/common/abis.c:abis_oml_sendmsg()
|
||||
| osmo-bts/src/common/abis.c:abis_bts_rsl_sendmsg()
|
||||
|
||||
|
||||
|
||||
libbsc/e1_config.c:bts_isdn_e1inp_line_ops.sign_link =
|
||||
libbsc/e1_config.c:bts_isdn_sign_link(struct msgb *msg)
|
||||
case E1INP_SIGN_RSL:
|
||||
libbsc/abis_rsl.c:abis_rsl_rcvmsg(msg) (1)
|
||||
case E1INP_SIGN_OML:
|
||||
ret = bts->model->oml_rcvmsg(msg);
|
||||
|
||||
libbsc/bts_ipaccess_nanobts.c:ipaccess_e1inp_line_ops.sign_link =
|
||||
ipaccess_sign_link(struct msgb *msg)
|
||||
case E1INP_SIGN_RSL:
|
||||
libbsc/abis_rsl.c:abis_rsl_rcvmsg(msg) (1)
|
||||
case E1INP_SIGN_OML:
|
||||
libbsc/abis_nm.c:abis_nm_rcvmsg(msg);
|
||||
|
||||
|
||||
(1)
|
||||
libbsc/abis_rsl.c:abis_rsl_rcvmsg(msg)
|
||||
case ABIS_RSL_MDISC_RLL:
|
||||
libbsc/abis_rsl.c:abis_rsl_rx_rll(msg)
|
||||
case DATA_IND, EST_IND:
|
||||
libbsc/bsc_api.c:gsm0408_rcvmsg(struct msgb *msg, uint8_t link_id)
|
||||
msg->lchan->ts->trx->bts->network->bsc_api;
|
||||
if (lchan->conn)
|
||||
libbsc/bsc_api.c:dispatch_dtap() (2)
|
||||
else
|
||||
lchan->conn = subscr_con_allocate(msg->lchan);
|
||||
rc = api->compl_l3(lchan->conn, msg, 0); (3)
|
||||
|
||||
case ABIS_RSL_MDISC_DED_CHAN:
|
||||
rc = abis_rsl_rx_dchan(msg);
|
||||
|
||||
case ABIS_RSL_MDISC_COM_CHAN:
|
||||
rc = abis_rsl_rx_cchan(msg);
|
||||
|
||||
case ABIS_RSL_MDISC_TRX:
|
||||
rc = abis_rsl_rx_trx(msg);
|
||||
|
||||
case ABIS_RSL_MDISC_IPACCESS:
|
||||
rc = abis_rsl_rx_ipacc(msg);
|
||||
break;
|
||||
|
||||
case ABIS_RSL_MDISC_LOC:
|
||||
LOGP(DRSL, LOGL_NOTICE, "unimplemented RSL msg disc 0x%02x\n",
|
||||
|
||||
|
||||
(2)
|
||||
libbsc/bsc_api.c:dispatch_dtap()
|
||||
struct bsc_api *api = msg->lchan->ts->trx->bts->network->bsc_api;
|
||||
|
||||
default:
|
||||
if (api->dtap)
|
||||
api->dtap(conn, link_id, msg); (5)
|
||||
|
||||
case GSM48_PDISC_RR:
|
||||
case GSM48_MT_RR_HANDO_COMPL:
|
||||
handle_rr_ho_compl(msg);
|
||||
|
||||
case GSM48_MT_RR_HANDO_FAIL:
|
||||
handle_rr_ho_fail(msg);
|
||||
|
||||
case GSM48_MT_RR_CIPH_M_COMPL:
|
||||
if (api->cipher_mode_compl)
|
||||
api->cipher_mode_compl(conn, msg, (4)
|
||||
conn->lchan->encr.alg_id);
|
||||
|
||||
case GSM48_MT_RR_ASS_COMPL:
|
||||
handle_ass_compl(conn, msg);
|
||||
|
||||
case GSM48_MT_RR_ASS_FAIL:
|
||||
handle_ass_fail(conn, msg);
|
||||
|
||||
case GSM48_MT_RR_CHAN_MODE_MODIF_ACK:
|
||||
rc = gsm48_rx_rr_modif_ack(msg);
|
||||
if (rc < 0) {
|
||||
api->assign_fail(conn, GSM0808_CAUSE_NO_RADIO_RESOURCE_AVAILABLE)
|
||||
else
|
||||
api->assign_compl()
|
||||
|
||||
case GSM48_MT_RR_CLSM_CHG:
|
||||
handle_classmark_chg(conn, msg);
|
||||
|
||||
case GSM48_MT_RR_APP_INFO:
|
||||
if (api->dtap)
|
||||
api->dtap(conn, link_id, msg); (5)
|
||||
|
||||
default:
|
||||
if (api->dtap)
|
||||
api->dtap(conn, link_id, msg); (5)
|
||||
|
||||
case GSM48_MT_RR_GPRS_SUSP_REQ:
|
||||
DEBUGP(DRR, "GRPS SUSPEND REQUEST\n");
|
||||
|
||||
case GSM48_MT_RR_STATUS:
|
||||
LOGP(DRR, LOGL_NOTICE, "RR STATUS (cause: %s)\n",
|
||||
|
||||
case GSM48_MT_RR_MEAS_REP:
|
||||
LOGP(DMEAS, LOGL_ERROR, "DIRECT GSM48 MEASUREMENT REPORT ?!? ");
|
||||
|
||||
|
||||
(3)[0]
|
||||
msc_bsc_api().compl_l3 =
|
||||
libmsc/osmo_msc.c: msc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg,
|
||||
libmsc/gsm0408.c: gsm0408_dispatch() (6)
|
||||
|
||||
(3)[1]
|
||||
osmo_bsc_api().compl_l3 =
|
||||
osmo-bsc/osmo_bsc_api.c:bsc_compl_l3()
|
||||
msc = bsc_find_msc(conn, msg);
|
||||
complete_layer3(conn, msg, msc)
|
||||
bsc_filter_initial(msc->network->bsc_data, msc, conn, msg,
|
||||
&imsi, &con_type, &lu_cause);
|
||||
bsc_create_new_connection(conn, msc, send_ping);
|
||||
sccp->state_cb = msc_outgoing_sccp_state()
|
||||
sccp->data_cb = msc_outgoing_sccp_data()
|
||||
bsc_con->send_ping = send_ping()
|
||||
bsc_con->sccp_it_timeout.cb = sccp_it_timeout()
|
||||
bsc_con->sccp_cc_timeout.cb = sccp_cc_timeout()
|
||||
bsc_scan_bts_msg(conn, msg); (7)
|
||||
resp = gsm0808_create_layer3(msg, network_code, country_code, lac, ci);
|
||||
|
||||
(5)[0]
|
||||
msc_bsc_api().dtap =
|
||||
libmsc/osmo_msc.c: msc_dtap(conn, link_id, msg)
|
||||
gsm0408_dispatch(conn, msg) (6)
|
||||
|
||||
(5)[1]
|
||||
osmo_bsc_api().dtap =
|
||||
osmo-bsc/osmo_bsc_api.c: bsc_dtap(conn, link_id, msg)
|
||||
if (handle_cc_setup(conn, msg) >= 1) return;
|
||||
if (bsc_filter_data(conn, msg, &lu_cause) < 0)
|
||||
bsc_maybe_lu_reject()
|
||||
return;
|
||||
bsc_scan_bts_msg(conn, msg); (7)
|
||||
resp = gsm0808_create_dtap(msg, link_id);
|
||||
queue_msg_or_return(resp);
|
||||
|
||||
(7)
|
||||
bsc_scan_bts_msg() <osmo-bsc/osmo_bsc_filter.c:212>:
|
||||
if GSM48_PDISC_MM, GSM48_MT_MM_LOC_UPD_REQUEST
|
||||
handle_lu_request() <osmo-bsc/osmo_bsc_filter.c:29>:
|
||||
gsm48_generate_lai()
|
||||
if GSM48_PDISC_RR, GSM48_MT_RR_PAG_RESP
|
||||
handle_page_resp() <osmo-bsc/osmo_bsc_filter.c:97>:
|
||||
extract_sub() <osmo-bsc/osmo_bsc_filter.c:57>
|
||||
paging_request_stop() <libbsc/paging.c:390>:
|
||||
log_set_context()
|
||||
_paging_request_stop() <libbsc/paging.c:359>:
|
||||
paging_init_if_needed() <libbsc/paging.c:224>:
|
||||
paging_worker() <libbsc/paging.c:217>:
|
||||
paging_handle_pending_requests() <libbsc/paging.c:169> (R):
|
||||
cb()
|
||||
paging_give_credit() <libbsc/paging.c:107> (R):
|
||||
paging_handle_pending_requests() <libbsc/paging.c:169> (recursive: see 37)
|
||||
can_send_pag_req() <libbsc/paging.c:116>:
|
||||
page_ms() <libbsc/paging.c:69>:
|
||||
gsm0808_page() <libbsc/bsc_api.c:415>:
|
||||
rsl_paging_cmd() <libbsc/abis_rsl.c:751>:
|
||||
abis_rsl_dchan_hdr = RSL_IE_CHAN_NR
|
||||
mdisc_by_msgtype() <libbsc/abis_rsl.c:80>:
|
||||
ABIS_RSL_MDISC_RLL
|
||||
ABIS_RSL_MDISC_TRX
|
||||
ABIS_RSL_MDISC_COM_CHAN
|
||||
ABIS_RSL_MDISC_DED_CHAN
|
||||
ABIS_RSL_MDISC_LOC
|
||||
msgb_tv_put(msg, RSL_IE_PAGING_GROUP, paging_group);
|
||||
msgb_tlv_put(msg, RSL_IE_MS_IDENTITY, len-2, ms_ident+2);
|
||||
msgb_tv_put(msg, RSL_IE_CHAN_NEEDED, chan_needed);
|
||||
rsl_link
|
||||
abis_rsl_sendmsg()
|
||||
cbfn() (8)
|
||||
paging_remove_request() <libbsc/paging.c:60>:
|
||||
subscr_put() <libcommon/gsm_subscriber_base.c:89>
|
||||
subscr_put() <libcommon/gsm_subscriber_base.c:89>
|
||||
|
||||
(8)[0]
|
||||
libmsc/gsm_04_08.c:mncc_tx_to_cc()
|
||||
req->cbfn =
|
||||
libmsc/gsm_04_08.c:setup_trig_pag_evt
|
||||
|
||||
(8)[1]
|
||||
libmsc/gsm_04_11.c:gsm411_send_sms_subscr()
|
||||
req->cbfn =
|
||||
libmsc/gsm_04_11.c:paging_cb_send_sms
|
||||
|
||||
(9)
|
||||
bsc_scan_msc_msg() ./osmo-bsc/osmo_bsc_filter.c:330
|
||||
gsm48_hdr
|
||||
send_welcome_ussd() ./osmo-bsc/osmo_bsc_filter.c:229
|
||||
LOGP()
|
||||
DMSC
|
||||
LOGL_DEBUG
|
||||
ussd_welcome_txt
|
||||
BSS_SEND_USSD
|
||||
GSM48_MT_MM_INFO
|
||||
bsc_patch_mm_info() ./osmo-bsc/osmo_bsc_filter.c:255
|
||||
uint8_t
|
||||
tzbsd
|
||||
dst
|
||||
tlv_parse()
|
||||
gsm48_mm_att_tlvdef
|
||||
override
|
||||
hr
|
||||
mn
|
||||
TLVP_PRESENT()
|
||||
GSM48_IE_UTC
|
||||
LOGP()
|
||||
DMSC
|
||||
LOGL_DEBUG
|
||||
TLVP_VAL()
|
||||
GSM48_IE_NET_TIME_TZ
|
||||
GSM48_IE_NET_DST
|
||||
|
||||
|
||||
(6)
|
||||
libmsc/gsm0408.c: gsm0408_dispatch() (MSC rx from BSC)
|
||||
if (silent_call_reroute(conn, msg))
|
||||
return silent_call_rx(conn, msg);
|
||||
|
||||
case gsm48_pdisc_cc:
|
||||
rc = gsm0408_rcv_cc(conn, msg);
|
||||
|
||||
case gsm48_pdisc_mm:
|
||||
rc = gsm0408_rcv_mm(conn, msg);
|
||||
|
||||
case gsm48_pdisc_rr:
|
||||
rc = gsm0408_rcv_rr(conn, msg);
|
||||
|
||||
case gsm48_pdisc_sms:
|
||||
rc = gsm0411_rcv_sms(conn, msg);
|
||||
|
||||
case gsm48_pdisc_nc_ss:
|
||||
rc = handle_rcv_ussd(conn, msg);
|
||||
|
||||
case gsm48_pdisc_mm_gprs:
|
||||
case gsm48_pdisc_sm_gprs:
|
||||
logp(drll, logl_notice, "unimplemented "
|
||||
|
||||
msc_bsc_api().assign_compl =
|
||||
msc_assign_compl()
|
||||
nothing
|
||||
|
||||
(4)[0]
|
||||
libmsc/osmo_msc.c:msc_bsc_api().cipher_mode_compl =
|
||||
msc_ciph_m_compl(conn, msg, alg_id)
|
||||
conn->sec_operation->cb(GSM_HOOK_RR_SECURITY, GSM_SECURITY_SUCCEEDED,
|
||||
NULL, conn, conn->sec_operation->cb_data)
|
||||
release_security_operation(conn);
|
||||
msc_release_connection(conn)
|
||||
bsc_api.c:gsm0808_clear(conn)
|
||||
libbsc/handover_logic.c:bsc_clear_handover(conn, 1)
|
||||
libbsc/chan_alloc.c:lchan_release(ho->new_lchan, 0, RSL_REL_LOCAL_END);
|
||||
libbsc/chan_alloc.c:lchan_release(conn->secondary_lchan, 0, RSL_REL_LOCAL_END),
|
||||
(conn->lchan, 1, RSL_REL_NORMAL)
|
||||
bsc_api.c:subscr_con_free(conn)
|
||||
libcommon/gsm_subscriber_base.c:subscr_put(conn->subscr);
|
||||
|
||||
(4)[1]
|
||||
osmo-bsc/osmo_bsc_api.c:osmo_bsc_api().cipher_mode_compl =
|
||||
bsc_cipher_mode_compl()
|
||||
queue_msg_or_return() osmo-bsc/osmo_bsc_api.c
|
||||
bsc_queue_for_msc()
|
||||
|
||||
|
||||
libbsc/abis_nm.c:abis_nm_rcvmsg(msg);
|
||||
case ABIS_OM_MDISC_FOM:
|
||||
rc = abis_nm_rcvmsg_fom(msg);
|
||||
|
||||
case ABIS_OM_MDISC_MANUF:
|
||||
rc = abis_nm_rcvmsg_manuf(msg);
|
||||
|
||||
case ABIS_OM_MDISC_MMI:
|
||||
case ABIS_OM_MDISC_TRAU:
|
||||
LOGP(DNM, LOGL_ERROR, "unimplemented ABIS OML message discriminator 0x%x\n",
|
||||
|
Reference in New Issue
Block a user