Commit aff1b842 authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Code cleanup for UE Context

parent 375bb6d9
...@@ -407,9 +407,9 @@ void amf_app::handle_itti_message( ...@@ -407,9 +407,9 @@ void amf_app::handle_itti_message(
if (itti_msg.rrc_cause != -1) if (itti_msg.rrc_cause != -1)
uc->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) itti_msg.rrc_cause; uc->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) itti_msg.rrc_cause;
if (itti_msg.ueCtxReq == -1) if (itti_msg.ueCtxReq == -1)
uc->isUeContextRequest = false; uc->is_ue_context_request = false;
else else
uc->isUeContextRequest = true; uc->is_ue_context_request = true;
uc->ran_ue_ngap_id = itti_msg.ran_ue_ngap_id; uc->ran_ue_ngap_id = itti_msg.ran_ue_ngap_id;
uc->amf_ue_ngap_id = amf_ue_ngap_id; uc->amf_ue_ngap_id = amf_ue_ngap_id;
...@@ -584,7 +584,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) { ...@@ -584,7 +584,7 @@ void amf_app::handle_itti_message(itti_sbi_n1_message_notification& itti_msg) {
uc->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) rrc_cause; uc->rrc_estb_cause = (e_Ngap_RRCEstablishmentCause) rrc_cause;
} }
// ueContextRequest // ueContextRequest
uc->isUeContextRequest = registration_context.isUeContextRequest(); uc->is_ue_context_request = registration_context.isUeContextRequest();
// Step 4. Create UE NGAP Context if necessary // Step 4. Create UE NGAP Context if necessary
// Create/Update UE NGAP Context // Create/Update UE NGAP Context
......
...@@ -297,7 +297,7 @@ void amf_n1::handle_itti_message(itti_downlink_nas_transfer& itti_msg) { ...@@ -297,7 +297,7 @@ void amf_n1::handle_itti_message(itti_downlink_nas_transfer& itti_msg) {
return; return;
} }
if (uc->isUeContextRequest) { if (uc->is_ue_context_request) {
// PDU SESSION RESOURCE SETUP_REQUEST // PDU SESSION RESOURCE SETUP_REQUEST
std::shared_ptr<itti_pdu_session_resource_setup_request> psrsr = std::shared_ptr<itti_pdu_session_resource_setup_request> psrsr =
std::make_shared<itti_pdu_session_resource_setup_request>( std::make_shared<itti_pdu_session_resource_setup_request>(
...@@ -2662,7 +2662,7 @@ void amf_n1::security_mode_complete_handle( ...@@ -2662,7 +2662,7 @@ void amf_n1::security_mode_complete_handle(
secu, false, INTEGRITY_PROTECTED_AND_CIPHERED, NAS_MESSAGE_DOWNLINK, secu, false, INTEGRITY_PROTECTED_AND_CIPHERED, NAS_MESSAGE_DOWNLINK,
buffer, encoded_size, protected_nas); buffer, encoded_size, protected_nas);
if (!uc->isUeContextRequest) { if (!uc->is_ue_context_request) {
Logger::amf_n1().debug( Logger::amf_n1().debug(
"UE Context is not requested, UE with " "UE Context is not requested, UE with "
"ran_ue_ngap_id " GNB_UE_NGAP_ID_FMT "ran_ue_ngap_id " GNB_UE_NGAP_ID_FMT
......
...@@ -21,48 +21,52 @@ ...@@ -21,48 +21,52 @@
#include "ue_context.hpp" #include "ue_context.hpp"
#include "amf.hpp"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
ue_context::ue_context() { ue_context::ue_context() {
ran_ue_ngap_id = 0; ran_ue_ngap_id = 0;
amf_ue_ngap_id = -1; amf_ue_ngap_id = INVALID_AMF_UE_NGAP_ID;
gnb_id = 0; gnb_id = 0;
supi = {};
tmsi = 0;
rrc_estb_cause = {}; rrc_estb_cause = {};
isUeContextRequest = false; is_ue_context_request = false;
cgi = {}; cgi = {};
tai = {}; tai = {};
pdu_sessions = {}; pdu_sessions = {};
tmsi = 0;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool ue_context::find_pdu_session_context( bool ue_context::find_pdu_session_context(
const std::uint8_t& session_id, std::uint8_t session_id,
std::shared_ptr<pdu_session_context>& context) const { std::shared_ptr<pdu_session_context>& context) const {
std::shared_lock lock(m_pdu_session); std::shared_lock lock(m_pdu_session);
if (pdu_sessions.count(session_id) > 0) { if (pdu_sessions.count(session_id) > 0) {
if (pdu_sessions.at(session_id) != nullptr) {
context = pdu_sessions.at(session_id); context = pdu_sessions.at(session_id);
return true; return true;
} else {
return false;
} }
}
return false;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void ue_context::add_pdu_session_context( void ue_context::add_pdu_session_context(
const std::uint8_t& session_id, std::uint8_t session_id,
const std::shared_ptr<pdu_session_context>& context) { const std::shared_ptr<pdu_session_context>& context) {
std::unique_lock lock(m_pdu_session); std::unique_lock lock(m_pdu_session);
pdu_sessions[session_id] = context; pdu_sessions[session_id] = context;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void ue_context::copy_pdu_sessions(std::shared_ptr<ue_context>& ue_ctx) { void ue_context::copy_pdu_sessions(const std::shared_ptr<ue_context>& ue_ctx) {
pdu_sessions = ue_ctx->pdu_sessions; pdu_sessions = ue_ctx->pdu_sessions;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool ue_context::get_pdu_sessions_context( bool ue_context::get_pdu_sessions_context(
std::vector<std::shared_ptr<pdu_session_context>>& sessions_ctx) { std::vector<std::shared_ptr<pdu_session_context>>& sessions_ctx) const {
std::shared_lock lock(m_pdu_session); std::shared_lock lock(m_pdu_session);
for (auto s : pdu_sessions) { for (auto s : pdu_sessions) {
sessions_ctx.push_back(s.second); sessions_ctx.push_back(s.second);
...@@ -71,7 +75,7 @@ bool ue_context::get_pdu_sessions_context( ...@@ -71,7 +75,7 @@ bool ue_context::get_pdu_sessions_context(
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool ue_context::remove_pdu_sessions_context(const uint8_t& pdu_session_id) { bool ue_context::remove_pdu_sessions_context(uint8_t pdu_session_id) {
std::shared_lock lock(m_pdu_session); std::shared_lock lock(m_pdu_session);
pdu_sessions.erase(pdu_session_id); pdu_sessions.erase(pdu_session_id);
return true; return true;
......
...@@ -25,8 +25,6 @@ ...@@ -25,8 +25,6 @@
#include <stdint.h> #include <stdint.h>
#include <map> #include <map>
#include <memory>
#include <mutex>
#include <shared_mutex> #include <shared_mutex>
#include "NgapIEsStruct.hpp" #include "NgapIEsStruct.hpp"
...@@ -43,28 +41,28 @@ class ue_context { ...@@ -43,28 +41,28 @@ class ue_context {
ue_context(); ue_context();
virtual ~ue_context(){}; virtual ~ue_context(){};
bool find_pdu_session_context( bool find_pdu_session_context(
const std::uint8_t& session_id, std::uint8_t session_id,
std::shared_ptr<pdu_session_context>& context) const; std::shared_ptr<pdu_session_context>& context) const;
void add_pdu_session_context( void add_pdu_session_context(
const std::uint8_t& session_id, std::uint8_t session_id,
const std::shared_ptr<pdu_session_context>& context); const std::shared_ptr<pdu_session_context>& context);
void copy_pdu_sessions(std::shared_ptr<ue_context>& ue_ctx); void copy_pdu_sessions(const std::shared_ptr<ue_context>& ue_ctx);
bool get_pdu_sessions_context( bool get_pdu_sessions_context(
std::vector<std::shared_ptr<pdu_session_context>>& sessions_ctx); std::vector<std::shared_ptr<pdu_session_context>>& sessions_ctx) const;
bool remove_pdu_sessions_context(const uint8_t& pdu_session_id); bool remove_pdu_sessions_context(uint8_t pdu_session_id);
public: public:
uint32_t ran_ue_ngap_id; // 32bits uint32_t ran_ue_ngap_id; // 32bits
long amf_ue_ngap_id : 40; // 40bits long amf_ue_ngap_id; // 40bits
uint32_t gnb_id; uint32_t gnb_id;
std::string supi;
uint32_t tmsi;
e_Ngap_RRCEstablishmentCause rrc_estb_cause; e_Ngap_RRCEstablishmentCause rrc_estb_cause;
bool isUeContextRequest; bool is_ue_context_request;
NrCgi_t cgi; NrCgi_t cgi;
Tai_t tai; Tai_t tai;
std::string supi;
uint32_t tmsi;
// pdu session id <-> pdu_session_contex // pdu session id <-> pdu_session_contex
std::map<std::uint8_t, std::shared_ptr<pdu_session_context>> pdu_sessions; std::map<std::uint8_t, std::shared_ptr<pdu_session_context>> pdu_sessions;
mutable std::shared_mutex m_pdu_session; mutable std::shared_mutex m_pdu_session;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment