Commit 101aefc1 authored by Steafn Spettel's avatar Steafn Spettel Committed by Raphael Defosseux

feat(nrf): Added edge computing related fields in UFP INFO

Signed-off-by: default avatarSteafn Spettel <stefan.spettel@eurecom.fr>
parent 0cb56259
......@@ -35,6 +35,8 @@ void to_json(nlohmann::json& j, const DnnUpfInfoItem& o) {
if (o.dnaiListIsSet() || !o.m_DnaiList.empty()) j["dnaiList"] = o.m_DnaiList;
if (o.pduSessionTypesIsSet() || !o.m_PduSessionTypes.empty())
j["pduSessionTypes"] = o.m_PduSessionTypes;
if (o.dnaiNwInstanceListIsSet() || !o.m_DnaiNwInstanceList.empty())
j["dnaiNwInstanceList"] = o.m_DnaiNwInstanceList;
}
void from_json(const nlohmann::json& j, DnnUpfInfoItem& o) {
......@@ -47,6 +49,10 @@ void from_json(const nlohmann::json& j, DnnUpfInfoItem& o) {
j.at("pduSessionTypes").get_to(o.m_PduSessionTypes);
o.m_PduSessionTypesIsSet = true;
}
if (j.find("dnaiNwInstanceList") != j.end()) {
j.at("dnaiNwInstanceList").get_to(o.m_DnaiNwInstanceList);
o.m_DnaiNwInstanceListIsSet = true;
}
}
std::string DnnUpfInfoItem::getDnn() const {
......@@ -83,6 +89,21 @@ void DnnUpfInfoItem::unsetPduSessionTypes() {
m_PduSessionTypesIsSet = false;
}
std::map<std::string, std::string>& DnnUpfInfoItem::getDnaiNwInstanceList() {
return m_DnaiNwInstanceList;
}
void DnnUpfInfoItem::setDnaiNwInstanceList(
std::map<std::string, std::string> const& value) {
m_DnaiNwInstanceList = value;
m_DnaiNwInstanceListIsSet = true;
}
bool DnnUpfInfoItem::dnaiNwInstanceListIsSet() const {
return m_DnaiNwInstanceListIsSet;
}
void DnnUpfInfoItem::unserDnaiNwInstanceList() {
m_DnaiNwInstanceListIsSet = false;
}
} // namespace model
} // namespace nrf
} // namespace oai
......@@ -22,6 +22,7 @@
#include <string>
#include "PduSessionType.h"
#include <vector>
#include <map>
#include <nlohmann/json.hpp>
namespace oai {
......@@ -61,6 +62,11 @@ class DnnUpfInfoItem {
bool pduSessionTypesIsSet() const;
void unsetPduSessionTypes();
std::map<std::string, std::string>& getDnaiNwInstanceList();
void setDnaiNwInstanceList(std::map<std::string, std::string> const& value);
bool dnaiNwInstanceListIsSet() const;
void unserDnaiNwInstanceList();
friend void to_json(nlohmann::json& j, const DnnUpfInfoItem& o);
friend void from_json(const nlohmann::json& j, DnnUpfInfoItem& o);
......@@ -71,6 +77,9 @@ class DnnUpfInfoItem {
bool m_DnaiListIsSet;
std::vector<PduSessionType> m_PduSessionTypes;
bool m_PduSessionTypesIsSet;
std::map<std::string, std::string> m_DnaiNwInstanceList;
bool m_DnaiNwInstanceListIsSet;
};
} // namespace model
......
......@@ -23,6 +23,7 @@
#define FILE_3GPP_29_510_NRF_SEEN
#include <vector>
#include <map>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "3gpp_23.003.h"
......@@ -65,7 +66,8 @@ typedef struct smf_info_s {
typedef struct dnn_upf_info_item_s {
std::string dnn;
// std::vector<std::string> dnai_list
std::vector<std::string> dnai_list;
std::map<std::string, std::string> dnai_nw_instance_list;
// std::vector<std::string> pdu_session_types
} dnn_upf_info_item_t;
......
......@@ -212,10 +212,12 @@ bool api_conv::profile_api_to_nrf_profile(
"\t\tNSSAI SD: %s, SST: %d", snssai.snssai.sD.c_str(),
snssai.snssai.sST);
for (auto d : s.getDnnUpfInfoList()) {
dnn_upf_info_item_t dnn = {};
dnn.dnn = d.getDnn();
snssai.dnn_upf_info_list.push_back(dnn);
Logger::nrf_app().debug("\t\tDNN: %s", dnn.dnn.c_str());
dnn_upf_info_item_t upf_info = {};
upf_info.dnn = d.getDnn();
upf_info.dnai_list = d.getDnaiList();
upf_info.dnai_nw_instance_list = d.getDnaiNwInstanceList();
snssai.dnn_upf_info_list.push_back(upf_info);
Logger::nrf_app().debug("\t\tDNN: %s", upf_info.dnn.c_str());
}
info.snssai_upf_info_list.push_back(snssai);
}
......
......@@ -1129,9 +1129,22 @@ void upf_profile::to_json(nlohmann::json& data) const {
tmp["sNssai"]["sd"] = snssai.snssai.sD;
tmp["dnnUpfInfoList"] = nlohmann::json::array();
for (auto d : snssai.dnn_upf_info_list) {
nlohmann::json tmp_dnn = {};
tmp_dnn["dnn"] = d.dnn;
tmp["dnnUpfInfoList"].push_back(tmp_dnn);
nlohmann::json tmp_upf_info_item = {};
tmp_upf_info_item["dnn"] = d.dnn;
if (d.dnai_list.size() > 0) {
tmp_upf_info_item["dnaiList"] = nlohmann::json::array();
for (auto dnai : d.dnai_list) {
tmp_upf_info_item["dnaiList"].push_back(dnai);
}
}
if (d.dnai_nw_instance_list.size() > 0) {
for (auto it_dnai_nw : d.dnai_nw_instance_list) {
tmp_upf_info_item["dnaiNwInstanceList"][it_dnai_nw.first] =
it_dnai_nw.second;
}
}
tmp["dnnUpfInfoList"].push_back(tmp_upf_info_item);
}
data["upfInfo"]["sNssaiUpfInfoList"].push_back(tmp);
}
......
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