Commit af0865a5 authored by liuyu's avatar liuyu

decouple pdu_session_context without test

parent ffa3bb5b
......@@ -8,6 +8,66 @@
"istream": "cpp",
"functional": "cpp",
"tuple": "cpp",
"utility": "cpp"
"utility": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"csignal": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"atomic": "cpp",
"strstream": "cpp",
"bitset": "cpp",
"chrono": "cpp",
"codecvt": "cpp",
"complex": "cpp",
"condition_variable": "cpp",
"cstdint": "cpp",
"deque": "cpp",
"forward_list": "cpp",
"list": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"iterator": "cpp",
"map": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"regex": "cpp",
"set": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"type_traits": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"ostream": "cpp",
"shared_mutex": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cfenv": "cpp",
"cinttypes": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"valarray": "cpp"
}
}
\ No newline at end of file
......@@ -27,7 +27,8 @@
*/
#include "amf_app.hpp"
#include <boost/uuid/random_generator.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <cstdlib>
#include <iostream>
#include <stdexcept>
......@@ -45,6 +46,7 @@
using namespace ngap;
using namespace nas;
//using namespace amf ;
using namespace amf_application;
using namespace config;
......@@ -437,3 +439,199 @@ bool amf_app::generate_5g_guti(
golbal_tmsi++;
return true;
}
// void amf_app::generate_amf_profile() {
// // TODO: remove hardcoded values
// // generate UUID
// generate_uuid();
// nf_instance_profile.set_nf_instance_id(amf_instance_id);
// nf_instance_profile.set_nf_instance_name("OAI-AMF");
// nf_instance_profile.set_nf_type("SMF");
// nf_instance_profile.set_nf_status("REGISTERED");
// nf_instance_profile.set_nf_heartBeat_timer(50);
// nf_instance_profile.set_nf_priority(1);
// nf_instance_profile.set_nf_capacity(100);
// nf_instance_profile.add_nf_ipv4_addresses(amf_cfg.n11.addr4);
// // // NF services
// // nf_service_t nf_service = {};
// // nf_service.service_instance_id = "nsmf-pdusession";
// // nf_service.service_name = "nsmf-pdusession";
// // nf_service_version_t version = {};
// // version.api_version_in_uri = "v1";
// // version.api_full_version = "1.0.0"; // TODO: to be updated
// // nf_service.versions.push_back(version);
// // nf_service.scheme = "http";
// // nf_service.nf_service_status = "REGISTERED";
// // // IP Endpoint
// // ip_endpoint_t endpoint = {};
// // std::vector<struct in_addr> addrs;
// // nf_instance_profile.get_nf_ipv4_addresses(addrs);
// // endpoint.ipv4_address = addrs[0]; // TODO: use first IP ADDR for now
// // endpoint.transport = "TCP";
// // endpoint.port = smf_cfg.sbi.port;
// // nf_service.ip_endpoints.push_back(endpoint);
// // nf_instance_profile.add_nf_service(nf_service);
// // // TODO: custom info
// // int i = 0;
// // for (auto sms : smf_cfg.session_management_subscription) {
// // if (i < smf_cfg.num_session_management_subscription)
// // i++;
// // else
// // break;
// // // SNSSAIS
// // snssai_t snssai = {};
// // snssai.sD = sms.single_nssai.sD;
// // snssai.sST = sms.single_nssai.sST;
// // // Verify if this SNSSAI exist
// // std::vector<snssai_t> ss = {};
// // nf_instance_profile.get_nf_snssais(ss);
// // bool found = false;
// // for (auto it : ss) {
// // if ((it.sD == snssai.sD) and (it.sST == snssai.sST)) {
// // found = true;
// // break;
// // }
// // }
// // if (!found) nf_instance_profile.add_snssai(snssai);
// // // SMF info
// // dnn_smf_info_item_t dnn_item = {.dnn = sms.dnn};
// // snssai_smf_info_item_t smf_info_item = {};
// // smf_info_item.dnn_smf_info_list.push_back(dnn_item);
// // smf_info_item.snssai.sD = sms.single_nssai.sD;
// // smf_info_item.snssai.sST = sms.single_nssai.sST;
// // nf_instance_profile.add_smf_info_item(smf_info_item);
// // }
// // // Display the profile
// // nf_instance_profile.display();
// }
// //---------------------------------------------------------------------------------------------
// void amf_app::register_to_nrf() {
// // Create a NF profile to this instance
// generate_amf_profile();
// // Send request to N11 to send NF registration to NRF
// //trigger_nf_registration_request();
// }
// //------------------------------------------------------------------------------
// void amf_app::generate_uuid() {
// amf_instance_id = to_string(boost::uuids::random_generator()());
// }
// //------------------------------------------------------------------------------
// // void smf_app::trigger_nf_registration_request() {
// // Logger::smf_app().debug(
// // "Send ITTI msg to N11 task to trigger the registration request to NRF");
// // std::shared_ptr<itti_n11_register_nf_instance_request> itti_msg =
// // std::make_shared<itti_n11_register_nf_instance_request>(
// // TASK_SMF_APP, TASK_SMF_SBI);
// // itti_msg->profile = nf_instance_profile;
// // int ret = itti_inst->send_msg(itti_msg);
// // if (RETURNok != ret) {
// // Logger::smf_app().error(
// // "Could not send ITTI message %s to task TASK_SMF_SBI",
// // itti_msg->get_msg_name());
// // }
// // }
// void amf_app::register_nf_instance() {
// Logger::amf_app().debug(
// "Send NF Instance Registration to NRF ");
// nlohmann::json json_data = {};
// msg->profile.to_json(json_data);
// std::string url =
// std::string(inet_ntoa(*((struct in_addr*) &smf_cfg.nrf_addr.ipv4_addr))) +
// ":" + std::to_string(smf_cfg.nrf_addr.port) + NNRF_NFM_BASE +
// smf_cfg.nrf_addr.api_version + NNRF_NF_REGISTER_URL +
// msg->profile.get_nf_instance_id();
// Logger::smf_sbi().debug(
// "Send NF Instance Registration to NRF, NRF URL %s", url.c_str());
// std::string body = json_data.dump();
// Logger::smf_sbi().debug(
// "Send NF Instance Registration to NRF, msg body: \n %s", body.c_str());
// curl_global_init(CURL_GLOBAL_ALL);
// CURL* curl = curl = curl_easy_init();
// if (curl) {
// CURLcode res = {};
// struct curl_slist* headers = nullptr;
// // headers = curl_slist_append(headers, "charsets: utf-8");
// headers = curl_slist_append(headers, "content-type: application/json");
// curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
// curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
// curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
// curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, NRF_CURL_TIMEOUT_MS);
// if (msg->http_version == 2) {
// curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
// // we use a self-signed test server, skip verification during debugging
// curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
// curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
// curl_easy_setopt(
// curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE);
// }
// // Response information.
// long httpCode = {0};
// std::unique_ptr<std::string> httpData(new std::string());
// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &callback);
// curl_easy_setopt(curl, CURLOPT_WRITEDATA, httpData.get());
// curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, body.length());
// curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str());
// res = curl_easy_perform(curl);
// curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
// Logger::smf_sbi().debug(
// "NF Instance Registration, response from NRF, HTTP Code: %d", httpCode);
// if (static_cast<http_response_codes_e>(httpCode) ==
// http_response_codes_e::HTTP_RESPONSE_CODE_CREATED) {
// json response_data = {};
// try {
// response_data = json::parse(*httpData.get());
// } catch (json::exception& e) {
// Logger::smf_sbi().warn(
// "NF Instance Registration, could not parse json from the NRF "
// "response");
// }
// Logger::smf_sbi().debug(
// "NF Instance Registration, response from NRF, json data: \n %s",
// response_data.dump().c_str());
// // send response to APP to process
// std::shared_ptr<itti_n11_register_nf_instance_response> itti_msg =
// std::make_shared<itti_n11_register_nf_instance_response>(
// TASK_SMF_SBI, TASK_SMF_APP);
// itti_msg->http_response_code = httpCode;
// itti_msg->http_version = msg->http_version;
// Logger::smf_app().debug("Registered SMF profile (from NRF)");
// itti_msg->profile.from_json(response_data);
// int ret = itti_inst->send_msg(itti_msg);
// if (RETURNok != ret) {
// Logger::smf_sbi().error(
// "Could not send ITTI message %s to task TASK_SMF_APP",
// itti_msg->get_msg_name());
// }
// } else {
// Logger::smf_sbi().warn(
// "NF Instance Registration, could not get response from NRF");
// }
// curl_slist_free_all(headers);
// curl_easy_cleanup(curl);
// }
// curl_global_cleanup();
// }
\ No newline at end of file
......@@ -36,9 +36,9 @@
#include "amf_module_from_config.hpp"
#include "itti_msg_amf_app.hpp"
#include "ue_context.hpp"
//#include "amf_profile.hpp"
using namespace config;
//using namespace amf ;
static uint32_t amf_app_ue_ngap_id_generator = 1;
namespace amf_application {
......@@ -80,6 +80,14 @@ class amf_app {
bool generate_5g_guti(
uint32_t ranid, long amfid, std::string& mcc, std::string& mnc,
uint32_t& tmsi);
// void register_to_nrf();
// void generate_uuid();
// void generate_amf_profile();
// void register_nf_instance();
// amf_profile nf_instance_profile; // SMF profile
// std::string amf_instance_id; // SMF instance id
};
} // namespace amf_application
......
This diff is collapsed.
This diff is collapsed.
......@@ -1094,12 +1094,26 @@ void amf_n2::handle_itti_message(
string supi = "imsi-" + nc.get()->imsi;
Logger::amf_n2().debug("SUPI (%s)", supi.c_str());
std::shared_ptr<pdu_session_context> psc;
if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
psc = amf_n11_inst->supi_to_pdu_ctx(supi);
} else {
Logger::amf_n2().warn(
"Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
//***************************stateless
pdu_session_context *psc1 = new pdu_session_context();
// nlohmann::json udsf_response;
udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
return;
}
Logger::amf_n2().debug("udsf_response: %s", udsf_response.dump().c_str());
psc1->pdu_session_context_from_json(udsf_response);
psc = std::shared_ptr<pdu_session_context>(psc1);
//***************************stateless
// if (amf_n11_inst->is_supi_to_pdu_ctx(supi))
// psc = amf_n11_inst->supi_to_pdu_ctx(supi);
// } else {
// Logger::amf_n2().warn(
// "Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
// }
// item.s_nssai.sst = std::to_string(psc.get()->snssai.sST);
// item.s_nssai.sd = psc.get()->snssai.sD;
......@@ -1481,8 +1495,23 @@ void amf_n2::handle_itti_message(itti_handover_required& itti_msg) {
// handoverrequest->setSourceToTarget_TransparentContainer(sourceTotarget);
string supi = "imsi-" + nc.get()->imsi;
std::shared_ptr<pdu_session_context> psc =
amf_n11_inst->supi_to_pdu_ctx(supi);
std::shared_ptr<pdu_session_context> psc;
// =
// amf_n11_inst->supi_to_pdu_ctx(supi);
//***************************stateless
pdu_session_context *psc1 = new pdu_session_context();
nlohmann::json udsf_response;
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
return;
}
Logger::amf_n2().debug("udsf_response: %s", udsf_response.dump().c_str());
psc1->pdu_session_context_from_json(udsf_response);
psc = std::shared_ptr<pdu_session_context>(psc1);
//***************************stateless
std::vector<PDUSessionResourceSetupRequestItem_t> list;
PDUSessionResourceSetupRequestItem_t item;
item.pduSessionId = psc.get()->pdu_session_id;
......
This diff is collapsed.
This diff is collapsed.
......@@ -37,3 +37,14 @@ pdu_session_context::pdu_session_context() {
//------------------------------------------------------------------------------
pdu_session_context::~pdu_session_context() {}
bool pdu_session_context::pdu_session_context_from_json(nlohmann::json j)
{
//std::shared_ptr<gnb_context> gc1;
// printf("gnbname-%s\n",gnb_name.c_str());
// printf("globalgnbid-%d\n",globalRanNodeId);
// printf("next stream-%d\n",next_sctp_stream);
return true;
}
\ No newline at end of file
......@@ -32,12 +32,12 @@
#include <string>
#include "bstrlib.h"
#include "amf.hpp"
#include <nlohmann/json.hpp>
class pdu_session_context {
public:
pdu_session_context();
~pdu_session_context();
bool pdu_session_context_from_json(nlohmann::json j);
uint32_t ran_ue_ngap_id;
long amf_ue_ngap_id;
uint8_t req_type;
......@@ -53,5 +53,7 @@ class pdu_session_context {
snssai_t snssai;
plmn_t plmn;
std::string smf_context_location;
//15
};
#endif
......@@ -44,7 +44,7 @@
#include "InitialContextSetupResponse.hpp"
#include "pdu_session_context.hpp"
#include "nas_context.hpp"
#include "amf_n2.hpp"
using namespace sctp;
using namespace ngap;
using namespace amf_application;
......@@ -52,7 +52,7 @@ using namespace amf_application;
extern itti_mw* itti_inst;
extern amf_n1* amf_n1_inst;
extern amf_n11* amf_n11_inst;
extern amf_n2* amf_n2_inst;
typedef int (*ngap_message_decoded_callback)(
const sctp_assoc_id_t assoc_id, const sctp_stream_id_t stream,
struct Ngap_NGAP_PDU* message_p);
......@@ -387,14 +387,42 @@ int ngap_amf_handle_pdu_session_resource_setup_response(
amf_n1_inst->amf_ue_id_2_nas_context(amf_ue_ngap_id);
string supi = "imsi-" + nct.get()->imsi;
std::shared_ptr<pdu_session_context> psc;
if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
psc = amf_n11_inst->supi_to_pdu_ctx(supi);
if (!psc) {
Logger::amf_n1().error("connot get pdu_session_context");
return 0;
}
//***************************stateless
pdu_session_context *psc1 = new pdu_session_context();
nlohmann::json udsf_response;
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
return 0 ;
}
Logger::amf_n2().debug("udsf_response: %s", udsf_response.dump().c_str());
psc1->pdu_session_context_from_json(udsf_response);
psc = std::shared_ptr<pdu_session_context>(psc1);
//***************************stateless
// if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
// psc = amf_n11_inst->supi_to_pdu_ctx(supi);
// if (!psc) {
// Logger::amf_n1().error("connot get pdu_session_context");
// return 0;
// }
// }
psc.get()->isn2sm_avaliable = false;
std::string udsf_put_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
nlohmann::json udsf_put_pdu_session_context;
//nlohmann::json udsf_response;
udsf_put_pdu_session_context["meta"] ["tags"] = {
{"RECORD_ID",nlohmann::json::array({supi})},
{"from_nf_ID",nlohmann::json::array({"AMF_1234"})}
} ;
udsf_put_pdu_session_context["blocks"] = nlohmann::json::array({
{{"Content-ID", "isn2sm_avaliable"},{"Content-Type", "varchar(32)"},{"content",to_string(psc.get()->isn2sm_avaliable)}}
});
std::string json_part = udsf_put_pdu_session_context.dump();
amf_n2_inst->curl_http_client_udsf(udsf_put_url,json_part,"PUT",udsf_response);
Logger::ngap().debug(
"receive pdu session resource setup response fail(multi pdu session "
"id),set pdu session context isn2sm_avaliable = false");
......
......@@ -14,7 +14,7 @@
#include "N1N2MessageCollectionDocumentApiImpl.h"
#include "itti.hpp"
//#include "itti_msg_n2.hpp"
#include "amf_n2.hpp"
#include "amf_n11.hpp"
//#include "amf_n2.hpp"
......@@ -24,12 +24,12 @@
using namespace amf_application;
using namespace ngap;
extern void octet_stream_2_hex_stream(uint8_t *buf, int len, std::string &out);
extern void msg_str_2_msg_hex(std::string msg, bstring& b);
extern void convert_string_2_hex(std::string& input, std::string& output);
extern itti_mw* itti_inst;
extern amf_n11* amf_n11_inst;
extern amf_n2* amf_n2_inst;
//extern amf_n2* amf_n2_inst;
extern void print_buffer(
......@@ -88,12 +88,26 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
Logger::amf_server().debug(
"Key for PDU Session context: SUPI (%s)", supi.c_str());
std::shared_ptr<pdu_session_context> psc;
if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
psc = amf_n11_inst->supi_to_pdu_ctx(supi);
} else {
Logger::amf_server().error(
"Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
//***************************stateless
pdu_session_context *psc1 = new pdu_session_context();
nlohmann::json udsf_response;
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
if(!amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_n2().error("No existing pdu_session_context with assoc_id ");
return;
}
Logger::amf_n2().debug("udsf_response: %s", udsf_response.dump().c_str());
psc1->pdu_session_context_from_json(udsf_response);
psc = std::shared_ptr<pdu_session_context>(psc1);
//***************************stateless
// if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
// psc = amf_n11_inst->supi_to_pdu_ctx(supi);
// } else {
// Logger::amf_server().error(
// "Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
// }
bstring n1sm;
msg_str_2_msg_hex(
......@@ -107,6 +121,28 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
psc.get()->isn1sm_avaliable = true;
psc.get()->n2sm = n2sm;
psc.get()->isn2sm_avaliable = true;
string n1sm_udsf;
string n2sm_udsf;
octet_stream_2_hex_stream((uint8_t*) bdata(psc.get()->n1sm), blength(psc.get()->n1sm), n1sm_udsf);
octet_stream_2_hex_stream((uint8_t*) bdata(psc.get()->n2sm), blength(psc.get()->n2sm), n2sm_udsf);
std::string udsf_put_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
nlohmann::json udsf_put_pdu_session_context;
//nlohmann::json udsf_response;
udsf_put_pdu_session_context["meta"] ["tags"] = {
{"RECORD_ID",nlohmann::json::array({supi})},
{"from_nf_ID",nlohmann::json::array({"AMF_1234"})}
} ;
udsf_put_pdu_session_context["blocks"] = nlohmann::json::array({
{{"Content-ID", "n2sm"},{"Content-Type", "varchar(32)"},{"content",n2sm_udsf}},
{{"Content-ID", "isn2sm_avaliable"},{"Content-Type", "varchar(32)"},{"content",to_string(psc.get()->isn2sm_avaliable)}},
{{"Content-ID", "n1sm"},{"Content-Type", "varchar(32)"},{"content", n1sm_udsf}},
{{"Content-ID", "isn1sm_avaliable"},{"Content-Type", "varchar(32)"},{"content", to_string(psc.get()->isn1sm_avaliable)}},
});
std::string json_part = udsf_put_pdu_session_context.dump();
amf_n2_inst->curl_http_client_udsf(udsf_put_url,json_part,"PUT",udsf_response);
Logger::amf_server().debug(
"n2sm size in amf_server(%d)", blength(psc.get()->n2sm));
......
#include "TestSignallingApiImpl.h"
#include "itti.hpp"
#include "amf_n2.hpp"
#include "amf_n11.hpp"
#include "pdu_session_context.hpp"
......@@ -9,7 +9,7 @@ using namespace amf_application;
extern itti_mw* itti_inst;
extern amf_n11* amf_n11_inst;
extern amf_n2* amf_n2_inst;
namespace oai {
namespace amf {
namespace api {
......@@ -33,9 +33,15 @@ void TestSignallingApiImpl::
Logger::amf_server().debug(
"Key for PDU Session context: SUPI (%s)", supi.c_str());
std::shared_ptr<pdu_session_context> psc;
if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
psc = amf_n11_inst->supi_to_pdu_ctx(supi);
//***************************stateless
pdu_session_context *psc1 = new pdu_session_context();
nlohmann::json udsf_response;
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
if(amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_server().debug("udsf_response: %s", udsf_response.dump().c_str());
psc1->pdu_session_context_from_json(udsf_response);
psc = std::shared_ptr<pdu_session_context>(psc1);
itti_test_signalling_network_initiated_deregistration* itti_msg =
new itti_test_signalling_network_initiated_deregistration(AMF_SERVER, TASK_AMF_APP);
......@@ -50,11 +56,35 @@ void TestSignallingApiImpl::
"Could not send ITTI message %s to task TASK_AMF_APP",
i->get_msg_name());
}
} else {
Logger::amf_server().error(
"Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
}
else{
Logger::amf_server().error("No existing pdu_session_context with assoc_id ");
}
//***************************stateless
// if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
// psc = amf_n11_inst->supi_to_pdu_ctx(supi);
// itti_test_signalling_network_initiated_deregistration* itti_msg =
// new itti_test_signalling_network_initiated_deregistration(AMF_SERVER, TASK_AMF_APP);
// itti_msg->ran_ue_ngap_id = psc.get()->ran_ue_ngap_id;
// itti_msg->amf_ue_ngap_id = psc.get()->amf_ue_ngap_id;
// std::shared_ptr<itti_test_signalling_network_initiated_deregistration> i =
// std::shared_ptr<itti_test_signalling_network_initiated_deregistration>(itti_msg);
// int ret = itti_inst->send_msg(i);
// if (0 != ret) {
// Logger::amf_server().error(
// "Could not send ITTI message %s to task TASK_AMF_APP",
// i->get_msg_name());
// }
// } else {
// Logger::amf_server().error(
// "Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
// }
}
void TestSignallingApiImpl::test_signalling_paging(
......@@ -68,9 +98,15 @@ void TestSignallingApiImpl::test_signalling_paging(
Logger::amf_server().debug(
"Key for PDU Session context: SUPI (%s)", supi.c_str());
std::shared_ptr<pdu_session_context> psc;
if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
psc = amf_n11_inst->supi_to_pdu_ctx(supi);
//***************************stateless
pdu_session_context *psc1 = new pdu_session_context();
nlohmann::json udsf_response;
std::string udsf_url = "http://10.112.202.24:7123/nudsf-dr/v1/amfdata/" + std::string("pdu_session_context/records/") + supi ;
if(amf_n2_inst->curl_http_client_udsf(udsf_url,"","GET",udsf_response)){
Logger::amf_server().debug("udsf_response: %s", udsf_response.dump().c_str());
psc1->pdu_session_context_from_json(udsf_response);
psc = std::shared_ptr<pdu_session_context>(psc1);
itti_test_signalling_paging* itti_msg =
new itti_test_signalling_paging(AMF_SERVER, TASK_AMF_APP);
......@@ -85,11 +121,35 @@ void TestSignallingApiImpl::test_signalling_paging(
"Could not send ITTI message %s to task TASK_AMF_APP",
i->get_msg_name());
}
} else {
Logger::amf_server().error(
"Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
}
else{
Logger::amf_server().error("No existing pdu_session_context with assoc_id ");
}
//***************************stateless
// if (amf_n11_inst->is_supi_to_pdu_ctx(supi)) {
// psc = amf_n11_inst->supi_to_pdu_ctx(supi);
// itti_test_signalling_paging* itti_msg =
// new itti_test_signalling_paging(AMF_SERVER, TASK_AMF_APP);
// itti_msg->ran_ue_ngap_id = psc.get()->ran_ue_ngap_id;
// itti_msg->amf_ue_ngap_id = psc.get()->amf_ue_ngap_id;
// std::shared_ptr<itti_test_signalling_paging> i =
// std::shared_ptr<itti_test_signalling_paging>(itti_msg);
// int ret = itti_inst->send_msg(i);
// if (0 != ret) {
// Logger::amf_server().error(
// "Could not send ITTI message %s to task TASK_AMF_APP",
// i->get_msg_name());
// }
// } else {
// Logger::amf_server().error(
// "Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
// }
}
} // namespace api
......
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