diff --git a/src/amf-app/amf_config.cpp b/src/amf-app/amf_config.cpp index 4497335eed5cd5b5b115d0197e16018e69bc71a4..ce4ce6d56e39498ed8743aae8f6506b288f102d5 100644 --- a/src/amf-app/amf_config.cpp +++ b/src/amf-app/amf_config.cpp @@ -538,8 +538,12 @@ amf::amf( AMF_CONFIG_PID_DIRECTORY, AMF_CONFIG_PID_DIRECTORY_DEFAULT_VALUE); m_instance_id = int_config_value( AMF_CONFIG_INSTANCE_ID, AMF_CONFIG_INSTANCE_ID_DEFAULT_VALUE); + m_amf_name = string_config_value( + AMF_CONFIG_AMF_NAME, AMF_CONFIG_AMF_NAME_DEFAULT_VALUE); m_sctp_ttl = int_config_value(AMF_CONFIG_SCTP_TTL, AMF_CONFIG_SCTP_TTL_DEFAULT_VALUE); + m_default_dnn = + string_config_value(AMF_CONFIG_DEFAULT_DNN, AMF_CONFIG_DEFAULT_DNN_VALUE); m_relative_capacity = int_config_value( AMF_CONFIG_RELATIVE_CAPACITY, AMF_CONFIG_RELATIVE_CAPACITY_DEFAULT_VALUE); m_relative_capacity.set_validation_interval( @@ -581,6 +585,10 @@ void amf::from_yaml(const YAML::Node& node) { m_amf_name.from_yaml(elem.second); } + if (key == AMF_CONFIG_DEFAULT_DNN) { + m_default_dnn.from_yaml(elem.second); + } + if (key == AMF_CONFIG_RELATIVE_CAPACITY) { m_relative_capacity.from_yaml(elem.second); } @@ -644,25 +652,27 @@ std::string amf::to_string(const std::string& indent) const { .append(fmt::format("{} {}\n", OUTER_LIST_ELEM, m_n2.get_config_name())); out.append(m_n2.to_string(add_indent(inner_indent))); - out.append(inner_indent) - .append(fmt::format( - BASE_FORMATTER, OUTER_LIST_ELEM, AMF_CONFIG_SCTP_TTL_LABEL, - inner_width, m_sctp_ttl.get_value())); - out.append(inner_indent) .append(fmt::format( BASE_FORMATTER, OUTER_LIST_ELEM, AMF_CONFIG_INSTANCE_ID_LABEL, inner_width, m_instance_id.get_value())); - out.append(inner_indent) .append(fmt::format( BASE_FORMATTER, OUTER_LIST_ELEM, AMF_CONFIG_PID_DIRECTORY_LABEL, inner_width, m_pid_directory.get_value())); - out.append(inner_indent) .append(fmt::format( BASE_FORMATTER, OUTER_LIST_ELEM, AMF_CONFIG_AMF_NAME_LABEL, inner_width, m_amf_name.get_value())); + out.append(inner_indent) + .append(fmt::format( + BASE_FORMATTER, OUTER_LIST_ELEM, AMF_CONFIG_SCTP_TTL_LABEL, + inner_width, m_sctp_ttl.get_value())); + out.append(inner_indent) + .append(fmt::format( + BASE_FORMATTER, OUTER_LIST_ELEM, AMF_CONFIG_DEFAULT_DNN_LABEL, + inner_width, m_default_dnn.get_value())) + .append("(ms)"); out.append(inner_indent) .append(fmt::format( @@ -735,6 +745,7 @@ const uint32_t amf::get_instance_id() const { const std::string amf::get_pid_directory() const { return m_pid_directory.get_value(); } + //------------------------------------------------------------------------------ const std::string amf::get_amf_name() const { return m_amf_name.get_value(); @@ -786,6 +797,11 @@ const uint32_t amf::get_sctp_ttl() const { return m_sctp_ttl.get_value(); } +//------------------------------------------------------------------------------ +const std::string amf::get_default_dnn() const { + return m_default_dnn.get_value(); +} + //------------------------------------------------------------------------------ amf_config_yaml::amf_config_yaml( const std::string& config_path, bool log_stdout, bool log_rot_file) @@ -941,7 +957,8 @@ void amf_config_yaml::to_amf_config(amf_config& cfg) { cfg.n2.addr4 = amf_local->get_n2().get_addr4(); cfg.n2.port = amf_local->get_n2().get_port(); - cfg.sctp_ttl = amf_local->get_sctp_ttl(); + cfg.sctp_ttl = amf_local->get_sctp_ttl(); + cfg.default_dnn = amf_local->get_default_dnn(); if (get_nf(oai::config::SMF_CONFIG_NAME)) { cfg.smf_addr.api_version = @@ -1130,6 +1147,9 @@ void amf_config::display() { } } } + + Logger::config().info( + "- Default DNN.................: %s", default_dnn.c_str()); Logger::config().info( "- Emergency Support .......: %s", is_emergency_support ? AMF_CONFIG_OPTION_YES_STR : @@ -1257,11 +1277,12 @@ void amf_config::display() { //------------------------------------------------------------------------------ void amf_config::to_json(nlohmann::json& json_data) const { - json_data["instance"] = instance; - json_data["log_level"] = log_level; - json_data["amf_name"] = amf_name; - json_data["guami"] = guami.to_json(); - json_data["guami_list"] = nlohmann::json::array(); + json_data["instance"] = instance; + json_data["log_level"] = log_level; + json_data["amf_name"] = amf_name; + json_data["default_dnn"] = default_dnn; + json_data["guami"] = guami.to_json(); + json_data["guami_list"] = nlohmann::json::array(); for (auto s : guami_list) { json_data["guami_list"].push_back(s.to_json()); } @@ -1319,6 +1340,9 @@ bool amf_config::from_json(nlohmann::json& json_data) { if (json_data.find("amf_name") != json_data.end()) { amf_name = json_data["amf_name"].get<std::string>(); } + if (json_data.find("default_dnn") != json_data.end()) { + amf_name = json_data["default_dnn"].get<std::string>(); + } if (json_data.find("log_level") != json_data.end()) { log_level = json_data["log_level"].get<spdlog::level::level_enum>(); } diff --git a/src/amf-app/amf_config.hpp b/src/amf-app/amf_config.hpp index 7380e6a3ac0e9aa118b58e4d0487a49e0abb1d33..d4baf3730eee2998ef28a43bee16b6bf5630db31 100644 --- a/src/amf-app/amf_config.hpp +++ b/src/amf-app/amf_config.hpp @@ -91,6 +91,8 @@ constexpr auto AMF_CONFIG_N2 = "n2"; constexpr auto AMF_CONFIG_N2_LABEL = "N2"; constexpr auto AMF_CONFIG_SCTP_TTL = "sctp_ttl"; constexpr auto AMF_CONFIG_SCTP_TTL_LABEL = "SCTP TTL"; +constexpr auto AMF_CONFIG_DEFAULT_DNN = "default_dnn"; +constexpr auto AMF_CONFIG_DEFAULT_DNN_LABEL = "Default DNN"; constexpr auto AMF_CONFIG_SUPPORTED_INTEGRITY_ALGORITHMS = "supported_integrity_algorithms"; @@ -131,6 +133,7 @@ constexpr uint32_t AMF_CONFIG_STATISTICS_TIMER_INTERVAL_MAX_VALUE = // Default values constexpr auto AMF_CONFIG_INSTANCE_ID_DEFAULT_VALUE = 1; +constexpr auto AMF_CONFIG_AMF_NAME_DEFAULT_VALUE = "oai-amf"; constexpr auto AMF_CONFIG_PID_DIRECTORY_DEFAULT_VALUE = "/var/run"; constexpr auto AMF_CONFIG_TEST_PLMN_MCC = "001"; constexpr auto AMF_CONFIG_TEST_PLMN_MNC = "01"; @@ -143,6 +146,7 @@ constexpr auto AMF_CONFIG_RELATIVE_CAPACITY_DEFAULT_VALUE = 10; constexpr auto AMF_CONFIG_SCTP_TTL_DEFAULT_VALUE = 100; constexpr uint32_t AMF_CONFIG_STATISTICS_TIMER_INTERVAL_DEFAULT_VALUE = 20; // in seconds +constexpr auto AMF_CONFIG_DEFAULT_DNN_VALUE = "default"; using namespace oai::common::sbi; @@ -326,6 +330,7 @@ class amf : public nf { supported_encryption_algorithms m_supported_encryption_algorithms; local_interface m_n2; int_config_value m_sctp_ttl; + string_config_value m_default_dnn; public: explicit amf( @@ -351,6 +356,7 @@ class amf : public nf { const; [[nodiscard]] const local_interface& get_n2() const; [[nodiscard]] const uint32_t get_sctp_ttl() const; + [[nodiscard]] const std::string get_default_dnn() const; }; class amf_config { @@ -404,6 +410,8 @@ class amf_config { nf_addr_t udm_addr; nf_addr_t nssf_addr; nf_addr_t lmf_addr; + + std::string default_dnn; }; class amf_config_yaml : public config { diff --git a/src/amf-app/amf_n1.cpp b/src/amf-app/amf_n1.cpp index f1781b1d42187e6d1ac9e0ec8f473ba16766170d..b350a5268b156e60b99677f0e967f7a4bb7d7c54 100644 --- a/src/amf-app/amf_n1.cpp +++ b/src/amf-app/amf_n1.cpp @@ -3913,12 +3913,12 @@ void amf_n1::ul_nas_transport_handle( Logger::amf_n1().debug( "S_NSSAI for this PDU Session %s", snssai.ToString().c_str()); - bstring dnn = bfromcstr(DEFAULT_DNN); + bstring dnn = bfromcstr(amf_cfg.default_dnn.c_str()); if (!ul_nas->GetDnn(dnn)) { Logger::amf_n1().debug( "No DNN available in UlNasTransport, use default DNN: %s", - DEFAULT_DNN); + amf_cfg.default_dnn); // TODO: use default DNN for the corresponding NSSAI } diff --git a/src/amf-app/amf_sbi.cpp b/src/amf-app/amf_sbi.cpp index 4257ecfd2b20c4def531c7a1d8f4cd435e0d2564..6595f63af148c74afb4c568c9da4db750ba9c278 100644 --- a/src/amf-app/amf_sbi.cpp +++ b/src/amf-app/amf_sbi.cpp @@ -376,7 +376,8 @@ void amf_sbi::handle_itti_message(itti_nsmf_pdusession_create_sm_context& smf) { psc->snssai.sd.c_str()); // parse binary dnn and store - std::string dnn = DEFAULT_DNN; // If DNN doesn't available, use "default" + std::string dnn = + amf_cfg.default_dnn; // If DNN doesn't available, use the default value if ((smf.dnn != nullptr) && (blength(smf.dnn) > 0)) { char* tmp = amf_conv::bstring2charString(smf.dnn); dnn = tmp; diff --git a/src/common/amf.hpp b/src/common/amf.hpp index c9eaf326a3eb5701d2a1cc51a84f49dbd75d5ad7..849bd85675d3855dce95d49d4cad02dfd29fbf1c 100644 --- a/src/common/amf.hpp +++ b/src/common/amf.hpp @@ -84,7 +84,6 @@ constexpr auto DEFAULT_SUPI_TYPE = "imsi"; // Set to "imsi" when supporting both IMSI and NAI as SUPI constexpr auto DEFAULT_SST = 1; -constexpr auto DEFAULT_DNN = "default"; constexpr auto kSbiResponseJsonData = "jsonData"; constexpr auto kSbiResponseHttpResponseCode = "httpResponseCode";