mirror of
https://github.com/open5gs/open5gs.git
synced 2025-10-23 07:41:57 +00:00
Compare commits
2 Commits
75c12a52d0
...
7bdeea7269
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7bdeea7269 | ||
|
|
e8dfdbaaea |
@@ -722,6 +722,8 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e,
|
||||
ogs_kdf_nh_enb(mme_ue->kasme, mme_ue->kenb, mme_ue->nh);
|
||||
mme_ue->nhcc = 1;
|
||||
|
||||
ogs_fatal("[%s] TAU accept(active_flag=1)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_InitialContextSetup);
|
||||
ogs_expect(r == OGS_OK);
|
||||
@@ -731,6 +733,8 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e,
|
||||
OGS_NAS_EPS_TRACKING_AREA_UPDATE_REQUEST_EPS_BEARER_CONTEXT_STATUS_TYPE)) {
|
||||
ogs_debug("[%s] No EPS Bearer Context Status "
|
||||
"in TAU request", mme_ue->imsi_bcd);
|
||||
ogs_fatal("[%s] TAU accept(No Bearer Context Status)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
@@ -776,6 +780,9 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e,
|
||||
sgw_ue = sgw_ue_find_by_id(mme_ue->sgw_ue_id);
|
||||
ogs_assert(sgw_ue);
|
||||
|
||||
GTP_COUNTER_INCREMENT(
|
||||
mme_ue, GTP_COUNTER_DELETE_SESSION_BY_TAU);
|
||||
|
||||
mme_gtp_send_delete_session_request(
|
||||
enb_ue, sgw_ue, sess,
|
||||
OGS_GTP_DELETE_SEND_TAU_ACCEPT);
|
||||
@@ -785,10 +792,12 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e,
|
||||
}
|
||||
|
||||
if (deleted > 0) {
|
||||
ogs_info("[%s] Deleted %d session(s) due "
|
||||
ogs_fatal("[%s] Deleted %d session(s) due "
|
||||
"to BCS mismatch",
|
||||
mme_ue->imsi_bcd, deleted);
|
||||
} else {
|
||||
ogs_fatal("[%s] TAU accept(BCS match)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
@@ -798,6 +807,8 @@ static void common_register_state(ogs_fsm_t *s, mme_event_t *e,
|
||||
} else if (e->s1ap_code ==
|
||||
S1AP_ProcedureCode_id_uplinkNASTransport) {
|
||||
ogs_debug(" Uplink NAS Transport");
|
||||
ogs_fatal("[%s] TAU accept(UplinkNASTransport)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
|
||||
@@ -433,7 +433,7 @@ struct mme_ue_s {
|
||||
|
||||
#define MME_TAU_TYPE_INITIAL_UE_MESSAGE 1
|
||||
#define MME_TAU_TYPE_UPLINK_NAS_TRANPORT 2
|
||||
#define MME_TAU_TYPE_UNPROTECTED_INGERITY 3
|
||||
#define MME_TAU_TYPE_UNPROTECTED_INTEGRITY 3
|
||||
uint8_t tracking_area_update_request_type;
|
||||
|
||||
/* 1. MME initiated detach request to the UE.
|
||||
@@ -799,6 +799,7 @@ struct mme_ue_s {
|
||||
|
||||
#define GTP_COUNTER_CREATE_SESSION_BY_PATH_SWITCH 1
|
||||
#define GTP_COUNTER_DELETE_SESSION_BY_PATH_SWITCH 2
|
||||
#define GTP_COUNTER_DELETE_SESSION_BY_TAU 3
|
||||
struct {
|
||||
uint8_t request;
|
||||
uint8_t response;
|
||||
|
||||
@@ -880,6 +880,22 @@ void mme_s11_handle_delete_session_response(
|
||||
|
||||
return;
|
||||
|
||||
} else if (action == OGS_GTP_DELETE_SEND_TAU_ACCEPT) {
|
||||
|
||||
MME_SESS_CLEAR(sess);
|
||||
|
||||
GTP_COUNTER_CHECK(mme_ue, GTP_COUNTER_DELETE_SESSION_BY_TAU,
|
||||
|
||||
ogs_fatal("[%s] TAU accept(BCS mismatch)", mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
ogs_assert(r != OGS_ERROR);
|
||||
|
||||
);
|
||||
|
||||
return;
|
||||
|
||||
} else {
|
||||
ogs_fatal("Invalid action = %d", action);
|
||||
ogs_assert_if_reached();
|
||||
|
||||
@@ -138,10 +138,11 @@ uint8_t mme_s6a_handle_ula(
|
||||
OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING_WITH_IMSI_ATTACH)) {
|
||||
|
||||
mme_ue->tracking_area_update_request_type =
|
||||
MME_TAU_TYPE_UNPROTECTED_INGERITY;
|
||||
MME_TAU_TYPE_UNPROTECTED_INTEGRITY;
|
||||
ogs_assert(OGS_OK == sgsap_send_location_update_request(mme_ue));
|
||||
|
||||
} else {
|
||||
ogs_fatal("[%s] TAU accept(Diameter ULA)", mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_InitialContextSetup);
|
||||
ogs_expect(r == OGS_OK);
|
||||
|
||||
@@ -150,11 +150,15 @@ void sgsap_handle_location_update_accept(mme_vlr_t *vlr, ogs_pkbuf_t *pkbuf)
|
||||
ogs_kdf_nh_enb(mme_ue->kasme, mme_ue->kenb, mme_ue->nh);
|
||||
mme_ue->nhcc = 1;
|
||||
|
||||
ogs_fatal("[%s] LU accept + TAU accept(active_flag==1)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_InitialContextSetup);
|
||||
ogs_expect(r == OGS_OK);
|
||||
ogs_assert(r != OGS_ERROR);
|
||||
} else {
|
||||
ogs_fatal("[%s] LU accept + TAU accept(active_flag==0)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
@@ -163,13 +167,17 @@ void sgsap_handle_location_update_accept(mme_vlr_t *vlr, ogs_pkbuf_t *pkbuf)
|
||||
} else if (mme_ue->tracking_area_update_request_type ==
|
||||
MME_TAU_TYPE_UPLINK_NAS_TRANPORT) {
|
||||
ogs_debug(" Uplink NAS Transport");
|
||||
ogs_fatal("[%s] LU accept + accept(UplinkNASTransport)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
ogs_assert(r != OGS_ERROR);
|
||||
} else if (mme_ue->tracking_area_update_request_type ==
|
||||
MME_TAU_TYPE_UNPROTECTED_INGERITY) {
|
||||
MME_TAU_TYPE_UNPROTECTED_INTEGRITY) {
|
||||
ogs_debug(" Unprotected Integrity");
|
||||
ogs_fatal("[%s] LU accept + TAU accept(Unprotected Integrity)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_InitialContextSetup);
|
||||
ogs_expect(r == OGS_OK);
|
||||
@@ -347,11 +355,15 @@ void sgsap_handle_location_update_reject(mme_vlr_t *vlr, ogs_pkbuf_t *pkbuf)
|
||||
ogs_kdf_nh_enb(mme_ue->kasme, mme_ue->kenb, mme_ue->nh);
|
||||
mme_ue->nhcc = 1;
|
||||
|
||||
ogs_fatal("[%s] LU reject + TAU accept(active_flag==1)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_InitialContextSetup);
|
||||
ogs_expect(r == OGS_OK);
|
||||
ogs_assert(r != OGS_ERROR);
|
||||
} else {
|
||||
ogs_fatal("[%s] LU reject + TAU accept(active_flag==0)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
@@ -360,12 +372,16 @@ void sgsap_handle_location_update_reject(mme_vlr_t *vlr, ogs_pkbuf_t *pkbuf)
|
||||
} else if (mme_ue->tracking_area_update_request_type ==
|
||||
MME_TAU_TYPE_UPLINK_NAS_TRANPORT) {
|
||||
ogs_debug(" Uplink NAS Transport");
|
||||
ogs_fatal("[%s] LU reject + TAU accept(UplinkNASTransport)",
|
||||
mme_ue->imsi_bcd);
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_downlinkNASTransport);
|
||||
ogs_expect(r == OGS_OK);
|
||||
ogs_assert(r != OGS_ERROR);
|
||||
} else if (mme_ue->tracking_area_update_request_type ==
|
||||
MME_TAU_TYPE_UNPROTECTED_INGERITY) {
|
||||
MME_TAU_TYPE_UNPROTECTED_INTEGRITY) {
|
||||
ogs_fatal("[%s] LU reject + TAU accept(Unprotected Integrity)",
|
||||
mme_ue->imsi_bcd);
|
||||
ogs_debug(" Unprotected Integrity");
|
||||
r = nas_eps_send_tau_accept(mme_ue,
|
||||
S1AP_ProcedureCode_id_InitialContextSetup);
|
||||
|
||||
@@ -1071,6 +1071,7 @@ static void test3_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true, OGS_NAS_EPS_UPDATE_TYPE_TA_UPDATING, false, false);
|
||||
ABTS_PTR_NOTNULL(tc, emmbuf);
|
||||
@@ -1171,6 +1172,7 @@ static void test3_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true, OGS_NAS_EPS_UPDATE_TYPE_TA_UPDATING, true, true);
|
||||
ABTS_PTR_NOTNULL(tc, emmbuf);
|
||||
|
||||
@@ -247,6 +247,7 @@ static void test1_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true, OGS_NAS_EPS_UPDATE_TYPE_TA_UPDATING, true, true);
|
||||
ABTS_PTR_NOTNULL(tc, emmbuf);
|
||||
@@ -293,6 +294,7 @@ static void test1_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, false,
|
||||
OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING_WITH_IMSI_ATTACH,
|
||||
@@ -536,6 +538,7 @@ static void test2_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.old_guti_type = 1;
|
||||
test_ue->tau_request_param.ms_network_feature_support = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, false, OGS_NAS_EPS_UPDATE_TYPE_PERIODIC_UPDATING,
|
||||
true, true);
|
||||
|
||||
@@ -221,6 +221,7 @@ static void test_simple_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true, OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING, true, true);
|
||||
ABTS_PTR_NOTNULL(tc, emmbuf);
|
||||
@@ -499,6 +500,7 @@ static void test_no_active_flag_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, false,
|
||||
OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING_WITH_IMSI_ATTACH,
|
||||
@@ -779,6 +781,7 @@ static void test_integrity_unprotected_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
test_ue->tau_request_param.device_properties = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true,
|
||||
OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING_WITH_IMSI_ATTACH,
|
||||
@@ -1295,6 +1298,7 @@ static void test_uplink_transport_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.tmsi_status = 1;
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true, OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING,
|
||||
true, true);
|
||||
|
||||
@@ -399,6 +399,7 @@ static void test1_func(abts_case *tc, void *data)
|
||||
test_ue->tau_request_param.tmsi_status = 1;
|
||||
test_ue->tau_request_param.mobile_station_classmark_2 = 1;
|
||||
test_ue->tau_request_param.ue_usage_setting = 1;
|
||||
ogs_error("testemm_build_tau_request");
|
||||
emmbuf = testemm_build_tau_request(
|
||||
test_ue, true, OGS_NAS_EPS_UPDATE_TYPE_COMBINED_TA_LA_UPDATING,
|
||||
true, true);
|
||||
|
||||
Reference in New Issue
Block a user