@@ -346,14 +346,19 @@ void du_processor_impl::create_srb(const srb_creation_message& msg)
346346 std::make_unique<rrc_ue_pdcp_rx_security_adapter>(srb.pdcp_context ->entity ->get_rx_upper_control_interface ());
347347
348348 // update notifier in RRC
349- rrc->find_ue (msg.ue_index )
350- ->connect_srb_notifier (msg.srb_id ,
351- *ue->get_srbs ().at (msg.srb_id ).rrc_tx_notifier ,
352- ue->get_srbs ().at (msg.srb_id ).pdcp_context ->rrc_tx_sec_notifier .get (),
353- ue->get_srbs ().at (msg.srb_id ).pdcp_context ->rrc_rx_sec_notifier .get ());
349+ rrc_ue_interface* rrc_ue = rrc->find_ue (msg.ue_index );
350+ rrc_ue ->connect_srb_notifier (msg.srb_id ,
351+ *ue->get_srbs ().at (msg.srb_id ).rrc_tx_notifier ,
352+ ue->get_srbs ().at (msg.srb_id ).pdcp_context ->rrc_tx_sec_notifier .get (),
353+ ue->get_srbs ().at (msg.srb_id ).pdcp_context ->rrc_rx_sec_notifier .get ());
354354
355355 // update notifier in F1AP
356356 f1ap->connect_srb_notifier (msg.ue_index , msg.srb_id , *ue->get_srbs ().at (msg.srb_id ).rx_notifier );
357+ if (msg.srb_id == srb_id_t ::srb2) {
358+ security::sec_as_config sec_cfg = rrc_ue->get_rrc_ue_security_context ().get_as_config (security::sec_domain::rrc);
359+ srb.pdcp_context ->rrc_tx_sec_notifier ->enable_security (security::truncate_config (sec_cfg));
360+ srb.pdcp_context ->rrc_rx_sec_notifier ->enable_security (security::truncate_config (sec_cfg));
361+ }
357362 } else {
358363 logger.error (" Couldn't create SRB{}." , msg.srb_id );
359364 }
@@ -560,4 +565,4 @@ void du_processor_impl::remove_ue(ue_index_t ue_index)
560565 // Remove UE from UE database
561566 logger.info (" Removing DU UE (id={})" , ue_index);
562567 ue_manager.remove_du_ue (ue_index);
563- }
568+ }
0 commit comments