mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-10-24 00:23:53 +00:00
vlr: fix: don't send CM Service Accept after Ciphering Command
Ciphering Mode Command is an implicit CM Service Accept, if we're sending both we're confusing the MS. Change-Id: I3a04debe9b01c086e7f44b6139cb8796fcc71d38 Conflicts: openbsc/tests/msc_vlr/msc_vlr_test_umts_authen.c openbsc/tests/msc_vlr/msc_vlr_test_umts_authen.err
This commit is contained in:
@@ -81,6 +81,7 @@ struct proc_arq_priv {
|
|||||||
enum vlr_ciph ciphering_required;
|
enum vlr_ciph ciphering_required;
|
||||||
bool is_r99;
|
bool is_r99;
|
||||||
bool is_utran;
|
bool is_utran;
|
||||||
|
bool implicitly_accepted_parq_by_ciphering_cmd;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void assoc_par_with_subscr(struct osmo_fsm_inst *fi, struct vlr_subscr *vsub)
|
static void assoc_par_with_subscr(struct osmo_fsm_inst *fi, struct vlr_subscr *vsub)
|
||||||
@@ -125,7 +126,8 @@ static void proc_arq_vlr_dispatch_result(struct osmo_fsm_inst *fi,
|
|||||||
* will be processed before we handle new incoming data from the MS. */
|
* will be processed before we handle new incoming data from the MS. */
|
||||||
|
|
||||||
if (par->type == VLR_PR_ARQ_T_CM_SERV_REQ) {
|
if (par->type == VLR_PR_ARQ_T_CM_SERV_REQ) {
|
||||||
if (success) {
|
if (success
|
||||||
|
&& !par->implicitly_accepted_parq_by_ciphering_cmd) {
|
||||||
rc = par->vlr->ops.tx_cm_serv_acc(par->msc_conn_ref);
|
rc = par->vlr->ops.tx_cm_serv_acc(par->msc_conn_ref);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
LOGPFSML(fi, LOGL_ERROR,
|
LOGPFSML(fi, LOGL_ERROR,
|
||||||
@@ -287,6 +289,7 @@ static void _proc_arq_vlr_node2(struct osmo_fsm_inst *fi)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
par->implicitly_accepted_parq_by_ciphering_cmd = true;
|
||||||
osmo_fsm_inst_state_chg(fi, PR_ARQ_S_WAIT_CIPH, 0, 0);
|
osmo_fsm_inst_state_chg(fi, PR_ARQ_S_WAIT_CIPH, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,9 +118,9 @@ void test_ciph()
|
|||||||
EXPECT_ACCEPTED(false);
|
EXPECT_ACCEPTED(false);
|
||||||
thwart_rx_non_initial_requests();
|
thwart_rx_non_initial_requests();
|
||||||
|
|
||||||
btw("MS sends Ciphering Mode Complete, VLR accepts and sends CM Service Accept");
|
btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept");
|
||||||
ms_sends_msg("0632");
|
ms_sends_msg("0632");
|
||||||
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
|
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
|
||||||
|
|
||||||
btw("a USSD request is serviced");
|
btw("a USSD request is serviced");
|
||||||
dtap_expect_tx_ussd("Your extension is 46071\r");
|
dtap_expect_tx_ussd("Your extension is 46071\r");
|
||||||
@@ -349,9 +349,9 @@ void test_ciph_tmsi()
|
|||||||
EXPECT_ACCEPTED(false);
|
EXPECT_ACCEPTED(false);
|
||||||
thwart_rx_non_initial_requests();
|
thwart_rx_non_initial_requests();
|
||||||
|
|
||||||
btw("MS sends Ciphering Mode Complete, VLR accepts and sends CM Service Accept");
|
btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept");
|
||||||
ms_sends_msg("0632");
|
ms_sends_msg("0632");
|
||||||
VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
|
VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
|
||||||
|
|
||||||
btw("a USSD request is serviced");
|
btw("a USSD request is serviced");
|
||||||
dtap_expect_tx_ussd("Your extension is 46071\r");
|
dtap_expect_tx_ussd("Your extension is 46071\r");
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ DRLL Dispatching 04.08 message, pdisc=6
|
|||||||
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x06 msg_type=0x19
|
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x06 msg_type=0x19
|
||||||
DRLL Dispatching 04.08 message, pdisc=9
|
DRLL Dispatching 04.08 message, pdisc=9
|
||||||
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x09 msg_type=0x01
|
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x09 msg_type=0x01
|
||||||
- MS sends Ciphering Mode Complete, VLR accepts and sends CM Service Accept
|
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
|
||||||
rx from MS: pdisc=0x06 msg_type=0x32
|
rx from MS: pdisc=0x06 msg_type=0x32
|
||||||
DRR MSISDN:46071: CIPHERING MODE COMPLETE
|
DRR MSISDN:46071: CIPHERING MODE COMPLETE
|
||||||
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
|
DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
|
||||||
@@ -237,13 +237,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}: 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_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 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}: 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}: 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_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_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
|
||||||
cm_service_result_sent == 1
|
cm_service_result_sent == 0
|
||||||
- a USSD request is serviced
|
- a USSD request is serviced
|
||||||
expecting USSD:
|
expecting USSD:
|
||||||
Your extension is 46071
|
Your extension is 46071
|
||||||
@@ -700,7 +699,7 @@ DRLL Dispatching 04.08 message, pdisc=6
|
|||||||
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x06 msg_type=0x19
|
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x06 msg_type=0x19
|
||||||
DRLL Dispatching 04.08 message, pdisc=9
|
DRLL Dispatching 04.08 message, pdisc=9
|
||||||
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x09 msg_type=0x01
|
DRLL subscr MSISDN:46071: Message not permitted for initial conn: pdisc=0x09 msg_type=0x01
|
||||||
- MS sends Ciphering Mode Complete, VLR accepts and sends CM Service Accept
|
- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
|
||||||
rx from MS: pdisc=0x06 msg_type=0x32
|
rx from MS: pdisc=0x06 msg_type=0x32
|
||||||
DRR MSISDN:46071: CIPHERING MODE COMPLETE
|
DRR MSISDN:46071: CIPHERING MODE COMPLETE
|
||||||
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
|
DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
|
||||||
@@ -712,13 +711,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}: 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_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 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}: 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}: 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_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_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
|
||||||
cm_service_result_sent == 1
|
cm_service_result_sent == 0
|
||||||
- a USSD request is serviced
|
- a USSD request is serviced
|
||||||
expecting USSD:
|
expecting USSD:
|
||||||
Your extension is 46071
|
Your extension is 46071
|
||||||
|
|||||||
Reference in New Issue
Block a user