@@ -57,9 +57,12 @@ void e2_impl::handle_e2_setup_response(const e2_setup_response_message& msg)
5757{
5858 e2_message e2_msg;
5959 if (msg.success ) {
60- logger.info (" Transmitting E2 Setup Response message" );
60+ logger.info (" Received E2 Setup Response message" );
6161 e2_msg.pdu .set_successful_outcome ().load_info_obj (ASN1_E2AP_ID_E2SETUP);
6262 e2_msg.pdu .successful_outcome ().value .e2setup_resp () = msg.response ;
63+ } else {
64+ logger.error (" E2 Setup Failure message received" );
65+ return ;
6366 }
6467 if (e2_msg.pdu .successful_outcome ().value .e2setup_resp ()->ra_nfunctions_accepted_present ) {
6568 for (unsigned i = 0 , e = e2_msg.pdu .successful_outcome ().value .e2setup_resp ()->ra_nfunctions_accepted .value .size ();
@@ -74,7 +77,19 @@ void e2_impl::handle_e2_setup_response(const e2_setup_response_message& msg)
7477 set_allowed_ran_functions (id);
7578 }
7679 }
77- pdu_notifier.on_new_message (e2_msg);
80+ }
81+
82+ void e2_impl::handle_e2_setup_failure (const e2_setup_response_message& msg)
83+ {
84+ e2_message e2_msg;
85+ if (!msg.success ) {
86+ logger.info (" Transmitting E2 Setup Failure message" );
87+ e2_msg.pdu .set_unsuccessful_outcome ().load_info_obj (ASN1_E2AP_ID_E2SETUP);
88+ e2_msg.pdu .unsuccessful_outcome ().value .e2setup_fail () = msg.failure ;
89+ } else {
90+ logger.error (" E2 Setup Response message received" );
91+ return ;
92+ }
7893}
7994
8095void e2_impl::handle_ric_subscription_request (const asn1::e2ap::ricsubscription_request_s& msg)
@@ -145,7 +160,7 @@ void e2_impl::handle_successful_outcome(const asn1::e2ap::successful_outcome_s&
145160 if (not events->transactions .set (transaction_id.value (), outcome)) {
146161 logger.warning (" Unrecognized transaction id={}" , transaction_id.value ());
147162 }
148- handle_e2_setup_response ({outcome.value .e2setup_resp ()});
163+ handle_e2_setup_response ({outcome.value .e2setup_resp (), {}, true });
149164 } break ;
150165 default :
151166 logger.error (" Invalid E2AP successful outcome message type" );
@@ -167,6 +182,7 @@ void e2_impl::handle_unsuccessful_outcome(const asn1::e2ap::unsuccessful_outcome
167182 if (not events->transactions .set (transaction_id.value (), outcome)) {
168183 logger.warning (" Unrecognized transaction id={}" , transaction_id.value ());
169184 }
185+ handle_e2_setup_failure ({{}, outcome.value .e2setup_fail (), false });
170186 } break ;
171187 default :
172188 logger.error (" Invalid E2AP unsuccessful outcome message type" );
0 commit comments