@@ -264,15 +264,22 @@ void ngap_impl::handle_dl_nas_transport_message(const asn1::ngap::dl_nas_transpo
264264 logger.warning (" ran_ue_id={} amf_ue_id={}: Dropping DlNasTransportMessage. UE context does not exist" ,
265265 msg->ran_ue_ngap_id ,
266266 msg->amf_ue_ngap_id );
267- send_error_indication (ngap_notifier, logger, {}, {}, ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
267+ send_error_indication (ngap_notifier,
268+ logger,
269+ {},
270+ uint_to_amf_ue_id (msg->amf_ue_ngap_id ),
271+ ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
268272 return ;
269273 }
270274
271275 ngap_ue_context& ue_ctxt = ue_ctxt_list[uint_to_ran_ue_id (msg->ran_ue_ngap_id )];
272276
273277 if (ue_ctxt.release_scheduled ) {
274278 ue_ctxt.logger .log_info (" Dropping DlNasTransportMessage. UE is already scheduled for release" );
275- schedule_error_indication (ue_ctxt.ue_ids .ue_index , ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
279+ stored_error_indications.emplace (ue_ctxt.ue_ids .ue_index ,
280+ error_indication_request_t {ngap_cause_radio_network_t ::unknown_local_ue_ngap_id,
281+ ue_ctxt.ue_ids .ran_ue_id ,
282+ uint_to_amf_ue_id (msg->amf_ue_ngap_id )});
276283 return ;
277284 }
278285
@@ -311,7 +318,10 @@ void ngap_impl::handle_initial_context_setup_request(const asn1::ngap::init_cont
311318
312319 if (ue_ctxt.release_scheduled ) {
313320 ue_ctxt.logger .log_info (" Dropping InitialContextSetup. UE is already scheduled for release" );
314- schedule_error_indication (ue_ctxt.ue_ids .ue_index , ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
321+ stored_error_indications.emplace (ue_ctxt.ue_ids .ue_index ,
322+ error_indication_request_t {ngap_cause_radio_network_t ::unknown_local_ue_ngap_id,
323+ ue_ctxt.ue_ids .ran_ue_id ,
324+ uint_to_amf_ue_id (request->amf_ue_ngap_id )});
315325 return ;
316326 }
317327
@@ -384,7 +394,10 @@ void ngap_impl::handle_pdu_session_resource_setup_request(const asn1::ngap::pdu_
384394
385395 if (ue_ctxt.release_scheduled ) {
386396 ue_ctxt.logger .log_info (" Dropping PduSessionResourceSetupRequest. UE is already scheduled for release" );
387- schedule_error_indication (ue_ctxt.ue_ids .ue_index , ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
397+ stored_error_indications.emplace (ue_ctxt.ue_ids .ue_index ,
398+ error_indication_request_t {ngap_cause_radio_network_t ::unknown_local_ue_ngap_id,
399+ ue_ctxt.ue_ids .ran_ue_id ,
400+ uint_to_amf_ue_id (request->amf_ue_ngap_id )});
388401 return ;
389402 }
390403
@@ -448,7 +461,10 @@ void ngap_impl::handle_pdu_session_resource_modify_request(const asn1::ngap::pdu
448461 ngap_ue_context& ue_ctxt = ue_ctxt_list[uint_to_ran_ue_id (request->ran_ue_ngap_id )];
449462 if (ue_ctxt.release_scheduled ) {
450463 ue_ctxt.logger .log_info (" Dropping PduSessionResourceModifyRequest. UE is already scheduled for release" );
451- schedule_error_indication (ue_ctxt.ue_ids .ue_index , ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
464+ stored_error_indications.emplace (ue_ctxt.ue_ids .ue_index ,
465+ error_indication_request_t {ngap_cause_radio_network_t ::unknown_local_ue_ngap_id,
466+ ue_ctxt.ue_ids .ran_ue_id ,
467+ uint_to_amf_ue_id (request->amf_ue_ngap_id )});
452468 return ;
453469 }
454470
@@ -511,7 +527,10 @@ void ngap_impl::handle_pdu_session_resource_release_command(const asn1::ngap::pd
511527
512528 if (ue_ctxt.release_scheduled ) {
513529 ue_ctxt.logger .log_info (" Dropping PduSessionResourceReleaseCommand. UE is already scheduled for release" );
514- schedule_error_indication (ue_ctxt.ue_ids .ue_index , ngap_cause_radio_network_t ::unknown_local_ue_ngap_id);
530+ stored_error_indications.emplace (ue_ctxt.ue_ids .ue_index ,
531+ error_indication_request_t {ngap_cause_radio_network_t ::unknown_local_ue_ngap_id,
532+ ue_ctxt.ue_ids .ran_ue_id ,
533+ uint_to_amf_ue_id (command->amf_ue_ngap_id )});
515534 return ;
516535 }
517536
@@ -590,7 +609,10 @@ void ngap_impl::handle_ue_context_release_command(const asn1::ngap::ue_context_r
590609
591610 if (ue_ctxt.release_scheduled ) {
592611 ue_ctxt.logger .log_info (" Dropping UeContextReleaseCommand. UE is already scheduled for release" );
593- schedule_error_indication (ue_ctxt.ue_ids .ue_index , ngap_cause_radio_network_t ::unknown_local_ue_ngap_id, amf_ue_id);
612+ stored_error_indications.emplace (ue_ctxt.ue_ids .ue_index ,
613+ error_indication_request_t {ngap_cause_radio_network_t ::unknown_local_ue_ngap_id,
614+ ue_ctxt.ue_ids .ran_ue_id ,
615+ amf_ue_id});
594616 return ;
595617 }
596618
@@ -622,8 +644,12 @@ void ngap_impl::handle_ue_context_release_command(const asn1::ngap::ue_context_r
622644 // start routine
623645 task_sched.schedule_async_task (
624646 ue_ctxt.ue_ids .ue_index ,
625- launch_async<ngap_ue_context_release_procedure>(
626- msg, ue_ctxt.ue_ids , ue->get_du_processor_control_notifier (), ngap_notifier, ue_ctxt.logger ));
647+ launch_async<ngap_ue_context_release_procedure>(msg,
648+ ue_ctxt.ue_ids ,
649+ stored_error_indications,
650+ ue->get_du_processor_control_notifier (),
651+ ngap_notifier,
652+ ue_ctxt.logger ));
627653}
628654
629655void ngap_impl::handle_paging (const asn1::ngap::paging_s& msg)
0 commit comments