forked from acouzens/open5gs
update it
This commit is contained in:
parent
9e6cff7225
commit
b82a898646
|
@ -882,7 +882,7 @@ void emm_state_authentication(ogs_fsm_t *s, mme_event_t *e)
|
||||||
OGS_FSM_TRAN(s, &emm_state_exception);
|
OGS_FSM_TRAN(s, &emm_state_exception);
|
||||||
break;
|
break;
|
||||||
case OGS_NAS_EPS_DETACH_REQUEST:
|
case OGS_NAS_EPS_DETACH_REQUEST:
|
||||||
ogs_warn("Detach request");
|
ogs_warn("[%s] Detach request", mme_ue->imsi_bcd);
|
||||||
rv = emm_handle_detach_request(
|
rv = emm_handle_detach_request(
|
||||||
mme_ue, &message->emm.detach_request_from_ue);
|
mme_ue, &message->emm.detach_request_from_ue);
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
|
@ -891,7 +891,30 @@ void emm_state_authentication(ogs_fsm_t *s, mme_event_t *e)
|
||||||
break;
|
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);
|
OGS_FSM_TRAN(s, &emm_state_de_registered);
|
||||||
break;
|
break;
|
||||||
default:
|
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);
|
OGS_FSM_TRAN(s, &emm_state_exception);
|
||||||
break;
|
break;
|
||||||
case OGS_NAS_EPS_DETACH_REQUEST:
|
case OGS_NAS_EPS_DETACH_REQUEST:
|
||||||
ogs_warn("Detach request");
|
ogs_warn("[%s] Detach request", mme_ue->imsi_bcd);
|
||||||
rv = emm_handle_detach_request(
|
rv = emm_handle_detach_request(
|
||||||
mme_ue, &message->emm.detach_request_from_ue);
|
mme_ue, &message->emm.detach_request_from_ue);
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
|
@ -1068,7 +1091,30 @@ void emm_state_security_mode(ogs_fsm_t *s, mme_event_t *e)
|
||||||
break;
|
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);
|
OGS_FSM_TRAN(s, &emm_state_de_registered);
|
||||||
break;
|
break;
|
||||||
default:
|
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);
|
OGS_FSM_TRAN(s, &emm_state_exception);
|
||||||
break;
|
break;
|
||||||
case OGS_NAS_EPS_DETACH_REQUEST:
|
case OGS_NAS_EPS_DETACH_REQUEST:
|
||||||
ogs_warn("Detach request");
|
ogs_warn("[%s] Detach request", mme_ue->imsi_bcd);
|
||||||
rv = emm_handle_detach_request(
|
rv = emm_handle_detach_request(
|
||||||
mme_ue, &message->emm.detach_request_from_ue);
|
mme_ue, &message->emm.detach_request_from_ue);
|
||||||
if (rv != OGS_OK) {
|
if (rv != OGS_OK) {
|
||||||
|
@ -1266,7 +1312,30 @@ void emm_state_initial_context_setup(ogs_fsm_t *s, mme_event_t *e)
|
||||||
break;
|
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);
|
OGS_FSM_TRAN(s, &emm_state_de_registered);
|
||||||
break;
|
break;
|
||||||
case OGS_NAS_EPS_SECURITY_MODE_COMPLETE:
|
case OGS_NAS_EPS_SECURITY_MODE_COMPLETE:
|
||||||
|
|
|
@ -539,7 +539,7 @@ struct mme_ue_s {
|
||||||
ogs_pkbuf_t *pkbuf;
|
ogs_pkbuf_t *pkbuf;
|
||||||
ogs_timer_t *timer;
|
ogs_timer_t *timer;
|
||||||
uint32_t retry_count;;
|
uint32_t retry_count;;
|
||||||
} t3413, t3422, t3450, t3460, t3470, t_mobile_reachable,
|
} t3413, t3422, t3450, t3460, t3470, t_mobile_reachable,
|
||||||
t_implicit_detach;
|
t_implicit_detach;
|
||||||
|
|
||||||
#define CLEAR_SERVICE_INDICATOR(__mME) \
|
#define CLEAR_SERVICE_INDICATOR(__mME) \
|
||||||
|
|
|
@ -307,7 +307,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
||||||
ogs_assert(r != OGS_ERROR);
|
ogs_assert(r != OGS_ERROR);
|
||||||
}
|
}
|
||||||
enb_ue_associate_mme_ue(enb_ue, mme_ue);
|
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);
|
mme_ue->imsi_bcd);
|
||||||
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
|
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -330,7 +330,7 @@ void s1ap_handle_initial_ue_message(mme_enb_t *enb, ogs_s1ap_message_t *message)
|
||||||
ogs_assert(r != OGS_ERROR);
|
ogs_assert(r != OGS_ERROR);
|
||||||
}
|
}
|
||||||
enb_ue_associate_mme_ue(enb_ue, mme_ue);
|
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);
|
mme_ue->imsi_bcd);
|
||||||
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
|
CLEAR_MME_UE_TIMER(mme_ue->t_mobile_reachable);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue