Commit 908e56da authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Continue to work with documentation

parent 44a7737f
...@@ -189,5 +189,7 @@ static const std::vector<std::string> multipart_related_content_part_e2str = { ...@@ -189,5 +189,7 @@ static const std::vector<std::string> multipart_related_content_part_e2str = {
//for CURL //for CURL
#define AMF_CURL_TIMEOUT_MS 100L #define AMF_CURL_TIMEOUT_MS 100L
#define UDM_CURL_TIMEOUT_MS 100L
#define UDM_NUMBER_RETRIES 3
#endif #endif
...@@ -1018,6 +1018,16 @@ bool smf_app::is_scid_2_smf_context(const scid_t &scid) const { ...@@ -1018,6 +1018,16 @@ bool smf_app::is_scid_2_smf_context(const scid_t &scid) const {
return bool { scid2smf_context.count(scid) > 0 }; return bool { scid2smf_context.count(scid) > 0 };
} }
//------------------------------------------------------------------------------
bool smf_app::scid_2_smf_context(const scid_t &scid, std::shared_ptr<smf_context_ref> & scf) const {
std::shared_lock lock(m_scid2smf_context);
if ( scid2smf_context.count(scid) > 0 ) {
scf = scid2smf_context.at(scid);
return true;
}
return false;
}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
bool smf_app::use_local_configuration_subscription_data( bool smf_app::use_local_configuration_subscription_data(
const std::string &dnn_selection_mode) { const std::string &dnn_selection_mode) {
...@@ -1069,7 +1079,7 @@ void smf_app::convert_string_2_hex(std::string &input_str, ...@@ -1069,7 +1079,7 @@ void smf_app::convert_string_2_hex(std::string &input_str,
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
unsigned char* smf_app::format_string_as_hex(std::string str) { unsigned char* smf_app::format_string_as_hex(std::string &str) {
unsigned int str_len = str.length(); unsigned int str_len = str.length();
char *data = (char*) malloc(str_len + 1); char *data = (char*) malloc(str_len + 1);
memset(data, 0, str_len + 1); memset(data, 0, str_len + 1);
...@@ -1094,8 +1104,8 @@ unsigned char* smf_app::format_string_as_hex(std::string str) { ...@@ -1094,8 +1104,8 @@ unsigned char* smf_app::format_string_as_hex(std::string str) {
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void smf_app::update_pdu_session_status(const scid_t scid, void smf_app::update_pdu_session_status(const scid_t &scid,
const pdu_session_status_e status) { const pdu_session_status_e &status) {
Logger::smf_app().info("Update PDU Session Status"); Logger::smf_app().info("Update PDU Session Status");
//get the smf context //get the smf context
...@@ -1150,8 +1160,8 @@ void smf_app::update_pdu_session_status(const scid_t scid, ...@@ -1150,8 +1160,8 @@ void smf_app::update_pdu_session_status(const scid_t scid,
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
void smf_app::update_pdu_session_upCnx_state(const scid_t scid, void smf_app::update_pdu_session_upCnx_state(const scid_t &scid,
const upCnx_state_e state) { const upCnx_state_e &state) {
Logger::smf_app().info("Update UpCnx_State"); Logger::smf_app().info("Update UpCnx_State");
//get the smf context //get the smf context
...@@ -1209,7 +1219,7 @@ void smf_app::timer_t3591_timeout(timer_id_t timer_id, uint64_t arg2_user) { ...@@ -1209,7 +1219,7 @@ void smf_app::timer_t3591_timeout(timer_id_t timer_id, uint64_t arg2_user) {
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
n2_sm_info_type_e smf_app::n2_sm_info_type_str2e(std::string n2_info_type) { n2_sm_info_type_e smf_app::n2_sm_info_type_str2e(std::string &n2_info_type) {
std::size_t number_of_types = n2_sm_info_type_e2str.size(); std::size_t number_of_types = n2_sm_info_type_e2str.size();
for (auto i = 0; i < number_of_types; ++i) { for (auto i = 0; i < number_of_types; ++i) {
if (n2_info_type.compare(n2_sm_info_type_e2str[i]) == 0) { if (n2_info_type.compare(n2_sm_info_type_e2str[i]) == 0) {
......
This diff is collapsed.
...@@ -86,7 +86,6 @@ class smf_qos_flow { ...@@ -86,7 +86,6 @@ class smf_qos_flow {
* @param void * @param void
* @return void * @return void
*/ */
void deallocate_ressources(); void deallocate_ressources();
/* /*
...@@ -129,7 +128,6 @@ class smf_pdu_session : public std::enable_shared_from_this<smf_pdu_session> { ...@@ -129,7 +128,6 @@ class smf_pdu_session : public std::enable_shared_from_this<smf_pdu_session> {
ipv4_address.s_addr = INADDR_ANY; ipv4_address.s_addr = INADDR_ANY;
ipv6_address = in6addr_any; ipv6_address = in6addr_any;
pdn_type = { }; pdn_type = { };
default_bearer.ebi = EPS_BEARER_IDENTITY_UNASSIGNED;
seid = 0; seid = 0;
up_fseid = { }; up_fseid = { };
qos_flows.clear(); qos_flows.clear();
...@@ -386,7 +384,6 @@ class smf_pdu_session : public std::enable_shared_from_this<smf_pdu_session> { ...@@ -386,7 +384,6 @@ class smf_pdu_session : public std::enable_shared_from_this<smf_pdu_session> {
struct in_addr ipv4_address; // IP Address(es): IPv4 address and/or IPv6 prefix struct in_addr ipv4_address; // IP Address(es): IPv4 address and/or IPv6 prefix
struct in6_addr ipv6_address; // IP Address(es): IPv4 address and/or IPv6 prefix struct in6_addr ipv6_address; // IP Address(es): IPv4 address and/or IPv6 prefix
pdn_type_t pdn_type; // IPv4, IPv6, IPv4v6 or Non-IP pdn_type_t pdn_type; // IPv4, IPv6, IPv4v6 or Non-IP
ebi_t default_bearer; //Default Bearer: Identifies the default bearer within the PDN connection by its EPS Bearer Id.
bool released; //(release access bearers request) bool released; //(release access bearers request)
...@@ -402,16 +399,17 @@ class smf_pdu_session : public std::enable_shared_from_this<smf_pdu_session> { ...@@ -402,16 +399,17 @@ class smf_pdu_session : public std::enable_shared_from_this<smf_pdu_session> {
uint32_t pdu_session_id; uint32_t pdu_session_id;
std::string amf_id; std::string amf_id;
std::map<uint8_t, smf_qos_flow> qos_flows; // QFI <-> QoS Flow
pfcp::qfi_t default_qfi;
std::map<uint8_t, QOSRulesIE> qos_rules; // QRI <-> QoS Rules
std::vector<uint8_t> qos_rules_to_be_synchronised;
std::vector<uint8_t> qos_rules_to_be_removed;
pdu_session_status_e pdu_session_status; pdu_session_status_e pdu_session_status;
upCnx_state_e upCnx_state; //N3 tunnel status (ACTIVATED, DEACTIVATED, ACTIVATING)
timer_id_t timer_T3590; timer_id_t timer_T3590;
timer_id_t timer_T3591; timer_id_t timer_T3591;
timer_id_t timer_T3592; timer_id_t timer_T3592;
upCnx_state_e upCnx_state; //N3 tunnel status (ACTIVATED, DEACTIVATED, ACTIVATING)
pfcp::qfi_t default_qfi; //Default QFI for this session
std::map<uint8_t, smf_qos_flow> qos_flows; // QFI <-> QoS Flow
std::map<uint8_t, QOSRulesIE> qos_rules; // QRI <-> QoS Rules
std::vector<uint8_t> qos_rules_to_be_synchronised;
std::vector<uint8_t> qos_rules_to_be_removed;
//5GSM parameters and capabilities //5GSM parameters and capabilities
uint8_t maximum_number_of_supported_packet_filters; uint8_t maximum_number_of_supported_packet_filters;
//TODO: 5GSM Capability (section 9.11.4.1@3GPP TS 24.501 V16.1.0) //TODO: 5GSM Capability (section 9.11.4.1@3GPP TS 24.501 V16.1.0)
...@@ -446,6 +444,7 @@ class session_management_subscription { ...@@ -446,6 +444,7 @@ class session_management_subscription {
*/ */
void find_dnn_configuration( void find_dnn_configuration(
std::string dnn, std::shared_ptr<dnn_configuration_t> &dnn_configuration); std::string dnn, std::shared_ptr<dnn_configuration_t> &dnn_configuration);
private: private:
snssai_t single_nssai; snssai_t single_nssai;
std::map<std::string, std::shared_ptr<dnn_configuration_t>> dnn_configurations; //dnn <->dnn_configuration std::map<std::string, std::shared_ptr<dnn_configuration_t>> dnn_configurations; //dnn <->dnn_configuration
...@@ -753,19 +752,19 @@ class smf_context : public std::enable_shared_from_this<smf_context> { ...@@ -753,19 +752,19 @@ class smf_context : public std::enable_shared_from_this<smf_context> {
const snssai_t &snssai, const std::string &dnn); const snssai_t &snssai, const std::string &dnn);
private: private:
std::vector<std::shared_ptr<dnn_context>> dnns; std::vector<std::shared_ptr<dnn_context>> dnns;
imsi_t imsi; // IMSI (International Mobile Subscriber Identity) is the subscriber permanent identity. imsi_t imsi; // IMSI (International Mobile Subscriber Identity) is the subscriber permanent identity.
bool imsi_unauthenticated_indicator; // This is an IMSI indicator to show the IMSI is unauthenticated. bool imsi_unauthenticated_indicator; // This is an IMSI indicator to show the IMSI is unauthenticated.
// TO BE CHECKED me_identity_t me_identity; // Mobile Equipment Identity (e.g. IMEI/IMEISV). // TO BE CHECKED me_identity_t me_identity; // Mobile Equipment Identity (e.g. IMEI/IMEISV).
msisdn_t msisdn; // The basic MSISDN of the UE. The presence is dictated by its storage in the HSS. msisdn_t msisdn; // The basic MSISDN of the UE. The presence is dictated by its storage in the HSS.
std::vector<std::shared_ptr<smf_procedure>> pending_procedures; std::vector<std::shared_ptr<smf_procedure>> pending_procedures;
// Big recursive lock
mutable std::recursive_mutex m_context;
// snssai-sst <-> session management subscription // snssai-sst <-> session management subscription
std::map<uint8_t, std::shared_ptr<session_management_subscription>> dnn_subscriptions; std::map<uint8_t, std::shared_ptr<session_management_subscription>> dnn_subscriptions;
supi_t supi; supi_t supi;
scid_t scid; scid_t scid; //SM Context ID
// Big recursive lock
mutable std::recursive_mutex m_context;
}; };
} }
......
...@@ -39,9 +39,6 @@ ...@@ -39,9 +39,6 @@
#include "logger.hpp" #include "logger.hpp"
#include "smf_config.hpp" #include "smf_config.hpp"
#define UDM_CURL_TIMEOUT_MS 100L
#define UDM_NUMBER_RETRIES 3
using namespace smf; using namespace smf;
using namespace std; using namespace std;
using json = nlohmann::json; using json = nlohmann::json;
......
...@@ -47,9 +47,26 @@ class smf_n10 { ...@@ -47,9 +47,26 @@ class smf_n10 {
smf_n10(); smf_n10();
smf_n10(smf_n10 const&) = delete; smf_n10(smf_n10 const&) = delete;
void operator=(smf_n10 const&) = delete; void operator=(smf_n10 const&) = delete;
/*
* Get SM subscription data from UDM
* @param [supi64_t &] supi
* @param [std::string &] dnn
* @param [snssai_t &] snssai
* @param [std::shared_ptr<session_management_subscription>] subscription
* @return bool: True if successful, otherwise false
*
*/
bool get_sm_data( bool get_sm_data(
supi64_t &supi, std::string &dnn, snssai_t &snssai, supi64_t &supi, std::string &dnn, snssai_t &snssai,
std::shared_ptr<session_management_subscription> subscription); std::shared_ptr<session_management_subscription> subscription);
/*
* Subscribe to be notify from UDM
* @param []
* @return void
*
*/
void subscribe_sm_data(); void subscribe_sm_data();
}; };
......
...@@ -54,7 +54,7 @@ class smf_n11 { ...@@ -54,7 +54,7 @@ class smf_n11 {
/* /*
* Send N1N2 Message Transfer Request to AMF * Send N1N2 Message Transfer Request to AMF
* @param [std::shared_ptr<itti_n11_create_sm_context_response>] sm_context_res: Content of message to be sent * @param [std::shared_ptr<itti_n11_create_sm_context_response>] sm_context_res: Content of message to be sent
* * @return void
*/ */
void send_n1n2_message_transfer_request( void send_n1n2_message_transfer_request(
std::shared_ptr<itti_n11_create_sm_context_response> sm_context_res); std::shared_ptr<itti_n11_create_sm_context_response> sm_context_res);
...@@ -62,7 +62,7 @@ class smf_n11 { ...@@ -62,7 +62,7 @@ class smf_n11 {
/* /*
* Send N1N2 Message Transfer Request to AMF * Send N1N2 Message Transfer Request to AMF
* @param [std::shared_ptr<itti_nx_trigger_pdu_session_modification>] sm_context_res: Content of message to be sent * @param [std::shared_ptr<itti_nx_trigger_pdu_session_modification>] sm_context_res: Content of message to be sent
* * @return void
*/ */
void send_n1n2_message_transfer_request( void send_n1n2_message_transfer_request(
std::shared_ptr<itti_nx_trigger_pdu_session_modification> sm_context_res); std::shared_ptr<itti_nx_trigger_pdu_session_modification> sm_context_res);
...@@ -70,16 +70,15 @@ class smf_n11 { ...@@ -70,16 +70,15 @@ class smf_n11 {
/* /*
* Send update session response to AMF * Send update session response to AMF
* @param [std::shared_ptr<itti_n11_update_sm_context_response> sm_context_res] sm_context_res * @param [std::shared_ptr<itti_n11_update_sm_context_response> sm_context_res] sm_context_res
* * @return void
*/ */
void send_pdu_session_update_sm_context_response( void send_pdu_session_update_sm_context_response(
std::shared_ptr<itti_n11_update_sm_context_response> sm_context_res); std::shared_ptr<itti_n11_update_sm_context_response> sm_context_res);
/* /*
* Send N1N2 Message Transfer Request to AMF * Send N1N2 Message Transfer Request to AMF
* @param [std::shared_ptr<itti_n11_modify_session_request_smf_requested>] sm_context_mod: Content of message to be sent * @param [std::shared_ptr<itti_n11_modify_session_request_smf_requested>] sm_context_mod: Content of message to be sent
* * @return void
*/ */
void send_n1n2_message_transfer_request( void send_n1n2_message_transfer_request(
std::shared_ptr<itti_n11_modify_session_request_smf_requested> sm_context_mod); std::shared_ptr<itti_n11_modify_session_request_smf_requested> sm_context_mod);
...@@ -89,7 +88,7 @@ class smf_n11 { ...@@ -89,7 +88,7 @@ class smf_n11 {
* @param [Pistache::Http::ResponseWriter] httpResponse * @param [Pistache::Http::ResponseWriter] httpResponse
* @param [ oai::smf_server::model::SmContextUpdateError] SmContextUpdateError * @param [ oai::smf_server::model::SmContextUpdateError] SmContextUpdateError
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* * @return void
*/ */
void send_pdu_session_update_sm_context_response( void send_pdu_session_update_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -101,7 +100,7 @@ class smf_n11 { ...@@ -101,7 +100,7 @@ class smf_n11 {
* @param [Pistache::Http::ResponseWriter] httpResponse * @param [Pistache::Http::ResponseWriter] httpResponse
* @param [ oai::smf_server::model::SmContextUpdatedData] smContextUpdatedData * @param [ oai::smf_server::model::SmContextUpdatedData] smContextUpdatedData
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* * @return void
*/ */
void send_pdu_session_update_sm_context_response( void send_pdu_session_update_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -113,7 +112,7 @@ class smf_n11 { ...@@ -113,7 +112,7 @@ class smf_n11 {
* @param [Pistache::Http::ResponseWriter] httpResponse * @param [Pistache::Http::ResponseWriter] httpResponse
* @param [ oai::smf_server::model::SmContextCreateError] smContextCreateError * @param [ oai::smf_server::model::SmContextCreateError] smContextCreateError
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* * @return void
*/ */
void send_pdu_session_create_sm_context_response( void send_pdu_session_create_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -126,7 +125,7 @@ class smf_n11 { ...@@ -126,7 +125,7 @@ class smf_n11 {
* @param [ oai::smf_server::model::SmContextCreateError] smContextCreateError * @param [ oai::smf_server::model::SmContextCreateError] smContextCreateError
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* @param [std::string] n1_sm_msg, N1 SM message content * @param [std::string] n1_sm_msg, N1 SM message content
* * @return void
*/ */
void send_pdu_session_create_sm_context_response( void send_pdu_session_create_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -139,7 +138,7 @@ class smf_n11 { ...@@ -139,7 +138,7 @@ class smf_n11 {
* @param [ oai::smf_server::model::SmContextUpdateError] smContextUpdateError * @param [ oai::smf_server::model::SmContextUpdateError] smContextUpdateError
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* @param [std::string] n1_sm_msg, N1 SM message content * @param [std::string] n1_sm_msg, N1 SM message content
* * @return void
*/ */
void send_pdu_session_update_sm_context_response( void send_pdu_session_update_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -151,7 +150,7 @@ class smf_n11 { ...@@ -151,7 +150,7 @@ class smf_n11 {
* @param [Pistache::Http::ResponseWriter] httpResponse * @param [Pistache::Http::ResponseWriter] httpResponse
* @param [ oai::smf_server::model::SmContextCreatedData] smContextCreatedData * @param [ oai::smf_server::model::SmContextCreatedData] smContextCreatedData
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* * @return void
*/ */
void send_pdu_session_create_sm_context_response( void send_pdu_session_create_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -162,7 +161,7 @@ class smf_n11 { ...@@ -162,7 +161,7 @@ class smf_n11 {
* Send release session response to AMF * Send release session response to AMF
* @param [Pistache::Http::ResponseWriter] httpResponse * @param [Pistache::Http::ResponseWriter] httpResponse
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* * @return void
*/ */
void send_pdu_session_release_sm_context_response( void send_pdu_session_release_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::Code code); Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::Code code);
...@@ -172,7 +171,7 @@ class smf_n11 { ...@@ -172,7 +171,7 @@ class smf_n11 {
* @param [Pistache::Http::ResponseWriter] httpResponse * @param [Pistache::Http::ResponseWriter] httpResponse
* @param [oai::smf_server::model::ProblemDetails] problem * @param [oai::smf_server::model::ProblemDetails] problem
* @param [Pistache::Http::Code] code, response code * @param [Pistache::Http::Code] code, response code
* * @return void
*/ */
void send_pdu_session_release_sm_context_response( void send_pdu_session_release_sm_context_response(
Pistache::Http::ResponseWriter &httpResponse, Pistache::Http::ResponseWriter &httpResponse,
...@@ -186,7 +185,7 @@ class smf_n11 { ...@@ -186,7 +185,7 @@ class smf_n11 {
* @param [std::string] boundary: Boundary of multipart/related msg * @param [std::string] boundary: Boundary of multipart/related msg
* @param [std::string] n1_message: N1 (NAS) part * @param [std::string] n1_message: N1 (NAS) part
* @param [std::string] n2_message: N2 (NGAP) part * @param [std::string] n2_message: N2 (NGAP) part
* * @return void
*/ */
void create_multipart_related_content(std::string &body, void create_multipart_related_content(std::string &body,
std::string &json_part, std::string &json_part,
...@@ -201,7 +200,7 @@ class smf_n11 { ...@@ -201,7 +200,7 @@ class smf_n11 {
* @param [std::string] boundary: Boundary of multipart/related msg * @param [std::string] boundary: Boundary of multipart/related msg
* @param [std::string] message: N1 (NAS) or N2 (NGAP) part * @param [std::string] message: N1 (NAS) or N2 (NGAP) part
* @param [uint8_t] content_type: 1 for NAS content, else NGAP content * @param [uint8_t] content_type: 1 for NAS content, else NGAP content
* * @return void
*/ */
void create_multipart_related_content( void create_multipart_related_content(
std::string &body, std::string &json_part, std::string &boundary, std::string &body, std::string &json_part, std::string &boundary,
......
...@@ -71,7 +71,6 @@ class smf_procedure { ...@@ -71,7 +71,6 @@ class smf_procedure {
virtual itti_msg_type_t get_procedure_type() { virtual itti_msg_type_t get_procedure_type() {
return ITTI_MSG_TYPE_NONE; return ITTI_MSG_TYPE_NONE;
} }
//virtual void handle_itti_msg (itti_n4_session_establishment_response& resp) {}
virtual void handle_itti_msg(itti_n4_session_establishment_response &resp, virtual void handle_itti_msg(itti_n4_session_establishment_response &resp,
std::shared_ptr<smf::smf_context> pc) { std::shared_ptr<smf::smf_context> pc) {
} }
...@@ -81,7 +80,6 @@ class smf_procedure { ...@@ -81,7 +80,6 @@ class smf_procedure {
virtual void handle_itti_msg(itti_n4_session_deletion_response &resp, virtual void handle_itti_msg(itti_n4_session_deletion_response &resp,
std::shared_ptr<smf::smf_context> pc) { std::shared_ptr<smf::smf_context> pc) {
} }
//virtual void handle_itti_msg (itti_s5s8_downlink_data_notification_acknowledge& resp) {}
}; };
class smf_qos_flow; class smf_qos_flow;
...@@ -100,10 +98,7 @@ class n4_session_restore_procedure : public smf_procedure { ...@@ -100,10 +98,7 @@ class n4_session_restore_procedure : public smf_procedure {
} }
int run(); int run();
//void handle_itti_msg (itti_n4_session_establishment_response& resp);
//~n4_session_restore_procedure() {} //~n4_session_restore_procedure() {}
std::set<pfcp::fseid_t> pending_sessions; std::set<pfcp::fseid_t> pending_sessions;
std::set<pfcp::fseid_t> restored_sessions; std::set<pfcp::fseid_t> restored_sessions;
}; };
...@@ -121,10 +116,23 @@ class session_create_sm_context_procedure : public smf_procedure { ...@@ -121,10 +116,23 @@ class session_create_sm_context_procedure : public smf_procedure {
n11_trigger() { n11_trigger() {
} }
/*
* Execute N11 Create SM Context Request procedure
* @param [itti_n11_create_sm_context_request] req
* @param [itti_n11_create_sm_context_response] resp
* @param [std::shared_ptr<smf::smf_context>] sc: smf context
* @return
*/
int run(std::shared_ptr<itti_n11_create_sm_context_request> req, int run(std::shared_ptr<itti_n11_create_sm_context_request> req,
std::shared_ptr<itti_n11_create_sm_context_response> resp, std::shared_ptr<itti_n11_create_sm_context_response> resp,
std::shared_ptr<smf::smf_context> sc); std::shared_ptr<smf::smf_context> sc);
/*
* Handle N4 Session Establishment Response from UPF
* @param [itti_n4_session_establishment_response] resp
* @param [std::shared_ptr<smf::smf_context>] sc smf context
* @return void
*/
void handle_itti_msg(itti_n4_session_establishment_response &resp, void handle_itti_msg(itti_n4_session_establishment_response &resp,
std::shared_ptr<smf::smf_context> sc); std::shared_ptr<smf::smf_context> sc);
...@@ -149,11 +157,19 @@ class session_update_sm_context_procedure : public smf_procedure { ...@@ -149,11 +157,19 @@ class session_update_sm_context_procedure : public smf_procedure {
session_procedure_type() { session_procedure_type() {
} }
/*
* Execute N11 Update SM Context Request procedure
* @param [itti_n11_update_sm_context_request] req
* @param [itti_n11_update_sm_context_response] resp
* @param [std::shared_ptr<smf::smf_context>] sc: smf context
* @return
*/
int run(std::shared_ptr<itti_n11_update_sm_context_request> req, int run(std::shared_ptr<itti_n11_update_sm_context_request> req,
std::shared_ptr<itti_n11_update_sm_context_response> resp, std::shared_ptr<itti_n11_update_sm_context_response> resp,
std::shared_ptr<smf::smf_context> sc); std::shared_ptr<smf::smf_context> sc);
/* /*
* Handle N4 modification response from UPF * Handle N4 Session Modification Response from UPF
* @param [itti_n4_session_modification_response] resp * @param [itti_n4_session_modification_response] resp
* @param [std::shared_ptr<smf::smf_context>] sc smf context * @param [std::shared_ptr<smf::smf_context>] sc smf context
* @return void * @return void
...@@ -184,11 +200,19 @@ class session_release_sm_context_procedure : public smf_procedure { ...@@ -184,11 +200,19 @@ class session_release_sm_context_procedure : public smf_procedure {
n11_trigger() { n11_trigger() {
} }
/*
* Execute N11 Release SM Context Request procedure
* @param [itti_n11_release_sm_context_request] req
* @param [itti_n11_release_sm_context_response] resp
* @param [std::shared_ptr<smf::smf_context>] sc: smf context
* @return
*/
int run(std::shared_ptr<itti_n11_release_sm_context_request> req, int run(std::shared_ptr<itti_n11_release_sm_context_request> req,
std::shared_ptr<itti_n11_release_sm_context_response> resp, std::shared_ptr<itti_n11_release_sm_context_response> resp,
std::shared_ptr<smf::smf_context> sc); std::shared_ptr<smf::smf_context> sc);
/* /*
* Handle N4 modification response from UPF * Handle N4 Session Modification Response from UPF
* @param [itti_n4_session_modification_response] resp * @param [itti_n4_session_modification_response] resp
* @param [std::shared_ptr<smf::smf_context>] sc smf context * @param [std::shared_ptr<smf::smf_context>] sc smf context
* @return void * @return void
......
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