@@ -336,9 +336,8 @@ int bearer_cfg_handler::release_erab(uint8_t erab_id)
336336 return SRSRAN_ERROR;
337337 }
338338
339- uint8_t drb_id = erab_id - 4 ;
340-
341- srsran::rem_rrc_obj_id (current_drbs, drb_id);
339+ lte_drb drb_id = lte_lcid_to_drb (it->second .lcid );
340+ srsran::rem_rrc_obj_id (current_drbs, (uint8_t )drb_id);
342341
343342 rem_gtpu_bearer (erab_id);
344343
@@ -438,16 +437,19 @@ void bearer_cfg_handler::fill_pending_nas_info(asn1::rrc::rrc_conn_recfg_r8_ies_
438437 // Add E-RAB info message for the E-RABs
439438 if (msg->rr_cfg_ded .drb_to_add_mod_list_present ) {
440439 for (const drb_to_add_mod_s& drb : msg->rr_cfg_ded .drb_to_add_mod_list ) {
441- uint8_t erab_id = drb.drb_id + 4 ;
442- auto it = erab_info_list.find (erab_id);
443- if (it != erab_info_list.end ()) {
444- const std::vector<uint8_t >& erab_info = it->second ;
440+ uint32_t lcid = drb_to_lcid ((lte_drb)drb.drb_id );
441+ auto erab_it = std::find_if (
442+ erabs.begin (), erabs.end (), [lcid](const std::pair<uint8_t , erab_t >& e) { return e.second .lcid == lcid; });
443+ uint32_t erab_id = erab_it->second .id ;
444+ auto info_it = erab_info_list.find (erab_id);
445+ if (info_it != erab_info_list.end ()) {
446+ const std::vector<uint8_t >& erab_info = info_it->second ;
445447 logger->info (&erab_info[0 ], erab_info.size (), " connection_reconf erab_info -> nas_info rnti 0x%x" , rnti);
446448 msg->ded_info_nas_list [idx].resize (erab_info.size ());
447449 memcpy (msg->ded_info_nas_list [idx].data (), &erab_info[0 ], erab_info.size ());
448- erab_info_list.erase (it );
450+ erab_info_list.erase (info_it );
449451 } else {
450- logger->debug (" Not adding NAS message to connection reconfiguration. E-RAB id %d" , erab_id);
452+ logger->info (" Not adding NAS message to connection reconfiguration. E-RAB id %d" , erab_id);
451453 }
452454 idx++;
453455 }
0 commit comments