update it

This commit is contained in:
Sukchan Lee 2023-01-26 21:22:24 +09:00
parent 9e6cff7225
commit b82a898646
4 changed files with 78 additions and 9 deletions

View File

@ -882,7 +882,7 @@ void emm_state_authentication(ogs_fsm_t *s, mme_event_t *e)
OGS_FSM_TRAN(s, &emm_state_exception);
break;
case OGS_NAS_EPS_DETACH_REQUEST:
ogs_warn("Detach request");
ogs_warn("[%s] Detach request", mme_ue->imsi_bcd);
rv = emm_handle_detach_request(
mme_ue, &message->emm.detach_request_from_ue);
if (rv != OGS_OK) {
@ -891,7 +891,30 @@ void emm_state_authentication(ogs_fsm_t *s, mme_event_t *e)
break;
}
mme_send_delete_session_or_detach(mme_ue);
if (!MME_UE_HAVE_IMSI(mme_ue)) {
ogs_warn("Detach request : Unknown UE");
ogs_assert(OGS_OK ==
nas_eps_send_service_reject(mme_ue,
OGS_NAS_EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
OGS_FSM_TRAN(s, &emm_state_exception);
break;
}
if (!SECURITY_CONTEXT_IS_VALID(mme_ue)) {
ogs_warn("No Security Context : IMSI[%s]", mme_ue->imsi_bcd);
ogs_assert(OGS_OK ==
nas_eps_send_service_reject(mme_ue,
OGS_NAS_EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
OGS_FSM_TRAN(s, &emm_state_exception);
break;
}
if (MME_P_TMSI_IS_AVAILABLE(mme_ue)) {
ogs_assert(OGS_OK == sgsap_send_detach_indication(mme_ue));
} else {
mme_send_delete_session_or_detach(mme_ue);
}
OGS_FSM_TRAN(s, &emm_state_de_registered);
break;
default:
@ -1059,7 +1082,7 @@ void emm_state_security_mode(ogs_fsm_t *s, mme_event_t *e)
OGS_FSM_TRAN(s, &emm_state_exception);
break;
case OGS_NAS_EPS_DETACH_REQUEST:
ogs_warn("Detach request");
ogs_warn("[%s] Detach request", mme_ue->imsi_bcd);
rv = emm_handle_detach_request(
mme_ue, &message->emm.detach_request_from_ue);
if (rv != OGS_OK) {
@ -1068,7 +1091,30 @@ void emm_state_security_mode(ogs_fsm_t *s, mme_event_t *e)
break;
}
mme_send_delete_session_or_detach(mme_ue);
if (!MME_UE_HAVE_IMSI(mme_ue)) {
ogs_warn("Detach request : Unknown UE");
ogs_assert(OGS_OK ==
nas_eps_send_service_reject(mme_ue,
OGS_NAS_EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
OGS_FSM_TRAN(s, &emm_state_exception);
break;
}
if (!SECURITY_CONTEXT_IS_VALID(mme_ue)) {
ogs_warn("No Security Context : IMSI[%s]", mme_ue->imsi_bcd);
ogs_assert(OGS_OK ==
nas_eps_send_service_reject(mme_ue,
OGS_NAS_EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
OGS_FSM_TRAN(s, &emm_state_exception);
break;
}
if (MME_P_TMSI_IS_AVAILABLE(mme_ue)) {
ogs_assert(OGS_OK == sgsap_send_detach_indication(mme_ue));
} else {
mme_send_delete_session_or_detach(mme_ue);
}
OGS_FSM_TRAN(s, &emm_state_de_registered);
break;
default:
@ -1257,7 +1303,7 @@ void emm_state_initial_context_setup(ogs_fsm_t *s, mme_event_t *e)
OGS_FSM_TRAN(s, &emm_state_exception);
break;
case OGS_NAS_EPS_DETACH_REQUEST:
ogs_warn("Detach request");
ogs_warn("[%s] Detach request", mme_ue->imsi_bcd);
rv = emm_handle_detach_request(
mme_ue, &message->emm.detach_request_from_ue);
if (rv != OGS_OK) {
@ -1266,7 +1312,30 @@ void emm_state_initial_context_setup(ogs_fsm_t *s, mme_event_t *e)
break;
}
mme_send_delete_session_or_detach(mme_ue);
if (!MME_UE_HAVE_IMSI(mme_ue)) {
ogs_warn("Detach request : Unknown UE");
ogs_assert(OGS_OK ==
nas_eps_send_service_reject(mme_ue,
OGS_NAS_EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
OGS_FSM_TRAN(s, &emm_state_exception);
break;
}
if (!SECURITY_CONTEXT_IS_VALID(mme_ue)) {
ogs_warn("No Security Context : IMSI[%s]", mme_ue->imsi_bcd);
ogs_assert(OGS_OK ==
nas_eps_send_service_reject(mme_ue,
OGS_NAS_EMM_CAUSE_UE_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK));
OGS_FSM_TRAN(s, &emm_state_exception);
break;
}
if (MME_P_TMSI_IS_AVAILABLE(mme_ue)) {
ogs_assert(OGS_OK == sgsap_send_detach_indication(mme_ue));
} else {
mme_send_delete_session_or_detach(mme_ue);
}
OGS_FSM_TRAN(s, &emm_state_de_registered);
break;
case OGS_NAS_EPS_SECURITY_MODE_COMPLETE:

View File

@ -539,7 +539,7 @@ struct mme_ue_s {
ogs_pkbuf_t *pkbuf;
ogs_timer_t *timer;
uint32_t retry_count;;
} t3413, t3422, t3450, t3460, t3470, t_mobile_reachable,
} t3413, t3422, t3450, t3460, t3470, t_mobile_reachable,
t_implicit_detach;
#define CLEAR_SERVICE_INDICATOR(__mME) \

View File

@ -307,7 +307,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
ogs_assert(r != OGS_ERROR);
}
enb_ue_associate_mme_ue(enb_ue, mme_ue);
ogs_debug("Mobile Reachable timer stopped for IMSI[%s]",
ogs_debug("Mobile Reachable timer stopped for IMSI[%s]",
mme_ue->imsi_bcd);
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
}

View File

@ -330,7 +330,7 @@ void s1ap_handle_initial_ue_message(mme_enb_t *enb, ogs_s1ap_message_t *message)
ogs_assert(r != OGS_ERROR);
}
enb_ue_associate_mme_ue(enb_ue, mme_ue);
ogs_debug("Mobile Reachable timer stopped for IMSI[%s]",
ogs_debug("Mobile Reachable timer stopped for IMSI[%s]",
mme_ue->imsi_bcd);
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
}