X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fsrc%2Fmessagerouting%2Fe2ap_message_handler.cpp;fp=e2sim%2Fsrc%2Fmessagerouting%2Fe2ap_message_handler.cpp;h=57d28c24c837233eaf770eb4fe101b3bd919e07f;hp=ca2d4007cd68b972a34bccb29d196b2a22e29887;hb=ccc33c0a48b945c3a13054f9661aae4e5f4c4c75;hpb=72359530324f1cc77adebf2491c512ce84eb3bfc diff --git a/e2sim/src/messagerouting/e2ap_message_handler.cpp b/e2sim/src/messagerouting/e2ap_message_handler.cpp index ca2d400..57d28c2 100755 --- a/e2sim/src/messagerouting/e2ap_message_handler.cpp +++ b/e2sim/src/messagerouting/e2ap_message_handler.cpp @@ -189,6 +189,20 @@ void e2ap_handle_sctp_data(int &socket_fd, sctp_buffer_t &data, bool xmlenc, E2S } break; + case ProcedureCode_id_E2nodeConfigurationUpdate: + switch (index) + { + case E2AP_PDU_PR_successfulOutcome: + LOG_I("[E2AP] Received E2nodeConfigurationUpdate") + break; + + default: + LOG_E("[E2AP] Invalid message index=%d in E2AP-PDU %d", index, + (int)ProcedureCode_id_E2nodeConfigurationUpdate); + break; + } + break; + case ProcedureCode_id_RICserviceUpdate: switch (index) { @@ -269,6 +283,42 @@ void e2ap_handle_E2SeviceRequest(E2AP_PDU_t* pdu, int &socket_fd, E2Sim *e2sim) } } +void e2ap_send_e2nodeConfigUpdate(int &socket_fd) { + + auto buffer_size = MAX_SCTP_BUFFER; + unsigned char buffer[MAX_SCTP_BUFFER]; + E2AP_PDU_t* pdu = (E2AP_PDU_t*)calloc(1,sizeof(E2AP_PDU)); + + LOG_D("about to call e2nodeconfigUpdate encode\n"); + + encoding::generate_e2apv2_config_update(pdu); + + LOG_D("[E2AP] Created E2nodeConfigUpdate"); + + e2ap_asn1c_print_pdu(pdu); + + sctp_buffer_t data; + + char error_buf[300] = {0, }; + size_t errlen = 0; + + asn_check_constraints(&asn_DEF_E2AP_PDU, pdu, error_buf, &errlen); + + auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, pdu, buffer, buffer_size); + + data.len = er.encoded; + fprintf(stderr, "er encoded is %d\n", er.encoded); + + memcpy(data.buffer, buffer, er.encoded); + + //send response data over sctp + if(sctp_send_data(socket_fd, data) > 0) { + LOG_I("[SCTP] Sent E2nodeConfigUpdate"); + } else { + LOG_E("[SCTP] Unable to send E2nodeConfigUpdate to peer"); + } +} + void e2ap_handle_E2SetupRequest(E2AP_PDU_t* pdu, int &socket_fd) {