add servce_request handler in EMM module

This commit is contained in:
Sukchan Lee 2017-07-26 00:22:20 +09:00
parent d8646e10a0
commit 3f22f4f666
6 changed files with 22 additions and 11 deletions

View File

@ -633,6 +633,12 @@ void emm_handle_delete_session_response(mme_bearer_t *bearer)
}
}
void emm_handle_service_request(
mme_ue_t *mme_ue, nas_service_request_t *service_request)
{
/* TODO */
}
mme_ue_t *emm_find_ue_by_message(enb_ue_t *enb_ue, nas_message_t *message)
{
mme_ue_t *mme_ue = NULL;

View File

@ -24,6 +24,9 @@ CORE_DECLARE(void) emm_handle_identity_response(
CORE_DECLARE(void) emm_handle_detach_request(
mme_ue_t *mme_ue, nas_detach_request_from_ue_t *detach_request);
CORE_DECLARE(void) emm_handle_delete_session_response(mme_bearer_t *bearer);
CORE_DECLARE(void) emm_handle_service_request(
mme_ue_t *mme_ue, nas_service_request_t *service_request);
CORE_DECLARE(mme_ue_t*) emm_find_ue_by_message(
enb_ue_t *enb_ue, nas_message_t *message);

View File

@ -126,6 +126,14 @@ void emm_state_operational(fsm_t *s, event_t *e)
message = (nas_message_t *)event_get_param3(e);
d_assert(message, break, "Null param");
if (message->emm.h.security_header_type
== NAS_SECURITY_HEADER_FOR_SERVICE_REQUEST_MESSAGE)
{
emm_handle_service_request(
mme_ue, &message->emm.service_request);
break;
}
switch(message->emm.h.message_type)
{
case NAS_ATTACH_REQUEST:

View File

@ -109,8 +109,7 @@ status_t nas_security_encode(
return CORE_OK;
}
status_t nas_security_decode(mme_ue_t *mme_ue, pkbuf_t *pkbuf,
int *service_request_message, int *mac_failed)
status_t nas_security_decode(mme_ue_t *mme_ue, pkbuf_t *pkbuf, int *mac_failed)
{
c_int32_t hsize = 0;
@ -140,8 +139,6 @@ status_t nas_security_decode(mme_ue_t *mme_ue, pkbuf_t *pkbuf,
c_uint8_t sequence_number_high_3bit;
c_uint8_t mac[NAS_SECURITY_MAC_SIZE];
*service_request_message = 1;
if (mme_ue->selected_int_algorithm == 0)
{
d_warn("integrity algorithm is not defined");

View File

@ -22,8 +22,7 @@ extern "C" {
CORE_DECLARE(status_t) nas_security_encode(
pkbuf_t **pkbuf, mme_ue_t *mme_ue, nas_message_t *message);
CORE_DECLARE(status_t) nas_security_decode(
mme_ue_t *mme_ue, pkbuf_t *pkbuf,
int *service_request_message, int *mac_failed);
mme_ue_t *mme_ue, pkbuf_t *pkbuf, int *mac_failed);
CORE_DECLARE(void) nas_mac_calculate(c_uint8_t algorithm_identity,
c_uint8_t *knas_int, c_uint32_t count, c_uint8_t bearer,

View File

@ -19,7 +19,6 @@ static void event_s1ap_to_nas(enb_ue_t *enb_ue, S1ap_NAS_PDU_t *nasPdu)
nas_esm_header_t *h = NULL;
pkbuf_t *nasbuf = NULL;
event_t e;
int service_request_message = 0;
int mac_failed = 0;
d_assert(enb_ue, return, "Null param");
@ -33,10 +32,9 @@ static void event_s1ap_to_nas(enb_ue_t *enb_ue, S1ap_NAS_PDU_t *nasPdu)
if (enb_ue->mme_ue)
{
d_assert(nas_security_decode(enb_ue->mme_ue, nasbuf,
&service_request_message, &mac_failed) == CORE_OK,
pkbuf_free(nasbuf);return,
"nas_security_decode failed");
d_assert(nas_security_decode(
enb_ue->mme_ue, nasbuf, &mac_failed) == CORE_OK,
pkbuf_free(nasbuf);return, "nas_security_decode failed");
}
else
{