Commit 3322d832 authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Merge branch 'fix_supi_format' into 'develop'

Use IMSI as SUPI

See merge request oai/cn5g/oai-cn5g-smf!185
parents 67635041 ce320395
......@@ -60,6 +60,17 @@ static std::string smf_supi_to_string(supi_t const supi) {
return supi_str;
}
static std::string smf_get_supi_with_prefix(
const std::string& prefix, const std::string& supi) {
std::string supi_str = {};
if (!prefix.empty()) {
supi_str = prefix + "-" + supi;
} else {
supi_str = supi;
}
return supi_str;
}
// TODO should we just replace the other function? Because this null chars are
// annoying
static std::string smf_supi_to_string_without_nulls(supi_t const supi) {
......
......@@ -184,9 +184,16 @@ void xgpp_conv::sm_context_create_from_openapi(
if (context_data.supiIsSet()) {
// supi
supi_t supi = {.length = 0};
std::string supi_str = {};
std::string supi_prefix = {};
std::size_t pos = context_data.getSupi().find("-");
std::string supi_str = context_data.getSupi().substr(pos + 1);
std::string supi_prefix = context_data.getSupi().substr(0, pos);
if (pos != std::string::npos) {
supi_str = context_data.getSupi().substr(pos + 1);
supi_prefix = context_data.getSupi().substr(0, pos);
} else {
supi_str = context_data.getSupi();
}
smf_string_to_supi(&supi, supi_str.c_str());
pcr.set_supi(supi);
pcr.set_supi_prefix(supi_prefix);
......
......@@ -895,7 +895,8 @@ void smf_context::handle_itti_msg(
// get supi and put into URL
std::string supi_prefix = {};
get_supi_prefix(supi_prefix);
std::string supi_str = supi_prefix + "-" + smf_supi_to_string(supi);
std::string supi_str =
smf_get_supi_with_prefix(supi_prefix, smf_supi_to_string(supi));
std::string url = "http://" + get_amf_addr() +
NAMF_COMMUNICATION_BASE +
smf_cfg.amf_addr.api_version +
......@@ -1483,8 +1484,8 @@ void smf_context::handle_pdu_session_create_sm_context_request(
bool use_pcf_policy = false;
sp.get()->policy_ptr->set_context(
smf_supi_to_string_without_nulls(smreq->req.get_supi()),
smreq->req.get_dnn(), snssai, plmn, smreq->req.get_pdu_session_id(),
smreq->req.get_pdu_session_type());
smreq->req.get_supi_prefix(), smreq->req.get_dnn(), snssai, plmn,
smreq->req.get_pdu_session_id(), smreq->req.get_pdu_session_type());
// TODO what is the exact meaning of SCID? Is this unique per registration
// or unique per PDU session?
......@@ -1815,8 +1816,9 @@ void smf_context::handle_pdu_session_create_sm_context_request(
// Get SUPI and put into URL
std::string supi_str = {};
supi_t supi = sm_context_resp_pending->res.get_supi();
supi_str = sm_context_resp_pending->res.get_supi_prefix() + "-" +
smf_supi_to_string(supi);
supi_str = smf_get_supi_with_prefix(
sm_context_resp_pending->res.get_supi_prefix(),
smf_supi_to_string(supi));
std::string url =
"http://" + get_amf_addr() + NAMF_COMMUNICATION_BASE +
smf_cfg.amf_addr.api_version +
......@@ -3301,8 +3303,8 @@ void smf_context::handle_pdu_session_modification_network_requested(
// Fill N1N2MesasgeTransferRequestData
// get supi and put into URL
supi_t supi = itti_msg->msg.get_supi();
std::string supi_str =
itti_msg->msg.get_supi_prefix() + "-" + smf_supi_to_string(supi);
std::string supi_str = smf_get_supi_with_prefix(
itti_msg->msg.get_supi_prefix(), smf_supi_to_string(supi));
std::string url =
"http://" + get_amf_addr() + NAMF_COMMUNICATION_BASE +
smf_cfg.amf_addr.api_version +
......@@ -4944,8 +4946,8 @@ void smf_context::send_pdu_session_create_response(
// Fill N1N2MesasgeTransferRequestData
// get SUPI and put into URL
supi_t supi = resp->res.get_supi();
std::string supi_str =
resp->res.get_supi_prefix() + "-" + smf_supi_to_string(supi);
std::string supi_str = smf_get_supi_with_prefix(
resp->res.get_supi_prefix(), smf_supi_to_string(supi));
std::string url =
"http://" + get_amf_addr() + NAMF_COMMUNICATION_BASE +
smf_cfg.amf_addr.api_version +
......
......@@ -72,8 +72,9 @@ struct policy_association {
std::string pcf_location;
void set_context(
const std::string& supi, const std::string& dnn, const snssai_t& snssai,
const plmn_t& plmn, const uint8_t pdu_session_id,
const std::string& supi, const std::string& supi_prefix,
const std::string& dnn, const snssai_t& snssai, const plmn_t& plmn,
const uint8_t pdu_session_id,
const pdu_session_type_t& pdu_session_type) {
oai::smf_server::model::Snssai snssai_model;
snssai_model.setSst(snssai.sst);
......@@ -90,8 +91,7 @@ struct policy_association {
context = {};
context.setPduSessionId(pdu_session_id);
// TODO only support imsi SUPI, not NAI
context.setSupi("imsi-" + supi);
context.setSupi(smf_get_supi_with_prefix(supi_prefix, supi));
oai::smf_server::model::PduSessionType pdu_session_type_model;
// hacky
from_json(pdu_session_type.to_string(), pdu_session_type_model);
......
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