From bea13d81c07d91bcaa24b36bbe801a6f0eaf72d5 Mon Sep 17 00:00:00 2001 From: James Park Date: Fri, 21 Jul 2017 10:17:51 -0700 Subject: [PATCH] Save imsi to mme_ue context --- src/mme/emm_handler.c | 4 ++++ src/mme/mme_context.c | 11 +++++++++++ src/mme/mme_context.h | 2 ++ 3 files changed, 17 insertions(+) diff --git a/src/mme/emm_handler.c b/src/mme/emm_handler.c index 30545ca26f..2ea436de25 100644 --- a/src/mme/emm_handler.c +++ b/src/mme/emm_handler.c @@ -636,6 +636,10 @@ mme_ue_t *emm_find_ue_by_message(enb_ue_t *enb_ue, nas_message_t *message) if (!mme_ue) { mme_ue = mme_ue_add(enb_ue); + strncpy(mme_ue->imsi_bcd, imsi_bcd, + sizeof(mme_ue->imsi_bcd)); + + mme_ue_set_imsi(mme_ue, imsi, imsi_len); } break; diff --git a/src/mme/mme_context.c b/src/mme/mme_context.c index 77cc3a107a..254af9e338 100644 --- a/src/mme/mme_context.c +++ b/src/mme/mme_context.c @@ -516,6 +516,17 @@ mme_ue_t *mme_ue_this(hash_index_t *hi) return hash_this_val(hi); } +status_t mme_ue_set_imsi(mme_ue_t *mme_ue, c_uint8_t *imsi, int imsi_len) +{ + d_assert(mme_ue && imsi, return CORE_ERROR, "Invalid Param"); + + memcpy(mme_ue->imsi, imsi, imsi_len); + mme_ue->imsi_len = imsi_len; + hash_set(self.imsi_ue_hash, imsi, imsi_len, mme_ue); + + return CORE_OK; +} + #if 0 unsigned int mme_ue_count() { diff --git a/src/mme/mme_context.h b/src/mme/mme_context.h index 4d2b585b54..103a0e8ad8 100644 --- a/src/mme/mme_context.h +++ b/src/mme/mme_context.h @@ -280,6 +280,8 @@ CORE_DECLARE(mme_ue_t*) mme_ue_first_in_enb(mme_enb_t *enb); CORE_DECLARE(mme_ue_t*) mme_ue_next_in_enb(mme_ue_t *mme_ue); CORE_DECLARE(mme_ue_t*) mme_ue_find_by_imsi(c_uint8_t *imsi, int imsi_len); CORE_DECLARE(mme_ue_t*) mme_ue_find_by_guti(guti_t *guti); +CORE_DECLARE(status_t) mme_ue_set_imsi(mme_ue_t *mme_ue, c_uint8_t *imsi, + int imsi_len); CORE_DECLARE(mme_bearer_t*) mme_sess_add(mme_ue_t *mme_ue, c_uint8_t pti); CORE_DECLARE(status_t ) mme_sess_remove(mme_sess_t *sess);