update it
This commit is contained in:
parent
480ec5af15
commit
8bdfef6a35
|
@ -42,6 +42,7 @@ void emm_state_operational(fsm_t *s, event_t *e)
|
|||
break;
|
||||
}
|
||||
case EVT_LO_MME_EMM_AUTH_REQ:
|
||||
case EVT_LO_MME_EMM_LOCATION_UPDATE:
|
||||
{
|
||||
index_t index = event_get_param1(e);
|
||||
mme_ue_t *ue = NULL;
|
||||
|
@ -50,13 +51,35 @@ void emm_state_operational(fsm_t *s, event_t *e)
|
|||
ue = mme_ue_find(index);
|
||||
d_assert(ue, return, "Null param");
|
||||
|
||||
emm_handle_authentication_request(ue);
|
||||
switch(event_get(e))
|
||||
{
|
||||
case EVT_LO_MME_EMM_AUTH_REQ:
|
||||
{
|
||||
emm_handle_authentication_request(ue);
|
||||
d_info("[NAS] Authentication request : UE[%s] <-- EMM",
|
||||
ue->imsi_bcd);
|
||||
break;
|
||||
}
|
||||
case EVT_LO_MME_EMM_LOCATION_UPDATE:
|
||||
{
|
||||
mme_esm_t *esm = mme_esm_first(ue);
|
||||
|
||||
d_info("[NAS] Authentication request : UE[%s] <-- EMM",
|
||||
ue->imsi_bcd);
|
||||
d_info("[NAS] Location Update : EMM[%s] <-- HSS",
|
||||
ue->imsi_bcd);
|
||||
while(esm)
|
||||
{
|
||||
event_t e;
|
||||
event_set(&e, EVT_LO_MME_ESM_INFO_REQ);
|
||||
event_set_param1(&e, (c_uintptr_t)esm->index);
|
||||
mme_event_send(&e);
|
||||
|
||||
esm = mme_esm_next(esm);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case EVT_MSG_MME_EMM:
|
||||
{
|
||||
index_t index = event_get_param1(e);
|
||||
|
|
|
@ -40,6 +40,30 @@ void esm_state_operational(fsm_t *s, event_t *e)
|
|||
{
|
||||
break;
|
||||
}
|
||||
case EVT_LO_MME_ESM_INFO_REQ:
|
||||
{
|
||||
index_t index = event_get_param1(e);
|
||||
mme_esm_t *esm = NULL;
|
||||
mme_ue_t *ue = NULL;
|
||||
|
||||
d_assert(index, return, "Null param");
|
||||
esm = mme_esm_find(index);
|
||||
d_assert(esm, return, "Null param");
|
||||
ue = esm->ue;
|
||||
d_assert(ue, return, "Null param");
|
||||
|
||||
switch(event_get(e))
|
||||
{
|
||||
case EVT_LO_MME_ESM_INFO_REQ:
|
||||
{
|
||||
d_info("[NAS] ESM information request : "
|
||||
"UE[%s] <--- ESM[%d]", ue->imsi_bcd, esm->pti);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case EVT_MSG_MME_ESM:
|
||||
{
|
||||
index_t index = event_get_param1(e);
|
||||
|
@ -61,6 +85,8 @@ void esm_state_operational(fsm_t *s, event_t *e)
|
|||
{
|
||||
esm_handle_pdn_connectivity_request(
|
||||
esm, &message->esm.pdn_connectivity_request);
|
||||
d_info("[NAS] PDN connectivity request : "
|
||||
"UE[%s] --> ESM[%d]", ue->imsi_bcd, esm->pti);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
static char EVT_NAME_LO_MME_S1AP_ACCEPT[] = "LO_MME_S1AP_ACCEPT";
|
||||
static char EVT_NAME_LO_MME_S1AP_CONNREFUSED[] = "LO_MME_S1AP_CONNREFUSED";
|
||||
static char EVT_NAME_LO_MME_EMM_AUTH_REQ[] = "LO_MME_EMM_AUTH_REQ";
|
||||
static char EVT_NAME_LO_MME_EMM_LOCATION_UPDATE[] = "LO_MME_EMM_LOCATION_UPDATE";
|
||||
static char EVT_NAME_LO_MME_ESM_INFO_REQ[] = "LO_MME_ESM_INFO_REQ";
|
||||
|
||||
static char EVT_NAME_TM_MME_S11_T3[] = "TM_MME_S11_T3";
|
||||
|
||||
|
@ -36,6 +38,10 @@ char* mme_event_get_name(event_t *e)
|
|||
return EVT_NAME_LO_MME_S1AP_CONNREFUSED;
|
||||
case EVT_LO_MME_EMM_AUTH_REQ:
|
||||
return EVT_NAME_LO_MME_EMM_AUTH_REQ;
|
||||
case EVT_LO_MME_EMM_LOCATION_UPDATE:
|
||||
return EVT_NAME_LO_MME_EMM_LOCATION_UPDATE;
|
||||
case EVT_LO_MME_ESM_INFO_REQ:
|
||||
return EVT_NAME_LO_MME_ESM_INFO_REQ;
|
||||
|
||||
case EVT_TM_MME_S11_T3:
|
||||
return EVT_NAME_TM_MME_S11_T3;
|
||||
|
|
|
@ -20,6 +20,8 @@ typedef enum {
|
|||
EVT_LO_MME_S1AP_ACCEPT,
|
||||
EVT_LO_MME_S1AP_CONNREFUSED,
|
||||
EVT_LO_MME_EMM_AUTH_REQ,
|
||||
EVT_LO_MME_EMM_LOCATION_UPDATE,
|
||||
EVT_LO_MME_ESM_INFO_REQ,
|
||||
|
||||
EVT_TM_MME_S11_T3,
|
||||
|
||||
|
|
|
@ -3,11 +3,9 @@
|
|||
#include "core_debug.h"
|
||||
#include "core_pool.h"
|
||||
|
||||
#include "nas_message.h"
|
||||
#include "s6a_lib.h"
|
||||
|
||||
#include "mme_event.h"
|
||||
|
||||
#include "mme_s6a_handler.h"
|
||||
|
||||
#define MAX_NUM_SESSION_STATE 32
|
||||
|
@ -34,8 +32,8 @@ static void mme_s6a_aia_cb(void *data, struct msg **msg)
|
|||
int error = 0;
|
||||
int new;
|
||||
|
||||
mme_ue_t *ue = NULL;
|
||||
event_t e;
|
||||
mme_ue_t *ue = NULL;
|
||||
|
||||
CHECK_SYS_DO(clock_gettime(CLOCK_REALTIME, &ts), return);
|
||||
|
||||
|
@ -257,18 +255,11 @@ static void mme_s6a_ula_cb(void *data, struct msg **msg)
|
|||
int error = 0;
|
||||
int new;
|
||||
|
||||
event_t e;
|
||||
mme_ue_t *ue = NULL;
|
||||
pdn_t *pdn = NULL;
|
||||
c_uint8_t pdn_added = 0;
|
||||
|
||||
nas_message_t message;
|
||||
#if 0
|
||||
pkbuf_t *sendbuf = NULL;
|
||||
event_t e;
|
||||
nas_authentication_request_t *authentication_request =
|
||||
&message.emm.authentication_request;
|
||||
#endif
|
||||
|
||||
CHECK_SYS_DO(clock_gettime(CLOCK_REALTIME, &ts), return);
|
||||
|
||||
/* Search the session, retrieve its data */
|
||||
|
@ -281,7 +272,7 @@ static void mme_s6a_ula_cb(void *data, struct msg **msg)
|
|||
ue = mi->ue;
|
||||
d_assert(ue, error++; goto out,);
|
||||
|
||||
d_info("[S6A] Authentication-Information-Response : UE[%s] <-- HSS",
|
||||
d_info("[S6A] Update-Location-Response : UE[%s] <-- HSS",
|
||||
ue->imsi_bcd);
|
||||
|
||||
/* Value of Result Code */
|
||||
|
@ -429,17 +420,9 @@ static void mme_s6a_ula_cb(void *data, struct msg **msg)
|
|||
d_assert(fd_msg_avp_hdr(avp, &hdr) == 0 && hdr, error++; goto out,);
|
||||
ue->subscribed_rau_tau_timer = hdr->avp_value->i32;
|
||||
|
||||
memset(&message, 0, sizeof(message));
|
||||
message.h.security_header_type =
|
||||
NAS_SECURITY_HEADER_INTEGRITY_PROTECTED_AND_CIPHERED;
|
||||
message.h.protocol_discriminator = NAS_PROTOCOL_DISCRIMINATOR_EMM;
|
||||
|
||||
#if 0
|
||||
message.esm.h.protocol_discriminator = NAS_PROTOCOL_DISCRIMINATOR_ESM;
|
||||
message.esm.h.procedure_transaction_identity = 33;
|
||||
message.esm.h.message_type = NAS_ESM_INFORMATION_REQUEST;
|
||||
#endif
|
||||
|
||||
event_set(&e, EVT_LO_MME_EMM_LOCATION_UPDATE);
|
||||
event_set_param1(&e, (c_uintptr_t)ue->index);
|
||||
mme_event_send(&e);
|
||||
out:
|
||||
/* Free the message */
|
||||
d_assert(pthread_mutex_lock(&s6a_config->stats_lock) == 0,,);
|
||||
|
|
|
@ -145,6 +145,7 @@ void mme_state_operational(fsm_t *s, event_t *e)
|
|||
break;
|
||||
}
|
||||
case EVT_LO_MME_EMM_AUTH_REQ:
|
||||
case EVT_LO_MME_EMM_LOCATION_UPDATE:
|
||||
{
|
||||
index_t index = event_get_param1(e);
|
||||
mme_ue_t *ue = NULL;
|
||||
|
@ -180,6 +181,19 @@ void mme_state_operational(fsm_t *s, event_t *e)
|
|||
pkbuf_free(pkbuf);
|
||||
break;
|
||||
}
|
||||
case EVT_LO_MME_ESM_INFO_REQ:
|
||||
{
|
||||
index_t index = event_get_param1(e);
|
||||
mme_esm_t *esm = NULL;
|
||||
|
||||
d_assert(index, break, "Null param");
|
||||
esm = mme_esm_find(index);
|
||||
d_assert(esm, break, "No ESM context");
|
||||
d_assert(FSM_STATE(&esm->sm), break, "No ESM State Machine");
|
||||
|
||||
fsm_dispatch(&esm->sm, (fsm_event_t*)e);
|
||||
break;
|
||||
}
|
||||
case EVT_MSG_MME_ESM:
|
||||
{
|
||||
nas_message_t message;
|
||||
|
|
Loading…
Reference in New Issue