|
|
@ -417,6 +417,8 @@ void bearer_cfg_handler::fill_pending_nas_info(asn1::rrc::rrc_conn_recfg_r8_ies_
|
|
|
|
// DRBs have already been configured in GTPU during bearer setup
|
|
|
|
// DRBs have already been configured in GTPU during bearer setup
|
|
|
|
// Add E-RAB info message for the E-RABs
|
|
|
|
// Add E-RAB info message for the E-RABs
|
|
|
|
if (msg->rr_cfg_ded.drb_to_add_mod_list_present) {
|
|
|
|
if (msg->rr_cfg_ded.drb_to_add_mod_list_present) {
|
|
|
|
|
|
|
|
erab_ids_with_pending_nas_pdus.clear();
|
|
|
|
|
|
|
|
|
|
|
|
for (const drb_to_add_mod_s& drb : msg->rr_cfg_ded.drb_to_add_mod_list) {
|
|
|
|
for (const drb_to_add_mod_s& drb : msg->rr_cfg_ded.drb_to_add_mod_list) {
|
|
|
|
uint32_t lcid = drb_to_lcid((lte_drb)drb.drb_id);
|
|
|
|
uint32_t lcid = drb_to_lcid((lte_drb)drb.drb_id);
|
|
|
|
auto erab_it = std::find_if(
|
|
|
|
auto erab_it = std::find_if(
|
|
|
@ -429,7 +431,7 @@ void bearer_cfg_handler::fill_pending_nas_info(asn1::rrc::rrc_conn_recfg_r8_ies_
|
|
|
|
msg->ded_info_nas_list.push_back({});
|
|
|
|
msg->ded_info_nas_list.push_back({});
|
|
|
|
msg->ded_info_nas_list.back().resize(erab_info.size());
|
|
|
|
msg->ded_info_nas_list.back().resize(erab_info.size());
|
|
|
|
memcpy(msg->ded_info_nas_list.back().data(), &erab_info[0], erab_info.size());
|
|
|
|
memcpy(msg->ded_info_nas_list.back().data(), &erab_info[0], erab_info.size());
|
|
|
|
erab_info_list.erase(info_it);
|
|
|
|
erab_ids_with_pending_nas_pdus.push_back(erab_id);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
logger->warning("Not adding NAS message to connection reconfiguration. E-RAB id %d", erab_id);
|
|
|
|
logger->warning("Not adding NAS message to connection reconfiguration. E-RAB id %d", erab_id);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -438,4 +440,18 @@ void bearer_cfg_handler::fill_pending_nas_info(asn1::rrc::rrc_conn_recfg_r8_ies_
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void bearer_cfg_handler::clear_pending_nas_info()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (uint32_t erab_id : erab_ids_with_pending_nas_pdus) {
|
|
|
|
|
|
|
|
auto info_it = erab_info_list.find(erab_id);
|
|
|
|
|
|
|
|
if (info_it == erab_info_list.end()) {
|
|
|
|
|
|
|
|
logger->warning("NAS PDU with ERAB id={} went missing", erab_id);
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
erab_info_list.erase(info_it);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
erab_ids_with_pending_nas_pdus.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace srsenb
|
|
|
|
} // namespace srsenb
|
|
|
|