Commit 5fd4ea92 authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN

Code cleanup for Registration Accept

parent e4ae7895
...@@ -367,17 +367,18 @@ void amf_app::handle_itti_message( ...@@ -367,17 +367,18 @@ void amf_app::handle_itti_message(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::handle_itti_message( void amf_app::handle_itti_message(
itti_nas_signalling_establishment_request& itti_msg) { itti_nas_signalling_establishment_request& itti_msg) {
long amf_ue_ngap_id = 0; long amf_ue_ngap_id = INVALID_AMF_UE_NGAP_ID;
std::shared_ptr<ue_context> uc = {}; std::shared_ptr<ue_context> uc = {};
// Generate amf_ue_ngap_id // Generate amf_ue_ngap_id if necessary
if ((amf_ue_ngap_id = itti_msg.amf_ue_ngap_id) == INVALID_AMF_UE_NGAP_ID) { if ((amf_ue_ngap_id = itti_msg.amf_ue_ngap_id) == INVALID_AMF_UE_NGAP_ID) {
amf_ue_ngap_id = generate_amf_ue_ngap_id(); amf_ue_ngap_id = generate_amf_ue_ngap_id();
} }
string ue_context_key = // Get UE context, if the context doesn't exist, create a new one
std::string ue_context_key =
conv::get_ue_context_key(itti_msg.ran_ue_ngap_id, amf_ue_ngap_id); conv::get_ue_context_key(itti_msg.ran_ue_ngap_id, amf_ue_ngap_id);
if (!is_ran_amf_id_2_ue_context(ue_context_key)) { if (!ran_amf_id_2_ue_context(ue_context_key, uc)) {
Logger::amf_app().debug( Logger::amf_app().debug(
"No existing UE Context, Create a new one with ran_amf_id %s", "No existing UE Context, Create a new one with ran_amf_id %s",
ue_context_key.c_str()); ue_context_key.c_str());
...@@ -397,12 +398,7 @@ void amf_app::handle_itti_message( ...@@ -397,12 +398,7 @@ void amf_app::handle_itti_message(
amf_n2_inst->set_amf_ue_ngap_id_2_ue_ngap_context(amf_ue_ngap_id, unc); amf_n2_inst->set_amf_ue_ngap_id_2_ue_ngap_context(amf_ue_ngap_id, unc);
} }
// Create UE Context and store related information information // Store related information
if (uc == nullptr) {
Logger::amf_app().error(
"Failed to create ue_context with ran_amf_id %s",
ue_context_key.c_str());
} else {
uc->cgi = itti_msg.cgi; uc->cgi = itti_msg.cgi;
uc->tai = itti_msg.tai; uc->tai = itti_msg.tai;
if (itti_msg.rrc_cause != -1) if (itti_msg.rrc_cause != -1)
...@@ -414,7 +410,7 @@ void amf_app::handle_itti_message( ...@@ -414,7 +410,7 @@ void amf_app::handle_itti_message(
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;
std::string guti; std::string guti = {};
bool is_guti_valid = false; bool is_guti_valid = false;
if (itti_msg.is_5g_s_tmsi_present) { if (itti_msg.is_5g_s_tmsi_present) {
guti = itti_msg.tai.mcc + itti_msg.tai.mnc + amf_cfg.guami.regionID + guti = itti_msg.tai.mcc + itti_msg.tai.mnc + amf_cfg.guami.regionID +
...@@ -444,7 +440,6 @@ void amf_app::handle_itti_message( ...@@ -444,7 +440,6 @@ void amf_app::handle_itti_message(
"Could not send ITTI message %s to task TASK_AMF_N1", "Could not send ITTI message %s to task TASK_AMF_N1",
itti_n1_msg->get_msg_name()); itti_n1_msg->get_msg_name());
} }
}
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
......
...@@ -617,9 +617,10 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) { ...@@ -617,9 +617,10 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
gc->next_sctp_stream += 1; gc->next_sctp_stream += 1;
if (gc->next_sctp_stream >= gc->instreams) gc->next_sctp_stream = 1; if (gc->next_sctp_stream >= gc->instreams) gc->next_sctp_stream = 1;
unc->gnb_assoc_id = init_ue_msg.assoc_id; unc->gnb_assoc_id = init_ue_msg.assoc_id;
// User Location Info NR (Mandatory)
NrCgi_t cgi = {}; NrCgi_t cgi = {};
Tai_t tai = {}; Tai_t tai = {};
if (init_ue_msg.initUeMsg->getUserLocationInfoNR(cgi, tai)) { if (init_ue_msg.initUeMsg->getUserLocationInfoNR(cgi, tai)) {
itti_msg->cgi = cgi; itti_msg->cgi = cgi;
itti_msg->tai = tai; itti_msg->tai = tai;
...@@ -629,13 +630,11 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) { ...@@ -629,13 +630,11 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
return; return;
} }
if (init_ue_msg.initUeMsg->getRRCEstablishmentCause() == -1) { // RCC Establishment Cause (Mandatory)
Logger::amf_n2().warn("IE RRCEstablishmentCause not present");
itti_msg->rrc_cause = -1; // not present, TODO with optional
} else {
itti_msg->rrc_cause = init_ue_msg.initUeMsg->getRRCEstablishmentCause(); itti_msg->rrc_cause = init_ue_msg.initUeMsg->getRRCEstablishmentCause();
}
// UE Context Request (Optional)
// TODO: use std::optional
if (init_ue_msg.initUeMsg->getUeContextRequest() == -1) { if (init_ue_msg.initUeMsg->getUeContextRequest() == -1) {
Logger::amf_n2().warn("IE UeContextRequest not present"); Logger::amf_n2().warn("IE UeContextRequest not present");
itti_msg->ueCtxReq = -1; // not present, TODO with optional itti_msg->ueCtxReq = -1; // not present, TODO with optional
...@@ -643,6 +642,7 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) { ...@@ -643,6 +642,7 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
itti_msg->ueCtxReq = init_ue_msg.initUeMsg->getUeContextRequest(); itti_msg->ueCtxReq = init_ue_msg.initUeMsg->getUeContextRequest();
} }
// 5G-S-TMSI (Optional)
std::string _5g_s_tmsi = {}; std::string _5g_s_tmsi = {};
if (!init_ue_msg.initUeMsg->get5GS_TMSI(_5g_s_tmsi)) { if (!init_ue_msg.initUeMsg->get5GS_TMSI(_5g_s_tmsi)) {
itti_msg->is_5g_s_tmsi_present = false; itti_msg->is_5g_s_tmsi_present = false;
...@@ -656,8 +656,9 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) { ...@@ -656,8 +656,9 @@ void amf_n2::handle_itti_message(itti_initial_ue_message& init_ue_msg) {
unc->s_setid, unc->s_pointer, unc->s_tmsi); unc->s_setid, unc->s_pointer, unc->s_tmsi);
} }
// NAS PDU (Mandatory)
if (!init_ue_msg.initUeMsg->getNasPdu(itti_msg->nas_buf)) { if (!init_ue_msg.initUeMsg->getNasPdu(itti_msg->nas_buf)) {
Logger::amf_n2().error("Missing IE NAS-PDU"); Logger::amf_n2().error("Missing mandatory IE NAS-PDU");
return; return;
} }
......
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