Commit c42713eb authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Merge branch 'add_function_header' into 'develop'

Add function header

See merge request oai/cn5g/oai-cn5g-amf!109
parents d0417184 98900aa5
...@@ -188,7 +188,7 @@ std::shared_ptr<ue_context> amf_app::amf_ue_id_2_ue_context( ...@@ -188,7 +188,7 @@ std::shared_ptr<ue_context> amf_app::amf_ue_id_2_ue_context(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::set_amf_ue_ngap_id_2_ue_context( void amf_app::set_amf_ue_ngap_id_2_ue_context(
const long& amf_ue_ngap_id, std::shared_ptr<ue_context> uc) { const long& amf_ue_ngap_id, const std::shared_ptr<ue_context>& uc) {
std::unique_lock lock(m_amf_ue_ngap_id2ue_ctx); std::unique_lock lock(m_amf_ue_ngap_id2ue_ctx);
amf_ue_ngap_id2ue_ctx[amf_ue_ngap_id] = uc; amf_ue_ngap_id2ue_ctx[amf_ue_ngap_id] = uc;
} }
...@@ -220,7 +220,7 @@ bool amf_app::ran_amf_id_2_ue_context( ...@@ -220,7 +220,7 @@ bool amf_app::ran_amf_id_2_ue_context(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::set_ran_amf_id_2_ue_context( void amf_app::set_ran_amf_id_2_ue_context(
const string& ue_context_key, std::shared_ptr<ue_context> uc) { const string& ue_context_key, const std::shared_ptr<ue_context>& uc) {
std::unique_lock lock(m_ue_ctx_key); std::unique_lock lock(m_ue_ctx_key);
ue_ctx_key[ue_context_key] = uc; ue_ctx_key[ue_context_key] = uc;
} }
...@@ -240,7 +240,7 @@ std::shared_ptr<ue_context> amf_app::supi_2_ue_context( ...@@ -240,7 +240,7 @@ std::shared_ptr<ue_context> amf_app::supi_2_ue_context(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::set_supi_2_ue_context( void amf_app::set_supi_2_ue_context(
const string& supi, std::shared_ptr<ue_context>& uc) { const string& supi, const std::shared_ptr<ue_context>& uc) {
std::unique_lock lock(m_supi2ue_ctx); std::unique_lock lock(m_supi2ue_ctx);
supi2ue_ctx[supi] = uc; supi2ue_ctx[supi] = uc;
} }
...@@ -280,8 +280,8 @@ void amf_app::handle_itti_message( ...@@ -280,8 +280,8 @@ void amf_app::handle_itti_message(
"Handle ITTI N1N2 Message Transfer Request for Paging"); "Handle ITTI N1N2 Message Transfer Request for Paging");
std::shared_ptr<itti_paging> i = std::shared_ptr<itti_paging> i =
std::make_shared<itti_paging>(TASK_AMF_APP, TASK_AMF_N2); std::make_shared<itti_paging>(TASK_AMF_APP, TASK_AMF_N2);
i.get()->amf_ue_ngap_id = amf_n1_inst->supi2amfId.at(itti_msg.supi); amf_n1_inst->supi_2_amf_id(itti_msg.supi, i.get()->amf_ue_ngap_id);
i.get()->ran_ue_ngap_id = amf_n1_inst->supi2ranId.at(itti_msg.supi); amf_n1_inst->supi_2_ran_id(itti_msg.supi, i.get()->ran_ue_ngap_id);
int ret = itti_inst->send_msg(i); int ret = itti_inst->send_msg(i);
if (0 != ret) { if (0 != ret) {
...@@ -315,8 +315,8 @@ void amf_app::handle_itti_message( ...@@ -315,8 +315,8 @@ void amf_app::handle_itti_message(
dl_msg->is_n2sm_set = true; dl_msg->is_n2sm_set = true;
dl_msg->n2sm_info_type = itti_msg.n2sm_info_type; dl_msg->n2sm_info_type = itti_msg.n2sm_info_type;
} }
dl_msg->amf_ue_ngap_id = amf_n1_inst->supi2amfId.at(itti_msg.supi); amf_n1_inst->supi_2_amf_id(itti_msg.supi, dl_msg->amf_ue_ngap_id);
dl_msg->ran_ue_ngap_id = amf_n1_inst->supi2ranId.at(itti_msg.supi); amf_n1_inst->supi_2_ran_id(itti_msg.supi, dl_msg->ran_ue_ngap_id);
std::shared_ptr<itti_downlink_nas_transfer> i = std::shared_ptr<itti_downlink_nas_transfer> i =
std::shared_ptr<itti_downlink_nas_transfer>(dl_msg); std::shared_ptr<itti_downlink_nas_transfer>(dl_msg);
int ret = itti_inst->send_msg(i); int ret = itti_inst->send_msg(i);
...@@ -619,7 +619,8 @@ uint32_t amf_app::generate_tmsi() { ...@@ -619,7 +619,8 @@ uint32_t amf_app::generate_tmsi() {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_app::generate_5g_guti( bool amf_app::generate_5g_guti(
uint32_t ranid, long amfid, string& mcc, string& mnc, uint32_t& tmsi) { const uint32_t ranid, const long amfid, string& mcc, string& mnc,
uint32_t& tmsi) {
string ue_context_key = string ue_context_key =
"app_ue_ranid_" + to_string(ranid) + ":amfid_" + to_string(amfid); "app_ue_ranid_" + to_string(ranid) + ":amfid_" + to_string(amfid);
if (!is_ran_amf_id_2_ue_context(ue_context_key)) { if (!is_ran_amf_id_2_ue_context(ue_context_key)) {
...@@ -706,7 +707,7 @@ void amf_app::generate_uuid() { ...@@ -706,7 +707,7 @@ void amf_app::generate_uuid() {
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void amf_app::add_event_subscription( void amf_app::add_event_subscription(
evsub_id_t sub_id, amf_event_type_t ev, const evsub_id_t& sub_id, const amf_event_type_t& ev,
std::shared_ptr<amf_subscription> ss) { std::shared_ptr<amf_subscription> ss) {
Logger::amf_app().debug( Logger::amf_app().debug(
"Add an Event subscription (Sub ID %d, Event %d)", sub_id, (uint8_t) ev); "Add an Event subscription (Sub ID %d, Event %d)", sub_id, (uint8_t) ev);
...@@ -715,7 +716,7 @@ void amf_app::add_event_subscription( ...@@ -715,7 +716,7 @@ void amf_app::add_event_subscription(
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
bool amf_app::remove_event_subscription(evsub_id_t sub_id) { bool amf_app::remove_event_subscription(const evsub_id_t& sub_id) {
Logger::amf_app().debug("Remove an Event subscription (Sub ID %d)", sub_id); Logger::amf_app().debug("Remove an Event subscription (Sub ID %d)", sub_id);
std::unique_lock lock(m_amf_event_subscriptions); std::unique_lock lock(m_amf_event_subscriptions);
for (auto it = amf_event_subscriptions.cbegin(); for (auto it = amf_event_subscriptions.cbegin();
...@@ -736,7 +737,7 @@ bool amf_app::remove_event_subscription(evsub_id_t sub_id) { ...@@ -736,7 +737,7 @@ bool amf_app::remove_event_subscription(evsub_id_t sub_id) {
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void amf_app::get_ee_subscriptions( void amf_app::get_ee_subscriptions(
amf_event_type_t ev, const amf_event_type_t& ev,
std::vector<std::shared_ptr<amf_subscription>>& subscriptions) { std::vector<std::shared_ptr<amf_subscription>>& subscriptions) {
for (auto const& i : amf_event_subscriptions) { for (auto const& i : amf_event_subscriptions) {
if ((uint8_t) std::get<1>(i.first) == (uint8_t) ev) { if ((uint8_t) std::get<1>(i.first) == (uint8_t) ev) {
...@@ -750,7 +751,7 @@ void amf_app::get_ee_subscriptions( ...@@ -750,7 +751,7 @@ void amf_app::get_ee_subscriptions(
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void amf_app::get_ee_subscriptions( void amf_app::get_ee_subscriptions(
evsub_id_t sub_id, const evsub_id_t& sub_id,
std::vector<std::shared_ptr<amf_subscription>>& subscriptions) { std::vector<std::shared_ptr<amf_subscription>>& subscriptions) {
for (auto const& i : amf_event_subscriptions) { for (auto const& i : amf_event_subscriptions) {
if (i.first.first == sub_id) { if (i.first.first == sub_id) {
...@@ -761,7 +762,7 @@ void amf_app::get_ee_subscriptions( ...@@ -761,7 +762,7 @@ void amf_app::get_ee_subscriptions(
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void amf_app::get_ee_subscriptions( void amf_app::get_ee_subscriptions(
amf_event_type_t ev, std::string& supi, const amf_event_type_t& ev, std::string& supi,
std::vector<std::shared_ptr<amf_subscription>>& subscriptions) { std::vector<std::shared_ptr<amf_subscription>>& subscriptions) {
for (auto const& i : amf_event_subscriptions) { for (auto const& i : amf_event_subscriptions) {
if ((i.first.second == ev) && (i.second->supi == supi)) { if ((i.first.second == ev) && (i.second->supi == supi)) {
...@@ -856,7 +857,7 @@ void amf_app::trigger_nf_registration_request() { ...@@ -856,7 +857,7 @@ void amf_app::trigger_nf_registration_request() {
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::trigger_nf_deregistration() { void amf_app::trigger_nf_deregistration() const {
Logger::amf_app().debug( Logger::amf_app().debug(
"Send ITTI msg to N11 task to trigger the deregistration request to NRF"); "Send ITTI msg to N11 task to trigger the deregistration request to NRF");
...@@ -873,25 +874,28 @@ void amf_app::trigger_nf_deregistration() { ...@@ -873,25 +874,28 @@ void amf_app::trigger_nf_deregistration() {
} }
void amf_app::add_promise( void amf_app::add_promise(
uint32_t pid, boost::shared_ptr<boost::promise<uint32_t>>& p) { const uint32_t pid, const boost::shared_ptr<boost::promise<uint32_t>>& p) {
std::unique_lock lock(m_curl_handle_responses_smf); std::unique_lock lock(m_curl_handle_responses_smf);
curl_handle_responses_smf.emplace(pid, p); curl_handle_responses_smf.emplace(pid, p);
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void amf_app::add_promise( void amf_app::add_promise(
uint32_t id, boost::shared_ptr<boost::promise<std::string>>& p) { const uint32_t id,
const boost::shared_ptr<boost::promise<std::string>>& p) {
std::unique_lock lock(m_curl_handle_responses_n2_sm); std::unique_lock lock(m_curl_handle_responses_n2_sm);
curl_handle_responses_n2_sm.emplace(id, p); curl_handle_responses_n2_sm.emplace(id, p);
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void amf_app::add_promise( void amf_app::add_promise(
uint32_t pid, boost::shared_ptr<boost::promise<nlohmann::json>>& p) { const uint32_t pid,
const boost::shared_ptr<boost::promise<nlohmann::json>>& p) {
std::unique_lock lock(m_curl_handle_responses_n11); std::unique_lock lock(m_curl_handle_responses_n11);
curl_handle_responses_n11.emplace(pid, p); curl_handle_responses_n11.emplace(pid, p);
} }
void amf_app::trigger_process_response(uint32_t pid, uint32_t http_code) { void amf_app::trigger_process_response(
const uint32_t pid, const uint32_t http_code) {
Logger::amf_app().debug( Logger::amf_app().debug(
"Trigger process response: Set promise with ID %u " "Trigger process response: Set promise with ID %u "
"to ready", "to ready",
...@@ -904,7 +908,8 @@ void amf_app::trigger_process_response(uint32_t pid, uint32_t http_code) { ...@@ -904,7 +908,8 @@ void amf_app::trigger_process_response(uint32_t pid, uint32_t http_code) {
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::trigger_process_response(uint32_t pid, std::string n2_sm) { void amf_app::trigger_process_response(
const uint32_t pid, const std::string& n2_sm) {
Logger::amf_app().debug( Logger::amf_app().debug(
"Trigger process response: Set promise with ID %u " "Trigger process response: Set promise with ID %u "
"to ready", "to ready",
...@@ -919,7 +924,7 @@ void amf_app::trigger_process_response(uint32_t pid, std::string n2_sm) { ...@@ -919,7 +924,7 @@ void amf_app::trigger_process_response(uint32_t pid, std::string n2_sm) {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_app::trigger_process_response( void amf_app::trigger_process_response(
uint32_t pid, nlohmann::json& json_data) { const uint32_t pid, const nlohmann::json& json_data) {
Logger::amf_app().debug( Logger::amf_app().debug(
"Trigger process response: Set promise with ID %u " "Trigger process response: Set promise with ID %u "
"to ready", "to ready",
......
This diff is collapsed.
...@@ -203,16 +203,65 @@ class amf_config { ...@@ -203,16 +203,65 @@ class amf_config {
public: public:
amf_config(); amf_config();
~amf_config(); ~amf_config();
/*
* Load AMF configuration file
* @param [const std::string&] config_file: Configuration file
* @return RETURNclear/RETURNerror/RETURNok
*/
int load(const std::string& config_file); int load(const std::string& config_file);
/*
* Read the network interface configuration
* @param [const Setting&] if_cfg: Configuration for the network interface
* @param [interface_cfg_t&] cfg: Interface config
* @return RETURNclear/RETURNerror/RETURNok
*/
int load_interface(const Setting& if_cfg, interface_cfg_t& cfg); int load_interface(const Setting& if_cfg, interface_cfg_t& cfg);
/*
* Get the URI of NRF NF Discovery Service
* @param void
* @return URI in string format
*/
std::string get_nrf_nf_discovery_service_uri(); std::string get_nrf_nf_discovery_service_uri();
/*
* Get the URI of NRF NF Registration Service
* @param [const std::string&] nf_instance_id: NF instance ID
* @return URI in string format
*/
std::string get_nrf_nf_registration_uri(const std::string& nf_instance_id); std::string get_nrf_nf_registration_uri(const std::string& nf_instance_id);
/*
* Get the URI of UDM Slice Selection Subscription Data Retrieval Service
* @param [const std::string&] supi: UE SUPI
* @return URI in string format
*/
std::string get_udm_slice_selection_subscription_data_retrieval_uri( std::string get_udm_slice_selection_subscription_data_retrieval_uri(
const std::string& supi); const std::string& supi);
/*
* Get the URI of NSSF Network Slice Selection Information Service
* @param void
* @return URI in string format
*/
std::string get_nssf_network_slice_selection_information_uri(); std::string get_nssf_network_slice_selection_information_uri();
/*
* Get the URI of AUSF UE Authentication Service
* @param void
* @return URI in string format
*/
std::string get_ausf_ue_authentications_uri(); std::string get_ausf_ue_authentications_uri();
/*
* Display the AMF configuration parameters
* @param void
* @return void
*/
void display(); void display();
unsigned int instance; unsigned int instance;
std::string pid_dir; std::string pid_dir;
interface_cfg_t n2; interface_cfg_t n2;
......
...@@ -50,15 +50,24 @@ namespace config { ...@@ -50,15 +50,24 @@ namespace config {
class amf_modules { class amf_modules {
public: public:
/*
* Load AMF modules configuration
* @param [const std::string&] config_file: Configuration file
* @return RETURNclear/RETURNerror/RETURNok
*/
int load(const std::string& config_file); int load(const std::string& config_file);
/*
* Display the AMF modules configuration parameters
* @param void
* @return void
*/
void display(); void display();
void makeModulesAlive();
private: private:
std::string msgName; // vector to store more msgs std::string msgName; // vector to store more msgs
Ngap_NGAP_PDU_PR typeOfMsg; Ngap_NGAP_PDU_PR typeOfMsg;
Ngap_ProcedureCode_t procedureCode; Ngap_ProcedureCode_t procedureCode;
// NGSetupRequestMsg *ngSetupRequest;
}; };
} // namespace config } // namespace config
......
...@@ -75,11 +75,11 @@ class event_exposure_msg { ...@@ -75,11 +75,11 @@ class event_exposure_msg {
bool m_supi_is_set; bool m_supi_is_set;
bool m_any_ue; // anyUE, Conditional bool m_any_ue; // anyUE, Conditional
// subsChangeNotifyUri: // subsChangeNotifyUri
// subsChangeNotifyCorrelationId: // subsChangeNotifyCorrelationId
// groupId: // groupId
// gpsi: // gpsi
// pei: // pei
// options: AmfEventMode // options: AmfEventMode
}; };
......
This diff is collapsed.
This diff is collapsed.
...@@ -437,8 +437,8 @@ void amf_n11::handle_itti_message(itti_nsmf_pdusession_create_sm_context& smf) { ...@@ -437,8 +437,8 @@ void amf_n11::handle_itti_message(itti_nsmf_pdusession_create_sm_context& smf) {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n11::send_pdu_session_update_sm_context_request( void amf_n11::send_pdu_session_update_sm_context_request(
std::string supi, std::shared_ptr<pdu_session_context> psc, const std::string& supi, std::shared_ptr<pdu_session_context>& psc,
std::string smf_addr, bstring sm_msg, std::string dnn) { const std::string& smf_addr, bstring sm_msg, const std::string& dnn) {
Logger::amf_n11().debug( Logger::amf_n11().debug(
"Send PDU Session Update SM Context Request to SMF (SUPI %s, PDU Session " "Send PDU Session Update SM Context Request to SMF (SUPI %s, PDU Session "
"ID %d, %s)", "ID %d, %s)",
...@@ -479,9 +479,9 @@ void amf_n11::send_pdu_session_update_sm_context_request( ...@@ -479,9 +479,9 @@ void amf_n11::send_pdu_session_update_sm_context_request(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n11::handle_pdu_session_initial_request( void amf_n11::handle_pdu_session_initial_request(
std::string supi, std::shared_ptr<pdu_session_context> psc, const std::string& supi, std::shared_ptr<pdu_session_context>& psc,
std::string smf_addr, std::string smf_api_version, std::string smf_port, const std::string& smf_addr, const std::string& smf_api_version,
bstring sm_msg, std::string dnn) { const std::string& smf_port, bstring sm_msg, const std::string& dnn) {
Logger::amf_n11().debug( Logger::amf_n11().debug(
"Handle PDU Session Establishment Request (SUPI %s, PDU Session ID %d)", "Handle PDU Session Establishment Request (SUPI %s, PDU Session ID %d)",
supi.c_str(), psc.get()->pdu_session_id); supi.c_str(), psc.get()->pdu_session_id);
...@@ -827,8 +827,8 @@ bool amf_n11::smf_selection_from_configuration( ...@@ -827,8 +827,8 @@ bool amf_n11::smf_selection_from_configuration(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n11::handle_post_sm_context_response_error( void amf_n11::handle_post_sm_context_response_error(
long code, std::string cause, bstring n1sm, std::string supi, const long code, const std::string& cause, bstring n1sm,
uint8_t pdu_session_id) { const std::string& supi, const uint8_t pdu_session_id) {
comUt::print_buffer( comUt::print_buffer(
"amf_n11", "n1 sm", (uint8_t*) bdata(n1sm), blength(n1sm)); "amf_n11", "n1 sm", (uint8_t*) bdata(n1sm), blength(n1sm));
itti_n1n2_message_transfer_request* itti_msg = itti_n1n2_message_transfer_request* itti_msg =
...@@ -851,7 +851,7 @@ void amf_n11::handle_post_sm_context_response_error( ...@@ -851,7 +851,7 @@ void amf_n11::handle_post_sm_context_response_error(
//----------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------
bool amf_n11::discover_smf( bool amf_n11::discover_smf(
std::string& smf_addr, std::string& smf_port, std::string& smf_api_version, std::string& smf_addr, std::string& smf_port, std::string& smf_api_version,
const snssai_t snssai, const plmn_t plmn, const std::string dnn, const snssai_t& snssai, const plmn_t& plmn, const std::string& dnn,
const std::string& nrf_uri) { const std::string& nrf_uri) {
Logger::amf_n11().debug( Logger::amf_n11().debug(
"Send NFDiscovery to NRF to discover the available SMFs"); "Send NFDiscovery to NRF to discover the available SMFs");
...@@ -996,8 +996,9 @@ void amf_n11::register_nf_instance( ...@@ -996,8 +996,9 @@ void amf_n11::register_nf_instance(
//----------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------
bool amf_n11::send_ue_authentication_request( bool amf_n11::send_ue_authentication_request(
oai::amf::model::AuthenticationInfo& auth_info, const oai::amf::model::AuthenticationInfo& auth_info,
oai::amf::model::UEAuthenticationCtx& ue_auth_ctx, uint8_t http_version) { oai::amf::model::UEAuthenticationCtx& ue_auth_ctx,
const uint8_t& http_version) {
Logger::amf_n11().debug( Logger::amf_n11().debug(
"Send UE Authentication Request to AUSF (HTTP version %d)", http_version); "Send UE Authentication Request to AUSF (HTTP version %d)", http_version);
...@@ -1040,9 +1041,10 @@ bool amf_n11::send_ue_authentication_request( ...@@ -1040,9 +1041,10 @@ bool amf_n11::send_ue_authentication_request(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n11::curl_http_client( void amf_n11::curl_http_client(
std::string remote_uri, std::string json_data, std::string n1sm_msg, const std::string& remote_uri, const std::string& json_data,
std::string n2sm_msg, std::string supi, uint8_t pdu_session_id, const std::string& n1sm_msg, const std::string& n2sm_msg,
uint8_t http_version, uint32_t promise_id) { const std::string& supi, const uint8_t& pdu_session_id,
const uint8_t& http_version, const uint32_t& promise_id) {
Logger::amf_n11().debug("Call SMF service: %s", remote_uri.c_str()); Logger::amf_n11().debug("Call SMF service: %s", remote_uri.c_str());
uint8_t number_parts = 0; uint8_t number_parts = 0;
...@@ -1316,9 +1318,9 @@ void amf_n11::curl_http_client( ...@@ -1316,9 +1318,9 @@ void amf_n11::curl_http_client(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n11::curl_http_client( void amf_n11::curl_http_client(
std::string& remote_uri, std::string& json_data, std::string& n1sm_msg, const std::string& remote_uri, std::string& json_data,
std::string& n2sm_msg, uint8_t http_version, uint32_t& response_code, std::string& n1sm_msg, std::string& n2sm_msg, const uint8_t& http_version,
uint32_t promise_id) { uint32_t& response_code, const uint32_t& promise_id) {
Logger::amf_n11().debug("Call SMF service: %s", remote_uri.c_str()); Logger::amf_n11().debug("Call SMF service: %s", remote_uri.c_str());
uint8_t number_parts = 0; uint8_t number_parts = 0;
...@@ -1482,9 +1484,9 @@ void amf_n11::curl_http_client( ...@@ -1482,9 +1484,9 @@ void amf_n11::curl_http_client(
//----------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------
void amf_n11::curl_http_client( void amf_n11::curl_http_client(
std::string remote_uri, std::string method, std::string msg_body, const std::string& remote_uri, const std::string& method,
nlohmann::json& response_json, uint32_t& response_code, const std::string& msg_body, nlohmann::json& response_json,
uint8_t http_version) { uint32_t& response_code, const uint8_t& http_version) {
Logger::amf_n11().info("Send HTTP message to %s", remote_uri.c_str()); Logger::amf_n11().info("Send HTTP message to %s", remote_uri.c_str());
Logger::amf_n11().info("HTTP message Body: %s", msg_body.c_str()); Logger::amf_n11().info("HTTP message Body: %s", msg_body.c_str());
......
This diff is collapsed.
...@@ -2168,7 +2168,8 @@ std::shared_ptr<ue_ngap_context> amf_n2::ran_ue_id_2_ue_ngap_context( ...@@ -2168,7 +2168,8 @@ std::shared_ptr<ue_ngap_context> amf_n2::ran_ue_id_2_ue_ngap_context(
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n2::set_ran_ue_ngap_id_2_ue_ngap_context( void amf_n2::set_ran_ue_ngap_id_2_ue_ngap_context(
const uint32_t& ran_ue_ngap_id, std::shared_ptr<ue_ngap_context> unc) { const uint32_t& ran_ue_ngap_id,
const std::shared_ptr<ue_ngap_context>& unc) {
std::unique_lock lock(m_ranid2uecontext); std::unique_lock lock(m_ranid2uecontext);
ranid2uecontext[ran_ue_ngap_id] = unc; ranid2uecontext[ran_ue_ngap_id] = unc;
} }
...@@ -2285,30 +2286,10 @@ void amf_n2::remove_ue_context_with_amf_ue_ngap_id( ...@@ -2285,30 +2286,10 @@ void amf_n2::remove_ue_context_with_amf_ue_ngap_id(
remove_amf_ue_ngap_id_2_ue_ngap_context(amf_ue_ngap_id); remove_amf_ue_ngap_id_2_ue_ngap_context(amf_ue_ngap_id);
} }
//------------------------------------------------------------------------------
bool amf_n2::verifyPlmn(vector<SupportedItem_t> list) {
for (int i = 0; i < amf_cfg.plmn_list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
Logger::amf_n2().debug(
"TAC configured %d, TAC received %d", amf_cfg.plmn_list[i].tac,
list[j].tac);
if (amf_cfg.plmn_list[i].tac != list[j].tac) {
continue;
}
for (int k = 0; k < list[j].b_plmn_list.size(); k++) {
if (!(list[j].b_plmn_list[k].mcc.compare(amf_cfg.plmn_list[i].mcc)) &&
!(list[j].b_plmn_list[k].mnc.compare(amf_cfg.plmn_list[i].mnc))) {
return true;
}
}
}
}
return false;
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_n2::get_common_plmn( bool amf_n2::get_common_plmn(
std::vector<SupportedItem_t> list, std::vector<SupportedItem_t>& result) { const std::vector<SupportedItem_t>& list,
std::vector<SupportedItem_t>& result) {
std::vector<SupportedItem_t> plmn_list = {}; std::vector<SupportedItem_t> plmn_list = {};
bool found_common_plmn = false; bool found_common_plmn = false;
for (int i = 0; i < amf_cfg.plmn_list.size(); i++) { for (int i = 0; i < amf_cfg.plmn_list.size(); i++) {
......
...@@ -191,44 +191,118 @@ class amf_n2 : public ngap::ngap_app { ...@@ -191,44 +191,118 @@ class amf_n2 : public ngap::ngap_app {
*/ */
void handle_itti_message(itti_paging& itti_msg); void handle_itti_message(itti_paging& itti_msg);
// TODO /*
* Send Handover Preparaton Failure message
* @param [const unsigned long] amf_ue_ngap_id: AMF UE NGAP ID
* @param [const uint32_t] ran_ue_ngap_id: RAN UE NGAP ID
* @param [const sctp_assoc_id_t&] gnb_assoc_id: gNB Association ID
* @return void
*/
void send_handover_preparation_failure( void send_handover_preparation_failure(
const unsigned long amf_ue_ngap_id, const uint32_t ran_ue_ngap_id, const unsigned long amf_ue_ngap_id, const uint32_t ran_ue_ngap_id,
const sctp_assoc_id_t& gnb_assoc_id); const sctp_assoc_id_t& gnb_assoc_id);
// TODO /*
bool verifyPlmn(std::vector<SupportedItem_t> list); * Get list of common PLMN between AMF and gNB
// TODO * @param [const std::vector<SupportedItem_t>&] list: Supported TA list from
* gNB
* @param [std::vector<SupportedItem_t>&] result: list of common TA
* @return true if there's at least 1 common TA, otherwise return false
*/
bool get_common_plmn( bool get_common_plmn(
std::vector<SupportedItem_t> list, std::vector<SupportedItem_t>& result); const std::vector<SupportedItem_t>& list,
// TODO std::vector<SupportedItem_t>& result);
/*
* Get UE NGAP context associated with a RAN UE NGAP ID
* @param [const uint32_t&] ran_ue_ngap_id: RAN UE NGAP ID
* @return shared pointer to the UE NGAP context
*/
std::shared_ptr<ue_ngap_context> ran_ue_id_2_ue_ngap_context( std::shared_ptr<ue_ngap_context> ran_ue_id_2_ue_ngap_context(
const uint32_t& ran_ue_ngap_id) const; const uint32_t& ran_ue_ngap_id) const;
// TODO
/*
* Verify whether a UE NGAP context associated with a RAN UE NGAP ID exist
* @param [const uint32_t&] ran_ue_ngap_id: RAN UE NGAP ID
* @return true if exist, otherwise return false
*/
bool is_ran_ue_id_2_ue_ngap_context(const uint32_t& ran_ue_ngap_id) const; bool is_ran_ue_id_2_ue_ngap_context(const uint32_t& ran_ue_ngap_id) const;
// TODO
/*
* Store UE NGAP context associated with a RAN UE NGAP ID
* @param [const uint32_t&] ran_ue_ngap_id: RAN UE NGAP ID
* @param [const std::shared_ptr<ue_ngap_context>&] unc: pointer to UE NGAP
* context
* @return void
*/
void set_ran_ue_ngap_id_2_ue_ngap_context( void set_ran_ue_ngap_id_2_ue_ngap_context(
const uint32_t& ran_ue_ngap_id, std::shared_ptr<ue_ngap_context> unc); const uint32_t& ran_ue_ngap_id,
const std::shared_ptr<ue_ngap_context>& unc);
/*
* Remove UE NGAP context associated with a RAN UE NGAP ID
* @param [const uint32_t&] ran_ue_ngap_id: RAN UE NGAP ID
* @return void
*/
void remove_ran_ue_ngap_id_2_ngap_context(const uint32_t& ran_ue_ngap_id); void remove_ran_ue_ngap_id_2_ngap_context(const uint32_t& ran_ue_ngap_id);
// TODO: /*
* Remove UE Context associated with a RAN UE NGAP ID
* @param [const uint32_t&] ran_ue_ngap_id: RAN UE NGAP ID
* @return void
*/
void remove_ue_context_with_ran_ue_ngap_id(const uint32_t& ran_ue_ngap_id); void remove_ue_context_with_ran_ue_ngap_id(const uint32_t& ran_ue_ngap_id);
// TODO /*
* Get UE NGAP context associated with a AMF UE NGAP ID
* @param [const unsigned long&] amf_ue_ngap_id: AMF UE NGAP ID
* @return shared pointer to the UE NGAP context
*/
std::shared_ptr<ue_ngap_context> amf_ue_id_2_ue_ngap_context( std::shared_ptr<ue_ngap_context> amf_ue_id_2_ue_ngap_context(
const unsigned long& amf_ue_ngap_id) const; const unsigned long& amf_ue_ngap_id) const;
// TODO
/*
* Verify whether a UE NGAP context associated with a AMF UE NGAP ID exist
* @param [const unsigned long&] amf_ue_ngap_id: AMF UE NGAP ID
* @return true if exist, otherwise return false
*/
bool is_amf_ue_id_2_ue_ngap_context( bool is_amf_ue_id_2_ue_ngap_context(
const unsigned long& amf_ue_ngap_id) const; const unsigned long& amf_ue_ngap_id) const;
// TODO
/*
* Store UE NGAP context associated with a AMF UE NGAP ID
* @param [const unsigned long&] amf_ue_ngap_id: AMF UE NGAP ID
* @param [const std::shared_ptr<ue_ngap_context>&] unc: pointer to UE NGAP
* context
* @return void
*/
void set_amf_ue_ngap_id_2_ue_ngap_context( void set_amf_ue_ngap_id_2_ue_ngap_context(
const unsigned long& amf_ue_ngap_id, const unsigned long& amf_ue_ngap_id,
std::shared_ptr<ue_ngap_context> unc); std::shared_ptr<ue_ngap_context> unc);
/*
* Remove UE NGAP context associated with a AMF UE NGAP ID
* @param [const unsigned long&] amf_ue_ngap_id: AMF UE NGAP ID
* @return void
*/
void remove_amf_ue_ngap_id_2_ue_ngap_context( void remove_amf_ue_ngap_id_2_ue_ngap_context(
const unsigned long& amf_ue_ngap_id); const unsigned long& amf_ue_ngap_id);
/*
* Remove UE Context associated with a AMF UE NGAP ID
* @param [const unsigned long&] amf_ue_ngap_id: AMF UE NGAP ID
* @return void
*/
void remove_ue_context_with_amf_ue_ngap_id( void remove_ue_context_with_amf_ue_ngap_id(
const unsigned long& amf_ue_ngap_id); const unsigned long& amf_ue_ngap_id);
/*
* Get list of UE Context associated with a gNB
* @param [const sctp_assoc_id_t&] gnb_assoc_id: gNB Association ID
* @param [std::vector<std::shared_ptr<ue_ngap_context>>&] ue_contexts: vector
* of UE Context
* @return void
*/
void get_ue_ngap_contexts( void get_ue_ngap_contexts(
const sctp_assoc_id_t& gnb_assoc_id, const sctp_assoc_id_t& gnb_assoc_id,
std::vector<std::shared_ptr<ue_ngap_context>>& ue_contexts); std::vector<std::shared_ptr<ue_ngap_context>>& ue_contexts);
......
...@@ -141,7 +141,7 @@ void statistics::update_5gmm_state( ...@@ -141,7 +141,7 @@ void statistics::update_5gmm_state(
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void statistics::remove_gnb(const uint32_t gnb_id) { void statistics::remove_gnb(const uint32_t& gnb_id) {
std::unique_lock lock(m_gnbs); std::unique_lock lock(m_gnbs);
if (gnbs.count(gnb_id) > 0) { if (gnbs.count(gnb_id) > 0) {
gnbs.erase(gnb_id); gnbs.erase(gnb_id);
......
...@@ -76,13 +76,52 @@ typedef struct ue_info_s { ...@@ -76,13 +76,52 @@ typedef struct ue_info_s {
class statistics { class statistics {
public: public:
void display();
statistics(); statistics();
~statistics(); ~statistics();
/*
* Display the AMF configuration parameters
* @param void
* @return void
*/
void display();
/*
* Update UE information
* @param [const ue_info_t&] ue_info: UE information
* @return void
*/
void update_ue_info(const ue_info_t& ue_info); void update_ue_info(const ue_info_t& ue_info);
/*
* Update UE 5GMM state
* @param [const std::string&] imsi: UE IMSI
* @param [const std::string&] state: UE State
* @return void
*/
void update_5gmm_state(const std::string& imsi, const std::string& state); void update_5gmm_state(const std::string& imsi, const std::string& state);
void remove_gnb(const uint32_t gnb_id);
/*
* Remove gNB from the list connected gNB to this AMF
* @param [const uint32_t] gnb_id: gNB ID
* @return void
*/
void remove_gnb(const uint32_t& gnb_id);
/*
* Add gNB to the list connected gNB to this AMF
* @param [const uint32_t&] gnb_id: gNB ID
* @param [const gnb_infos&] gnb: gNB Info
* @return void
*/
void add_gnb(const uint32_t& gnb_id, const gnb_infos& gnb); void add_gnb(const uint32_t& gnb_id, const gnb_infos& gnb);
/*
* Update gNB info
* @param [const uint32_t&] gnb_id: gNB ID
* @param [const gnb_infos&] gnb: gNB Info
* @return void
*/
void update_gnb(const uint32_t& gnb_id, const gnb_infos& gnb); void update_gnb(const uint32_t& gnb_id, const gnb_infos& gnb);
public: public:
......
...@@ -47,6 +47,12 @@ class amf_subscription { ...@@ -47,6 +47,12 @@ class amf_subscription {
nf_id() { nf_id() {
supi_is_set = false; supi_is_set = false;
} }
/*
* Display the AMF Subscription information
* @param void
* @return void
*/
void display(); void display();
evsub_id_t sub_id; evsub_id_t sub_id;
......
...@@ -37,7 +37,7 @@ extern amf_config amf_cfg; ...@@ -37,7 +37,7 @@ extern amf_config amf_cfg;
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool amf_n1::get_mysql_auth_info( bool amf_n1::get_mysql_auth_info(
std::string imsi, const std::string& imsi,
mysql_auth_info_t& mysql_auth_info_t&
resp) { // openair-cn/tree/v0.5.0/src/oai_hss/db/db_connector.c resp) { // openair-cn/tree/v0.5.0/src/oai_hss/db/db_connector.c
MYSQL_RES* res; MYSQL_RES* res;
...@@ -116,7 +116,7 @@ bool amf_n1::connect_to_mysql() { ...@@ -116,7 +116,7 @@ bool amf_n1::connect_to_mysql() {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n1::mysql_push_rand_sqn( void amf_n1::mysql_push_rand_sqn(
std::string imsi, uint8_t* rand_p, uint8_t* sqn) { const std::string& imsi, uint8_t* rand_p, uint8_t* sqn) {
int status = 0; int status = 0;
MYSQL_RES* res; MYSQL_RES* res;
char query[1000]; char query[1000];
...@@ -171,7 +171,7 @@ void amf_n1::mysql_push_rand_sqn( ...@@ -171,7 +171,7 @@ void amf_n1::mysql_push_rand_sqn(
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void amf_n1::mysql_increment_sqn(std::string imsi) { void amf_n1::mysql_increment_sqn(const std::string& imsi) {
int status; int status;
MYSQL_RES* res; MYSQL_RES* res;
char query[1000]; char query[1000];
......
...@@ -63,4 +63,16 @@ constexpr uint64_t SECONDS_SINCE_FIRST_EPOCH = 2208988800; ...@@ -63,4 +63,16 @@ constexpr uint64_t SECONDS_SINCE_FIRST_EPOCH = 2208988800;
#define NAMF_COMMUNICATION_BASE "/namf-comm/" #define NAMF_COMMUNICATION_BASE "/namf-comm/"
#define NAMF_COMMUNICATION_N1N2_MESSAGE_TRANSFER_URL \ #define NAMF_COMMUNICATION_N1N2_MESSAGE_TRANSFER_URL \
"/ue-contexts/{}/n1-n2-messages" // context id "/ue-contexts/{}/n1-n2-messages" // context id
#define NAS_MESSAGE_DOWNLINK 1
#define NAS_MESSAGE_UPLINK 0
typedef enum {
PlainNasMsg = 0x0,
IntegrityProtected = 0x1,
IntegrityProtectedAndCiphered = 0x2,
IntegrityProtectedWithNew5GNASSecurityContext = 0x3,
IntegrityProtectedAndCipheredWithNew5GNASSecurityContext = 0x4,
} SecurityHeaderType_t;
#endif #endif
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