lynxis lazus has submitted this change. (
https://gerrit.osmocom.org/c/osmo-msc/+/38406?usp=email )
Change subject: vlr: set the correct CN domain on GSUP messages
......................................................................
vlr: set the correct CN domain on GSUP messages
In preparation of splitting up the libvlr code, set the CN domain
on all required GSUP messages which allow the CN domain to be present.
The test cases expect the exact GSUP message. The additional TLV is
280102 (IE: CN domain, length 1, CS (2)).
Change-Id: I045f29647b0f122a653881030d09de35b64f4dd1
---
M src/libvlr/vlr.c
M tests/msc_vlr/msc_vlr_test_gsm_authen.c
M tests/msc_vlr/msc_vlr_test_gsm_authen.err
M tests/msc_vlr/msc_vlr_test_umts_authen.c
M tests/msc_vlr/msc_vlr_test_umts_authen.err
5 files changed, 17 insertions(+), 13 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/src/libvlr/vlr.c b/src/libvlr/vlr.c
index 97f2484..8a1b470 100644
--- a/src/libvlr/vlr.c
+++ b/src/libvlr/vlr.c
@@ -429,6 +429,8 @@
gsup_msg.hlr_enc_len = vsub->hlr.len;
gsup_msg.hlr_enc = vsub->hlr.buf;
+ gsup_msg.cn_domain = vlr_is_cs(vsub->vlr) ? OSMO_GSUP_CN_DOMAIN_CS :
OSMO_GSUP_CN_DOMAIN_PS;
+
return vlr_subscr_tx_gsup_message(vsub, &gsup_msg);
}
@@ -886,7 +888,7 @@
vlr_rate_ctr_inc(vsub->vlr, VLR_CTR_GSUP_TX_UL_REQ);
gsup_msg.message_type = OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST;
- gsup_msg.cn_domain = vsub->vlr->cfg.is_ps ? OSMO_GSUP_CN_DOMAIN_PS :
OSMO_GSUP_CN_DOMAIN_CS;
+ gsup_msg.cn_domain = vlr_is_cs(vsub->vlr) ? OSMO_GSUP_CN_DOMAIN_CS :
OSMO_GSUP_CN_DOMAIN_PS;
rc = vlr_subscr_tx_gsup_message(vsub, &gsup_msg);
return rc;
@@ -903,7 +905,7 @@
gsup_msg.message_type = OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST;
gsup_msg.auts = auts;
gsup_msg.rand = auts_rand;
- gsup_msg.cn_domain = OSMO_GSUP_CN_DOMAIN_CS;
+ gsup_msg.cn_domain = vlr_is_cs(vsub->vlr) ? OSMO_GSUP_CN_DOMAIN_CS :
OSMO_GSUP_CN_DOMAIN_PS;
return vlr_subscr_tx_gsup_message(vsub, &gsup_msg);
}
@@ -940,6 +942,7 @@
struct osmo_gsup_message gsup_msg = {
.message_class = OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT,
.message_type = OSMO_GSUP_MSGT_AUTH_FAIL_REPORT,
+ .cn_domain = vlr_is_cs(vsub->vlr) ? OSMO_GSUP_CN_DOMAIN_CS :
OSMO_GSUP_CN_DOMAIN_PS,
};
vlr_rate_ctr_inc(vsub->vlr, VLR_CTR_GSUP_TX_AUTH_FAIL_REP);
@@ -1284,6 +1287,7 @@
"update procedure" : "subscription withdraw");
gsup_reply.message_type = OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT;
+ gsup_reply.cn_domain = vlr_is_cs(vsub->vlr) ? OSMO_GSUP_CN_DOMAIN_CS :
OSMO_GSUP_CN_DOMAIN_PS;
rc = vlr_subscr_tx_gsup_message(vsub, &gsup_reply);
vlr_subscr_cancel_attach_fsm(vsub, fsm_cause,
vlr_gmm_cause_to_reject_cause_domain(gsup_msg->cause, true));
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c
b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
index 6d7e88a..3be928c 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
@@ -1170,7 +1170,7 @@
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("MS sends Authen Response with too short SRES data, auth is thwarted.");
- gsup_expect_tx("0b010809710000004026f0" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000004026f0280102" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_bssap_clear();
ms_sends_msg("05542d8b2c");
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err
b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
index 94c1694..44c0a53 100644
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
@@ -3273,7 +3273,7 @@
DVLR SUBSCR(IMSI-901700000004620) AUTH SRES/RES missing
DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000004026f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000004026f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000004620:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU)
DVLR vlr_lu_fsm(IMSI-901700000004620:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c
b/tests/msc_vlr/msc_vlr_test_umts_authen.c
index 0a2a446..0f09491 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c
@@ -704,7 +704,7 @@
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("MS sends Authen Response of wrong RES size, VLR thwarts");
- gsup_expect_tx("0b010809710000000156f0" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000000156f0280102" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_release_clear(via_ran);
ms_sends_msg("0554" "e229c19e" "2103" "791f2e"
/* nipped one byte */);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
@@ -804,7 +804,7 @@
VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
btw("MS sends Authen Response of wrong RES size, VLR thwarts");
- gsup_expect_tx("0b010809710000000156f0" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000000156f0280102" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_release_clear(via_ran);
ms_sends_msg("0554" "e229c19e" "2105"
"791f2e4123" /* added one byte */);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
@@ -909,7 +909,7 @@
else
btw("MS sends Authen Response of wrong RES size, VLR thwarts:"
" UTRAN disallows GSM AKA altogether");
- gsup_expect_tx("0b010809710000000156f0" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
+ gsup_expect_tx("0b010809710000000156f0280102" VLR_TO_HLR); /*
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT */
expect_release_clear(via_ran);
ms_sends_msg("0554" "e229c19e" /* Only the SRES half of the RES
*/);
VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err
b/tests/msc_vlr/msc_vlr_test_umts_authen.err
index aacff39..cf402cc 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.err
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.err
@@ -2649,7 +2649,7 @@
DVLR SUBSCR(IMSI-901700000010650) AUTH SRES/RES has invalid length: 7. Expected either 4
(GSM AKA) or 8 (UMTS AKA)
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
@@ -2765,7 +2765,7 @@
DVLR SUBSCR(IMSI-901700000010650) AUTH RES has invalid length: 7. Expected 8 (UMTS AKA)
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
@@ -2881,7 +2881,7 @@
DVLR SUBSCR(IMSI-901700000010650) AUTH SRES/RES has invalid length: 9. Expected either 4
(GSM AKA) or 8 (UMTS AKA)
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
@@ -2997,7 +2997,7 @@
DVLR SUBSCR(IMSI-901700000010650) AUTH RES has invalid length: 9. Expected 8 (UMTS AKA)
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
@@ -3113,7 +3113,7 @@
DVLR SUBSCR(IMSI-901700000010650) GSM AUTH failure: mismatching sres (expected sres=9b 36
ef df )
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000010650:GERAN-A:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU)
DVLR vlr_lu_fsm(IMSI-901700000010650:GERAN-A:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
@@ -3229,7 +3229,7 @@
DVLR SUBSCR(IMSI-901700000010650) AUTH via UTRAN, cannot allow GSM AKA (MS is R99
capable, vec has UMTS AKA tokens, res_len=4 is INVALID on UTRAN)
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}:
Authentication terminating with result FAILURE, cause ILLEGAL_MS
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_WAIT_RESP}: state_chg
to VLR_SUB_AS_AUTH_FAILED
-GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f00a0101
+GSUP --> HLR: OSMO_GSUP_MSGT_AUTH_FAIL_REPORT: 0b010809710000000156f02801020a0101
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}:
Terminating (cause = OSMO_FSM_TERM_REGULAR)
DVLR VLR_Authenticate(IMSI-901700000010650:UTRAN-Iu:LU){VLR_SUB_AS_AUTH_FAILED}: Removing
from parent vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU)
DVLR vlr_lu_fsm(IMSI-901700000010650:UTRAN-Iu:LU){VLR_ULA_S_WAIT_AUTH}: Received Event
VLR_ULA_E_AUTH_FAILURE
--
To view, visit
https://gerrit.osmocom.org/c/osmo-msc/+/38406?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I045f29647b0f122a653881030d09de35b64f4dd1
Gerrit-Change-Number: 38406
Gerrit-PatchSet: 4
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>