From 161a67eb20175445b2f7512d4ec6904f4c62e036 Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Fri, 11 Aug 2017 20:25:52 +0900 Subject: [PATCH] update it --- src/mme/esm_build.c | 8 ++++++-- src/mme/esm_handler.c | 4 ++-- src/mme/mme_context.h | 9 ++++----- src/mme/mme_s11_build.c | 2 +- src/mme/mme_s11_handler.c | 2 +- src/mme/s1ap_build.c | 13 +++++++------ 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/mme/esm_build.c b/src/mme/esm_build.c index 12e7a4a3d6..a0f447af3b 100644 --- a/src/mme/esm_build.c +++ b/src/mme/esm_build.c @@ -71,12 +71,15 @@ status_t esm_build_activate_default_bearer_context( ->protocol_configuration_options; mme_ue_t *mme_ue = NULL; + mme_sess_t *sess = NULL; pdn_t *pdn = NULL; d_assert(bearer, return CORE_ERROR, "Null param"); - mme_ue = bearer->mme_ue; + sess = bearer->sess; + d_assert(sess, return CORE_ERROR, "Null param"); + mme_ue = sess->mme_ue; d_assert(mme_ue, return CORE_ERROR, "Null param"); - pdn = bearer->pdn; + pdn = sess->pdn; d_assert(pdn, return CORE_ERROR, "Null param"); memset(&message, 0, sizeof(message)); @@ -86,6 +89,7 @@ status_t esm_build_activate_default_bearer_context( message.esm.h.message_type = NAS_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST; + /* FIXNOW */ eps_qos->length = 5; eps_qos->qci = pdn->qos.qci; eps_qos->ul_mbr = 0xff; diff --git a/src/mme/esm_handler.c b/src/mme/esm_handler.c index e113c74f4c..d9a9276b38 100644 --- a/src/mme/esm_handler.c +++ b/src/mme/esm_handler.c @@ -65,9 +65,9 @@ void esm_handle_information_response(mme_bearer_t *bearer, if (esm_information_response->presencemask & NAS_ESM_INFORMATION_RESPONSE_ACCESS_POINT_NAME_PRESENT) { - bearer->pdn = mme_pdn_find_by_apn(mme_ue, + sess->pdn = mme_pdn_find_by_apn(mme_ue, esm_information_response->access_point_name.apn); - d_assert(bearer->pdn, return, "No PDN Context[APN:%s])", + d_assert(sess->pdn, return, "No PDN Context[APN:%s])", esm_information_response->access_point_name.apn); } diff --git a/src/mme/mme_context.h b/src/mme/mme_context.h index a444d7db20..03547bd195 100644 --- a/src/mme/mme_context.h +++ b/src/mme/mme_context.h @@ -262,16 +262,16 @@ typedef struct _mme_sess_t { c_uint32_t sgw_s11_teid; c_uint32_t sgw_s11_addr; -#define MME_SESSION_HAVE_APN(sess) \ - ((sess) && \ - (mme_default_bearer_in_sess(sess)) && \ - (mme_default_bearer_in_sess(sess)->pdn)) /* mme_bearer_first(sess) : Default Bearer Context */ list_t bearer_list; /* Related Context */ mme_sgw_t *sgw; mme_ue_t *mme_ue; + +#define MME_SESSION_HAVE_APN(sess) \ + ((sess) && ((sess)->pdn)) + pdn_t *pdn; } mme_sess_t; typedef struct _mme_bearer_t { @@ -296,7 +296,6 @@ typedef struct _mme_bearer_t { /* Related Context */ mme_ue_t *mme_ue; mme_sess_t *sess; - pdn_t *pdn; } mme_bearer_t; CORE_DECLARE(status_t) mme_context_init(void); diff --git a/src/mme/mme_s11_build.c b/src/mme/mme_s11_build.c index c701e427f5..4a88331560 100644 --- a/src/mme/mme_s11_build.c +++ b/src/mme/mme_s11_build.c @@ -31,7 +31,7 @@ status_t mme_s11_build_create_session_request(pkbuf_t **pkbuf, mme_sess_t *sess) d_assert(sgw, return CORE_ERROR, "Null param"); bearer = mme_default_bearer_in_sess(sess); d_assert(bearer, return CORE_ERROR, "Null param"); - pdn = bearer->pdn; + pdn = sess->pdn; d_assert(pdn, return CORE_ERROR, "Null param"); mme_ue = sess->mme_ue; d_assert(mme_ue, return CORE_ERROR, "Null param"); diff --git a/src/mme/mme_s11_handler.c b/src/mme/mme_s11_handler.c index ec5b7ea682..612ebbd23b 100644 --- a/src/mme/mme_s11_handler.c +++ b/src/mme/mme_s11_handler.c @@ -68,7 +68,7 @@ void mme_s11_handle_create_session_response( bearer = mme_bearer_find_by_sess_ebi( sess, rsp->bearer_contexts_created.eps_bearer_id.u8); d_assert(bearer, return, "No ESM Context"); - pdn = bearer->pdn; + pdn = sess->pdn; d_assert(pdn, return, "No PDN Context"); /* Receive Control Plane(UL) : SGW-S11 */ diff --git a/src/mme/s1ap_build.c b/src/mme/s1ap_build.c index eecd229e80..ae72ec3b8d 100644 --- a/src/mme/s1ap_build.c +++ b/src/mme/s1ap_build.c @@ -160,14 +160,17 @@ status_t s1ap_build_initial_context_setup_request( S1ap_NAS_PDU_t *nasPdu = NULL; mme_ue_t *mme_ue = NULL; enb_ue_t *enb_ue = NULL; + mme_sess_t *sess = NULL; pdn_t *pdn = NULL; d_assert(bearer, return CORE_ERROR, "Null param"); - mme_ue = bearer->mme_ue; + sess = bearer->sess; + d_assert(sess, return CORE_ERROR, "Null param"); + mme_ue = sess->mme_ue; d_assert(mme_ue, return CORE_ERROR, "Null param"); enb_ue = mme_ue->enb_ue; d_assert(enb_ue, return CORE_ERROR, "Null param"); - pdn = bearer->pdn; + pdn = sess->pdn; d_assert(pdn, return CORE_ERROR, "Null param"); memset(&message, 0, sizeof(s1ap_message_t)); @@ -190,11 +193,9 @@ status_t s1ap_build_initial_context_setup_request( e_rab->e_RABlevelQoSParameters.allocationRetentionPriority. priorityLevel = pdn->qos.priority_level; e_rab->e_RABlevelQoSParameters.allocationRetentionPriority. - pre_emptionCapability = - S1ap_Pre_emptionCapability_shall_not_trigger_pre_emption; + pre_emptionCapability = !(pdn->qos.pre_emption_capability); e_rab->e_RABlevelQoSParameters.allocationRetentionPriority. - pre_emptionVulnerability = - S1ap_Pre_emptionVulnerability_not_pre_emptable; + pre_emptionVulnerability = !(pdn->qos.pre_emption_vulnerability); gbrQosInformation = core_calloc(1, sizeof(struct S1ap_GBR_QosInformation)); asn_uint642INTEGER(&gbrQosInformation->e_RAB_MaximumBitrateDL, 0);