Commit 07bc266d authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Merge branch 'tentative_fix_static_ip_dl' into 'develop'

Dirty fix for UE DL traffic for UE IP static when restarting gNB/UE

See merge request oai/cn5g/oai-cn5g-upf!53
parents 1a778eb8 be4ebbcc
...@@ -603,6 +603,7 @@ void pfcp_switch::add_pfcp_dl_pdr_by_ue_ip( ...@@ -603,6 +603,7 @@ void pfcp_switch::add_pfcp_dl_pdr_by_ue_ip(
folly::AtomicHashMap< folly::AtomicHashMap<
uint32_t, std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>>:: uint32_t, std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>>::
const_iterator pit = ue_ipv4_hbo2pfcp_pdr.find(ue_ip); const_iterator pit = ue_ipv4_hbo2pfcp_pdr.find(ue_ip);
if (pit == ue_ipv4_hbo2pfcp_pdr.end()) { if (pit == ue_ipv4_hbo2pfcp_pdr.end()) {
std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>> pdrs = std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>> pdrs =
std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>( std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>(
...@@ -614,18 +615,32 @@ void pfcp_switch::add_pfcp_dl_pdr_by_ue_ip( ...@@ -614,18 +615,32 @@ void pfcp_switch::add_pfcp_dl_pdr_by_ue_ip(
ue_ipv4_hbo2pfcp_pdr.insert(entry); ue_ipv4_hbo2pfcp_pdr.insert(entry);
// Logger::pfcp_switch().info( "add_pfcp_dl_pdr_by_ue_ip UE IP %8x", ue_ip); // Logger::pfcp_switch().info( "add_pfcp_dl_pdr_by_ue_ip UE IP %8x", ue_ip);
} else { } else {
// sort by precedence // TODO: Dirty fix
// const std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>& ue_ipv4_hbo2pfcp_pdr.erase(ue_ip);
// spdrs = pit->second; std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>> pdrs =
std::vector<std::shared_ptr<pfcp::pfcp_pdr>>* pdrs = pit->second.get(); std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>(
for (std::vector<std::shared_ptr<pfcp::pfcp_pdr>>::iterator it = new std::vector<std::shared_ptr<pfcp::pfcp_pdr>>());
pdrs->begin(); pdrs->push_back(pdr);
it < pdrs->end(); ++it) { std::pair<
if (*(it->get()) < *(pdr.get())) { uint32_t, std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>>
pit->second->insert(it, pdr); entry(ue_ip, pdrs);
return; ue_ipv4_hbo2pfcp_pdr.insert(entry);
}
} /*
// sort by precedence
// const std::shared_ptr<std::vector<std::shared_ptr<pfcp::pfcp_pdr>>>&
// spdrs = pit->second;
std::vector<std::shared_ptr<pfcp::pfcp_pdr>>* pdrs = pit->second.get();
for (std::vector<std::shared_ptr<pfcp::pfcp_pdr>>::iterator it =
pdrs->begin();
it < pdrs->end(); ++it) {
if (*(it->get()) < *(pdr.get())) {
pit->second->insert(it, pdr);
return;
}
}
*/
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
......
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