/* ============================================================================== Copyright (c) 2018-2019 AT&T Intellectual Property. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ============================================================================= */ #include #include #include #include #include #include #include #include #include #include #include "errno.h" #include "gsconfig.h" #include "gshub.h" #include "gstypes.h" #include "lapp.h" #include "fta.h" #include "stdio.h" #include "stdlib.h" #include "packet.h" #include "schemaparser.h" #include "lfta/rts.h" void rts_fta_process_packet(struct packet * p); void rts_fta_done(); void fta_init(gs_sp_t device); gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; // set at initialization #define MAXLINE 1000000 static FILE *pd; static int listensockfd=-1; static int fd=-1; static struct packet cur_packet; static gs_sp_t name, this_device; static gs_uint32_t verbose=0; static gs_uint32_t startupdelay=0; static gs_uint32_t singlefile=0; static gs_uint32_t gshub=0; static int socket_desc=0; static gs_uint8_t line[MAXLINE]; static gs_uint32_t lineend=0; static unsigned long long timestamp; // extract from input header //---------------- Specialized proto parsing ----------- #include "x2ap_streaming.pb-c.h" #include "ue_context_release.pb-c.h" #include "lfta/local/dc_release.h" #include "secondary_rat_data_usage_report.pb-c.h" #include "lfta/local/rat_data_usage.h" #include "sgnb_reconfiguration_complete.pb-c.h" #include "lfta/local/reconfig_all.h" #include "lfta/local/reconfig_success.h" #include "lfta/local/reconfig_reject.h" #include "sgnb_release_confirm.pb-c.h" #include "lfta/local/sgnb_release_confirm_from_menb_erabs.h" #include "lfta/local/sgnb_release_confirm_from_menb.h" #include "sgnb_release_request.pb-c.h" #include "lfta/local/release_req.h" #include "sgnb_release_request_acknowledge.pb-c.h" #include "lfta/local/release_req_ack.h" #include "sgnb_release_required.pb-c.h" #include "lfta/local/SgNB_release_rqd.h" #include "rrctransfer.pb-c.h" #include "lfta/local/serv_nr_cell.h" #include "lfta/local/nr_neighbor.h" #include "lfta/local/serv_cell_beam_csi.h" #include "lfta/local/neighbor_beam_csi.h" #include "lfta/local/serv_cell_beam_ssb.h" #include "lfta/local/neighbor_beam_ssb.h" #include "sgnb_addition_request_reject.pb-c.h" #include "lfta/local/sgnb_add_req_reject.h" #include "sgnb_addition_request_acknowledge.pb-c.h" #include "lfta/local/eRABs_notadmitted_for_ue.h" #include "lfta/local/eRABs_acked_for_admit_for_ue.h" #include "lfta/local/SgNB_ack_for_ue_NRfreqs.h" #include "lfta/local/SgNB_ack_for_add_mod_for_ue.h" #include "lfta/local/SgNB_ack_for_ue_measurements.h" #include "lfta/local/SgNB_ack_for_ue_beam_csi.h" #include "lfta/local/SgNB_ack_for_ue_beam_ssb.h" #include "sgnb_addition_request.pb-c.h" #include "lfta/local/sgnb_addreq_for_ue.h" #include "lfta/local/sgnb_addreq_for_ue_bearers.h" #include "lfta/local/sgnb_addreq_for_ue_sn_serv_ssb.h" #include "lfta/local/sgnb_addreq_for_ue_sn_serv_csi_rs.h" #include "lfta/local/sgnb_addreq_for_ue_mn_serv_ssb.h" #include "lfta/local/sgnb_addreq_for_ue_mn_serv_csi_rs.h" #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_ssb.h" #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_csi_rs.h" #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_ssb.h" #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_csi_rs.h" #include "sgnb_modification_confirm.pb-c.h" #include "lfta/local/sgnb_mod_conf.h" #include "sgnb_modification_request.pb-c.h" #include "lfta/local/sgnb_mod_req.h" #include "sgnb_modification_request_acknowledge.pb-c.h" #include "lfta/local/sgnb_mod_req_ack.h" #include "sgnb_modification_request_reject.pb-c.h" #include "lfta/local/sgnb_mod_req_reject.h" #include "sgnb_modification_required.pb-c.h" #include "lfta/local/sgnb_mod_required.h" #include "sgnb_modification_refuse.pb-c.h" #include "lfta/local/sgnb_mod_refuse.h" #include "sn_status_transfer.pb-c.h" #include "lfta/local/sn_status_transfer.h" gs_uint32_t process_buffer_CONRELEASE(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto ue_context_release.json, path context_release.json struct _dc_release *dc_release = NULL; Uenibstreamprotobuf__UEContextRelease *node_0_0 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto ue_context_release.json, path context_release.json dc_release = (struct _dc_release *)(cur_packet.record.packed.values); cur_packet.schema = 201; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->uecontextrelease; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; dc_release->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) dc_release->gnb_id = empty_string; else dc_release->gnb_id = hdr->header->gnbid->value; if(node_0_0->id_old_enb_ue_x2ap_id_extension){ dc_release->id_Old_eNB_UE_X2AP_ID_Extension = node_0_0->id_old_enb_ue_x2ap_id_extension->value; }else{ dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0; } dc_release->id_New_eNB_UE_X2AP_ID = node_0_0->id_new_enb_ue_x2ap_id; if(node_0_0->id_sgnb_ue_x2ap_id){ dc_release->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value; }else{ dc_release->id_SgNB_UE_X2AP_ID = 0; } if(node_0_0->id_new_enb_ue_x2ap_id_extension){ dc_release->id_New_eNB_UE_X2AP_ID_Extension = node_0_0->id_new_enb_ue_x2ap_id_extension->value; }else{ dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0; } dc_release->id_Old_eNB_UE_X2AP_ID = node_0_0->id_old_enb_ue_x2ap_id; rts_fta_process_packet(&cur_packet); uenibstreamprotobuf__uecontext_release__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json struct _rat_data_usage *rat_data_usage = NULL; Uenibstreamprotobuf__SecondaryRATDataUsageReport *node_0_0 = NULL; Uenibstreamprotobuf__SecondaryRATDataUsageReportIEs *node_0_1 = NULL; Uenibstreamprotobuf__SecondaryRATUsageReportList *node_0_2 = NULL; Uenibstreamprotobuf__SecondaryRATUsageReportItemIEs *node_0_3 = NULL; gs_uint32_t i_0_3; Uenibstreamprotobuf__SecondaryRATUsageReportItem *node_0_4 = NULL; Uenibstreamprotobuf__ERABUsageReportList *node_0_5 = NULL; Uenibstreamprotobuf__ERABUsageReportItemIEs *node_0_6 = NULL; gs_uint32_t i_0_6; Uenibstreamprotobuf__ERABUsageReportItem *node_0_7 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values); cur_packet.schema = 1501; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->secondaryratdatausagereport; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; rat_data_usage->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) rat_data_usage->gnb_id = empty_string; else rat_data_usage->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ rat_data_usage->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; rat_data_usage->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_menb_ue_x2ap_id_extension){ rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; }else{ rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0; } node_0_2 = node_0_1->id_secondaryratusagereportlist; if(node_0_1->id_secondaryratusagereportlist){ for(i_0_3=0;i_0_3n_items; i_0_3++){ node_0_3 = node_0_2->items[i_0_3]; node_0_4 = node_0_3->id_secondaryratusagereport_item; if(node_0_3->id_secondaryratusagereport_item){ rat_data_usage->e_RAB_ID = node_0_4->e_rab_id; rat_data_usage->secondaryRATType = node_0_4->secondaryrattype; node_0_5 = node_0_4->e_rabusagereportlist; if(node_0_4->e_rabusagereportlist){ for(i_0_6=0;i_0_6n_items; i_0_6++){ node_0_6 = node_0_5->items[i_0_6]; node_0_7 = node_0_6->id_e_rabusagereport_item; if(node_0_6->id_e_rabusagereport_item){ rat_data_usage->startTimeStamp = node_0_7->starttimestamp; rat_data_usage->endTimeStamp = node_0_7->endtimestamp; rat_data_usage->usageCountDL = node_0_7->usagecountdl; rts_fta_process_packet(&cur_packet); } } } } } } } uenibstreamprotobuf__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_RECONCOMPLETE(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json struct _reconfig_all *reconfig_all = NULL; Uenibstreamprotobuf__SgNBReconfigurationComplete *node_0_0 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json struct _reconfig_success *reconfig_success = NULL; Uenibstreamprotobuf__SgNBReconfigurationComplete *node_1_0 = NULL; Uenibstreamprotobuf__ResponseInformationSgNBReconfComp *node_1_1 = NULL; Uenibstreamprotobuf__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_1_2 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json struct _reconfig_reject *reconfig_reject = NULL; Uenibstreamprotobuf__SgNBReconfigurationComplete *node_2_0 = NULL; Uenibstreamprotobuf__ResponseInformationSgNBReconfComp *node_2_1 = NULL; Uenibstreamprotobuf__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_2_2 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values); cur_packet.schema = 103; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbreconfigurationcomplete; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; reconfig_all->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) reconfig_all->gnb_id = empty_string; else reconfig_all->gnb_id = hdr->header->gnbid->value; reconfig_all->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id; reconfig_all->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id; if(node_0_0->id_menb_ue_x2ap_id_extension){ reconfig_all->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value; }else{ reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0; } rts_fta_process_packet(&cur_packet); // -------------------------------------------------- // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values); cur_packet.schema = 101; node_1_0 = node_0_0; reconfig_success->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) reconfig_success->gnb_id = empty_string; else reconfig_success->gnb_id = hdr->header->gnbid->value; reconfig_success->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id; reconfig_success->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id; if(node_1_0->id_menb_ue_x2ap_id_extension){ reconfig_success->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value; }else{ reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0; } node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp; if(!(node_1_0->id_responseinformationsgnbreconfcomp)){ rts_fta_process_packet(&cur_packet); }else{ node_1_2 = node_1_1->reject_by_menb_sgnbreconfcomp; if(!(node_1_1->value_case == UENIBSTREAMPROTOBUF__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP)){ rts_fta_process_packet(&cur_packet); }else{ rts_fta_process_packet(&cur_packet); } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values); cur_packet.schema = 102; node_2_0 = node_1_0; reconfig_reject->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) reconfig_reject->gnb_id = empty_string; else reconfig_reject->gnb_id = hdr->header->gnbid->value; reconfig_reject->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id; reconfig_reject->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id; if(node_2_0->id_menb_ue_x2ap_id_extension){ reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value; }else{ reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0; } node_2_1 = node_2_0->id_responseinformationsgnbreconfcomp; if(node_2_0->id_responseinformationsgnbreconfcomp){ node_2_2 = node_2_1->reject_by_menb_sgnbreconfcomp; if(node_2_1->value_case == UENIBSTREAMPROTOBUF__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP){ if(node_2_2->cause && node_2_2->cause->radionetwork){ reconfig_reject->cause_radio_network = node_2_2->cause->radionetwork->value; }else{ reconfig_reject->cause_radio_network = -1; } if(node_2_2->cause && node_2_2->cause->transport){ reconfig_reject->cause_transport = node_2_2->cause->transport->value; }else{ reconfig_reject->cause_transport = -1; } if(node_2_2->cause && node_2_2->cause->protocol){ reconfig_reject->cause_protocol = node_2_2->cause->protocol->value; }else{ reconfig_reject->cause_protocol = -1; } if(node_2_2->cause && node_2_2->cause->misc){ reconfig_reject->cause_misc = node_2_2->cause->misc->value; }else{ reconfig_reject->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } } uenibstreamprotobuf__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_RELCONF(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json struct _sgnb_release_confirm_from_menb_erabs *sgnb_release_confirm_from_menb_erabs = NULL; Uenibstreamprotobuf__SgNBReleaseConfirm *node_0_0 = NULL; Uenibstreamprotobuf__SgNBReleaseConfirmIEs *node_0_1 = NULL; Uenibstreamprotobuf__ERABsToBeReleasedSgNBRelConfList *node_0_2 = NULL; Uenibstreamprotobuf__ERABsToBeReleasedSgNBRelConfItem *node_0_3 = NULL; gs_uint32_t i_0_3; Uenibstreamprotobuf__ERABsToBeReleasedSgNBRelConfSgNBPDCPpresent *node_0_4 = NULL; Uenibstreamprotobuf__GTPtunnelEndpoint *node_0_5 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json struct _sgnb_release_confirm_from_menb *sgnb_release_confirm_from_menb = NULL; Uenibstreamprotobuf__SgNBReleaseConfirm *node_1_0 = NULL; Uenibstreamprotobuf__SgNBReleaseConfirmIEs *node_1_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values); cur_packet.schema = 1101; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbreleaseconfirm; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_release_confirm_from_menb_erabs->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_release_confirm_from_menb_erabs->gnb_id = empty_string; else sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; sgnb_release_confirm_from_menb_erabs->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_menb_ue_x2ap_id_extension){ sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0; } node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelconflist; if(node_0_1->id_e_rabs_tobereleased_sgnbrelconflist){ for(i_0_3=0;i_0_3n_id_e_rabs_tobereleased_sgnbrelconf_item; i_0_3++){ node_0_3 = node_0_2->id_e_rabs_tobereleased_sgnbrelconf_item[i_0_3]; if(node_0_3->en_dc_resourceconfiguration){ sgnb_release_confirm_from_menb_erabs->sCGresources = node_0_3->en_dc_resourceconfiguration->scgresources; }else{ sgnb_release_confirm_from_menb_erabs->sCGresources = -1; } sgnb_release_confirm_from_menb_erabs->e_RAB_ID = node_0_3->e_rab_id; if(node_0_3->en_dc_resourceconfiguration){ sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = node_0_3->en_dc_resourceconfiguration->pdcpatsgnb; }else{ sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1; } if(node_0_3->en_dc_resourceconfiguration){ sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources; }else{ sgnb_release_confirm_from_menb_erabs->mCGresources = -1; } node_0_4 = node_0_3->sgnbpdcppresent; if(node_0_3->sgnbpdcppresent){ node_0_5 = node_0_4->dl_gtptunnelendpoint; if(node_0_4->dl_gtptunnelendpoint){ sgnb_release_confirm_from_menb_erabs->gTP_TEID = node_0_5->gtp_teid; sgnb_release_confirm_from_menb_erabs->transportLayerAddress = node_0_5->transportlayeraddress; rts_fta_process_packet(&cur_packet); } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values); cur_packet.schema = 1102; node_1_0 = node_0_0; sgnb_release_confirm_from_menb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_release_confirm_from_menb->gnb_id = empty_string; else sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value; node_1_1 = node_1_0->protocolies; if(node_1_0->protocolies){ sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id; sgnb_release_confirm_from_menb->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id; if(node_1_1->id_menb_ue_x2ap_id_extension){ sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_RELREQ(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_release_request.json, path release_req.json struct _release_req *release_req = NULL; Uenibstreamprotobuf__SgNBReleaseRequest *node_0_0 = NULL; Uenibstreamprotobuf__SgNBReleaseRequestIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_release_request.json, path release_req.json release_req = (struct _release_req *)(cur_packet.record.packed.values); cur_packet.schema = 801; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbreleaserequest; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; release_req->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) release_req->gnb_id = empty_string; else release_req->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ if(node_0_1->id_cause && node_0_1->id_cause->protocol){ release_req->cause_protocol = node_0_1->id_cause->protocol->value; }else{ release_req->cause_protocol = -1; } release_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->transport){ release_req->cause_transport = node_0_1->id_cause->transport->value; }else{ release_req->cause_transport = -1; } if(node_0_1->id_menb_ue_x2ap_id_extension){ release_req->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; }else{ release_req->id_MeNB_UE_X2AP_ID_Extension = 0; } if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ release_req->cause_radio_network = node_0_1->id_cause->radionetwork->value; }else{ release_req->cause_radio_network = -1; } if(node_0_1->id_sgnb_ue_x2ap_id){ release_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value; }else{ release_req->id_SgNB_UE_X2AP_ID = 0; } if(node_0_1->id_cause && node_0_1->id_cause->misc){ release_req->cause_misc = node_0_1->id_cause->misc->value; }else{ release_req->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbrelease_request__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_RELREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json struct _release_req_ack *release_req_ack = NULL; Uenibstreamprotobuf__SgNBReleaseRequestAcknowledge *node_0_0 = NULL; Uenibstreamprotobuf__SgNBReleaseRequestAcknowledgeIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values); cur_packet.schema = 901; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbreleaserequestacknowledge; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; release_req_ack->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) release_req_ack->gnb_id = empty_string; else release_req_ack->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ release_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; release_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_menb_ue_x2ap_id_extension){ release_req_ack->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; }else{ release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_release_required.json, path release_rqd.json struct _SgNB_release_rqd *SgNB_release_rqd = NULL; Uenibstreamprotobuf__SgNBReleaseRequired *node_0_0 = NULL; Uenibstreamprotobuf__SgNBReleaseRequiredIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_release_required.json, path release_rqd.json SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values); cur_packet.schema = 1001; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbreleaserequired; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; SgNB_release_rqd->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) SgNB_release_rqd->gnb_id = empty_string; else SgNB_release_rqd->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ if(node_0_1->id_cause && node_0_1->id_cause->protocol){ SgNB_release_rqd->cause_protocol = node_0_1->id_cause->protocol->value; }else{ SgNB_release_rqd->cause_protocol = -1; } SgNB_release_rqd->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->transport){ SgNB_release_rqd->cause_transport = node_0_1->id_cause->transport->value; }else{ SgNB_release_rqd->cause_transport = -1; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 0){ SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id; SgNB_release_rqd->e_RAB_ID0_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID0_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 1){ SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id; SgNB_release_rqd->e_RAB_ID1_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID1_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 2){ SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id; SgNB_release_rqd->e_RAB_ID2_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID2_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 3){ SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id; SgNB_release_rqd->e_RAB_ID3_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID3_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 4){ SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id; SgNB_release_rqd->e_RAB_ID4_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID4_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 5){ SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id; SgNB_release_rqd->e_RAB_ID5_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID5_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 6){ SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id; SgNB_release_rqd->e_RAB_ID6_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID6_exists = 0; } if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 7){ SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id; SgNB_release_rqd->e_RAB_ID7_exists = 1; }else{ SgNB_release_rqd->e_RAB_ID7_exists = 0; } if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value; }else{ SgNB_release_rqd->cause_radio_network = -1; } SgNB_release_rqd->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->misc){ SgNB_release_rqd->cause_misc = node_0_1->id_cause->misc->value; }else{ SgNB_release_rqd->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbrelease_required__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto rrctransfer.json, path rrc_metrics.json struct _serv_nr_cell *serv_nr_cell = NULL; Uenibstreamprotobuf__RRCTransfer *node_0_0 = NULL; Uenibstreamprotobuf__RRCTransferIEs *node_0_1 = NULL; Uenibstreamprotobuf__UENRMeasurement *node_0_2 = NULL; Uenibstreamprotobuf__RRCContainer *node_0_3 = NULL; Uenibstreamprotobuf__ULDCCHMessageType *node_0_4 = NULL; Uenibstreamprotobuf__MeasurementReport *node_0_5 = NULL; Uenibstreamprotobuf__MeasurementReportIEs *node_0_6 = NULL; Uenibstreamprotobuf__MeasResults *node_0_7 = NULL; Uenibstreamprotobuf__MeasResultServMOList *node_0_8 = NULL; Uenibstreamprotobuf__MeasResultServMO *node_0_9 = NULL; gs_uint32_t i_0_9; Uenibstreamprotobuf__MeasResultNR *node_0_10 = NULL; Uenibstreamprotobuf__MeasResult *node_0_11 = NULL; Uenibstreamprotobuf__CellResults *node_0_12 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_0_13 = NULL; // ------------------------------------------ // --- Variables for .proto rrctransfer.json, path rrc_metrics.json struct _nr_neighbor *nr_neighbor = NULL; Uenibstreamprotobuf__RRCTransfer *node_1_0 = NULL; Uenibstreamprotobuf__RRCTransferIEs *node_1_1 = NULL; Uenibstreamprotobuf__UENRMeasurement *node_1_2 = NULL; Uenibstreamprotobuf__RRCContainer *node_1_3 = NULL; Uenibstreamprotobuf__ULDCCHMessageType *node_1_4 = NULL; Uenibstreamprotobuf__MeasurementReport *node_1_5 = NULL; Uenibstreamprotobuf__MeasurementReportIEs *node_1_6 = NULL; Uenibstreamprotobuf__MeasResults *node_1_7 = NULL; Uenibstreamprotobuf__MeasResultListNR *node_1_8 = NULL; Uenibstreamprotobuf__MeasResultNR *node_1_9 = NULL; gs_uint32_t i_1_9; Uenibstreamprotobuf__MeasResult *node_1_10 = NULL; Uenibstreamprotobuf__CellResults *node_1_11 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_1_12 = NULL; // ------------------------------------------ // --- Variables for .proto rrctransfer.json, path rrc_metrics.json struct _serv_cell_beam_csi *serv_cell_beam_csi = NULL; Uenibstreamprotobuf__RRCTransfer *node_2_0 = NULL; Uenibstreamprotobuf__RRCTransferIEs *node_2_1 = NULL; Uenibstreamprotobuf__UENRMeasurement *node_2_2 = NULL; Uenibstreamprotobuf__RRCContainer *node_2_3 = NULL; Uenibstreamprotobuf__ULDCCHMessageType *node_2_4 = NULL; Uenibstreamprotobuf__MeasurementReport *node_2_5 = NULL; Uenibstreamprotobuf__MeasurementReportIEs *node_2_6 = NULL; Uenibstreamprotobuf__MeasResults *node_2_7 = NULL; Uenibstreamprotobuf__MeasResultServMOList *node_2_8 = NULL; Uenibstreamprotobuf__MeasResultServMO *node_2_9 = NULL; gs_uint32_t i_2_9; Uenibstreamprotobuf__MeasResultNR *node_2_10 = NULL; Uenibstreamprotobuf__MeasResult *node_2_11 = NULL; Uenibstreamprotobuf__RsIndexResults *node_2_12 = NULL; Uenibstreamprotobuf__ResultsPerCSIRSIndexList *node_2_13 = NULL; Uenibstreamprotobuf__ResultsPerCSIRSIndex *node_2_14 = NULL; gs_uint32_t i_2_14; Uenibstreamprotobuf__MeasQuantityResults *node_2_15 = NULL; // ------------------------------------------ // --- Variables for .proto rrctransfer.json, path rrc_metrics.json struct _neighbor_beam_csi *neighbor_beam_csi = NULL; Uenibstreamprotobuf__RRCTransfer *node_3_0 = NULL; Uenibstreamprotobuf__RRCTransferIEs *node_3_1 = NULL; Uenibstreamprotobuf__UENRMeasurement *node_3_2 = NULL; Uenibstreamprotobuf__RRCContainer *node_3_3 = NULL; Uenibstreamprotobuf__ULDCCHMessageType *node_3_4 = NULL; Uenibstreamprotobuf__MeasurementReport *node_3_5 = NULL; Uenibstreamprotobuf__MeasurementReportIEs *node_3_6 = NULL; Uenibstreamprotobuf__MeasResults *node_3_7 = NULL; Uenibstreamprotobuf__MeasResultListNR *node_3_8 = NULL; Uenibstreamprotobuf__MeasResultNR *node_3_9 = NULL; gs_uint32_t i_3_9; Uenibstreamprotobuf__MeasResult *node_3_10 = NULL; Uenibstreamprotobuf__RsIndexResults *node_3_11 = NULL; Uenibstreamprotobuf__ResultsPerCSIRSIndexList *node_3_12 = NULL; Uenibstreamprotobuf__ResultsPerCSIRSIndex *node_3_13 = NULL; gs_uint32_t i_3_13; Uenibstreamprotobuf__MeasQuantityResults *node_3_14 = NULL; // ------------------------------------------ // --- Variables for .proto rrctransfer.json, path rrc_metrics.json struct _serv_cell_beam_ssb *serv_cell_beam_ssb = NULL; Uenibstreamprotobuf__RRCTransfer *node_4_0 = NULL; Uenibstreamprotobuf__RRCTransferIEs *node_4_1 = NULL; Uenibstreamprotobuf__UENRMeasurement *node_4_2 = NULL; Uenibstreamprotobuf__RRCContainer *node_4_3 = NULL; Uenibstreamprotobuf__ULDCCHMessageType *node_4_4 = NULL; Uenibstreamprotobuf__MeasurementReport *node_4_5 = NULL; Uenibstreamprotobuf__MeasurementReportIEs *node_4_6 = NULL; Uenibstreamprotobuf__MeasResults *node_4_7 = NULL; Uenibstreamprotobuf__MeasResultServMOList *node_4_8 = NULL; Uenibstreamprotobuf__MeasResultServMO *node_4_9 = NULL; gs_uint32_t i_4_9; Uenibstreamprotobuf__MeasResultNR *node_4_10 = NULL; Uenibstreamprotobuf__MeasResult *node_4_11 = NULL; Uenibstreamprotobuf__RsIndexResults *node_4_12 = NULL; Uenibstreamprotobuf__ResultsPerSSBIndexList *node_4_13 = NULL; Uenibstreamprotobuf__ResultsPerSSBIndex *node_4_14 = NULL; gs_uint32_t i_4_14; Uenibstreamprotobuf__MeasQuantityResults *node_4_15 = NULL; // ------------------------------------------ // --- Variables for .proto rrctransfer.json, path rrc_metrics.json struct _neighbor_beam_ssb *neighbor_beam_ssb = NULL; Uenibstreamprotobuf__RRCTransfer *node_5_0 = NULL; Uenibstreamprotobuf__RRCTransferIEs *node_5_1 = NULL; Uenibstreamprotobuf__UENRMeasurement *node_5_2 = NULL; Uenibstreamprotobuf__RRCContainer *node_5_3 = NULL; Uenibstreamprotobuf__ULDCCHMessageType *node_5_4 = NULL; Uenibstreamprotobuf__MeasurementReport *node_5_5 = NULL; Uenibstreamprotobuf__MeasurementReportIEs *node_5_6 = NULL; Uenibstreamprotobuf__MeasResults *node_5_7 = NULL; Uenibstreamprotobuf__MeasResultListNR *node_5_8 = NULL; Uenibstreamprotobuf__MeasResultNR *node_5_9 = NULL; gs_uint32_t i_5_9; Uenibstreamprotobuf__MeasResult *node_5_10 = NULL; Uenibstreamprotobuf__RsIndexResults *node_5_11 = NULL; Uenibstreamprotobuf__ResultsPerSSBIndexList *node_5_12 = NULL; Uenibstreamprotobuf__ResultsPerSSBIndex *node_5_13 = NULL; gs_uint32_t i_5_13; Uenibstreamprotobuf__MeasQuantityResults *node_5_14 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values); cur_packet.schema = 1; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->rrctransfer; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; serv_nr_cell->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) serv_nr_cell->gnb_id = empty_string; else serv_nr_cell->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->rrctransfer_ies; if(node_0_0->rrctransfer_ies){ serv_nr_cell->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; serv_nr_cell->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; node_0_2 = node_0_1->id_uenrmeasurement; if(node_0_1->id_uenrmeasurement){ node_0_3 = node_0_2->uenrmeasurements; if(node_0_2->uenrmeasurements){ node_0_4 = node_0_3->ul_dcch_message; if(node_0_3->ul_dcch_message){ node_0_5 = node_0_4->measurementreport; if(node_0_4->measurementreport){ node_0_6 = node_0_5->measurementreport; if(node_0_5->measurementreport){ node_0_7 = node_0_6->measresults; if(node_0_6->measresults){ node_0_8 = node_0_7->measresultservingmolist; if(node_0_7->measresultservingmolist){ for(i_0_9=0;i_0_9n_items; i_0_9++){ node_0_9 = node_0_8->items[i_0_9]; serv_nr_cell->servCellID = node_0_9->servcellid; node_0_10 = node_0_9->measresultservingcell; if(node_0_9->measresultservingcell){ if(node_0_10->physcellid){ serv_nr_cell->physCellId = node_0_10->physcellid->value; serv_nr_cell->physCellId_exists = 1; }else{ serv_nr_cell->physCellId_exists = 0; } node_0_11 = node_0_10->measresult; if(node_0_10->measresult){ node_0_12 = node_0_11->cellresults; if(node_0_11->cellresults){ node_0_13 = node_0_12->resultsssb_cell; if(node_0_12->resultsssb_cell){ if(node_0_13->rsrq){ serv_nr_cell->rsrq = node_0_13->rsrq->value; serv_nr_cell->rsrq_exists = 1; }else{ serv_nr_cell->rsrq_exists = 0; } if(node_0_13->rsrp){ serv_nr_cell->rsrp = node_0_13->rsrp->value; serv_nr_cell->rsrp_exists = 1; }else{ serv_nr_cell->rsrp_exists = 0; } if(node_0_13->sinr){ serv_nr_cell->sinr = node_0_13->sinr->value; serv_nr_cell->sinr_exists = 1; }else{ serv_nr_cell->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values); cur_packet.schema = 4; node_1_0 = node_0_0; nr_neighbor->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) nr_neighbor->gnb_id = empty_string; else nr_neighbor->gnb_id = hdr->header->gnbid->value; node_1_1 = node_1_0->rrctransfer_ies; if(node_1_0->rrctransfer_ies){ nr_neighbor->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id; nr_neighbor->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id; node_1_2 = node_1_1->id_uenrmeasurement; if(node_1_1->id_uenrmeasurement){ node_1_3 = node_1_2->uenrmeasurements; if(node_1_2->uenrmeasurements){ node_1_4 = node_1_3->ul_dcch_message; if(node_1_3->ul_dcch_message){ node_1_5 = node_1_4->measurementreport; if(node_1_4->measurementreport){ node_1_6 = node_1_5->measurementreport; if(node_1_5->measurementreport){ node_1_7 = node_1_6->measresults; if(node_1_6->measresults){ node_1_8 = node_1_7->measresultlistnr; if(node_1_7->measresultlistnr){ for(i_1_9=0;i_1_9n_items; i_1_9++){ node_1_9 = node_1_8->items[i_1_9]; if(node_1_9->physcellid){ nr_neighbor->physCellId = node_1_9->physcellid->value; nr_neighbor->physCellId_exists = 1; }else{ nr_neighbor->physCellId_exists = 0; } node_1_10 = node_1_9->measresult; if(node_1_9->measresult){ node_1_11 = node_1_10->cellresults; if(node_1_10->cellresults){ node_1_12 = node_1_11->resultsssb_cell; if(node_1_11->resultsssb_cell){ if(node_1_12->rsrq){ nr_neighbor->rsrq = node_1_12->rsrq->value; nr_neighbor->rsrq_exists = 1; }else{ nr_neighbor->rsrq_exists = 0; } if(node_1_12->rsrp){ nr_neighbor->rsrp = node_1_12->rsrp->value; nr_neighbor->rsrp_exists = 1; }else{ nr_neighbor->rsrp_exists = 0; } if(node_1_12->sinr){ nr_neighbor->sinr = node_1_12->sinr->value; nr_neighbor->sinr_exists = 1; }else{ nr_neighbor->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json serv_cell_beam_csi = (struct _serv_cell_beam_csi *)(cur_packet.record.packed.values); cur_packet.schema = 2; node_2_0 = node_1_0; serv_cell_beam_csi->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) serv_cell_beam_csi->gnb_id = empty_string; else serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value; node_2_1 = node_2_0->rrctransfer_ies; if(node_2_0->rrctransfer_ies){ serv_cell_beam_csi->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id; serv_cell_beam_csi->id_SgNB_UE_X2AP_ID = node_2_1->id_sgnb_ue_x2ap_id; node_2_2 = node_2_1->id_uenrmeasurement; if(node_2_1->id_uenrmeasurement){ node_2_3 = node_2_2->uenrmeasurements; if(node_2_2->uenrmeasurements){ node_2_4 = node_2_3->ul_dcch_message; if(node_2_3->ul_dcch_message){ node_2_5 = node_2_4->measurementreport; if(node_2_4->measurementreport){ node_2_6 = node_2_5->measurementreport; if(node_2_5->measurementreport){ node_2_7 = node_2_6->measresults; if(node_2_6->measresults){ node_2_8 = node_2_7->measresultservingmolist; if(node_2_7->measresultservingmolist){ for(i_2_9=0;i_2_9n_items; i_2_9++){ node_2_9 = node_2_8->items[i_2_9]; serv_cell_beam_csi->servCellID = node_2_9->servcellid; node_2_10 = node_2_9->measresultservingcell; if(node_2_9->measresultservingcell){ if(node_2_10->physcellid){ serv_cell_beam_csi->physCellId = node_2_10->physcellid->value; serv_cell_beam_csi->physCellId_exists = 1; }else{ serv_cell_beam_csi->physCellId_exists = 0; } node_2_11 = node_2_10->measresult; if(node_2_10->measresult){ node_2_12 = node_2_11->rsindexresults; if(node_2_11->rsindexresults){ node_2_13 = node_2_12->resultscsi_rs_indexes; if(node_2_12->resultscsi_rs_indexes){ for(i_2_14=0;i_2_14n_items; i_2_14++){ node_2_14 = node_2_13->items[i_2_14]; serv_cell_beam_csi->csi_rs_index = node_2_14->csi_rs_index; node_2_15 = node_2_14->csi_rs_results; if(node_2_14->csi_rs_results){ if(node_2_15->rsrq){ serv_cell_beam_csi->rsrq = node_2_15->rsrq->value; serv_cell_beam_csi->rsrq_exists = 1; }else{ serv_cell_beam_csi->rsrq_exists = 0; } if(node_2_15->rsrp){ serv_cell_beam_csi->rsrp = node_2_15->rsrp->value; serv_cell_beam_csi->rsrp_exists = 1; }else{ serv_cell_beam_csi->rsrp_exists = 0; } if(node_2_15->sinr){ serv_cell_beam_csi->sinr = node_2_15->sinr->value; serv_cell_beam_csi->sinr_exists = 1; }else{ serv_cell_beam_csi->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json neighbor_beam_csi = (struct _neighbor_beam_csi *)(cur_packet.record.packed.values); cur_packet.schema = 5; node_3_0 = node_2_0; neighbor_beam_csi->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) neighbor_beam_csi->gnb_id = empty_string; else neighbor_beam_csi->gnb_id = hdr->header->gnbid->value; node_3_1 = node_3_0->rrctransfer_ies; if(node_3_0->rrctransfer_ies){ neighbor_beam_csi->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id; neighbor_beam_csi->id_SgNB_UE_X2AP_ID = node_3_1->id_sgnb_ue_x2ap_id; node_3_2 = node_3_1->id_uenrmeasurement; if(node_3_1->id_uenrmeasurement){ node_3_3 = node_3_2->uenrmeasurements; if(node_3_2->uenrmeasurements){ node_3_4 = node_3_3->ul_dcch_message; if(node_3_3->ul_dcch_message){ node_3_5 = node_3_4->measurementreport; if(node_3_4->measurementreport){ node_3_6 = node_3_5->measurementreport; if(node_3_5->measurementreport){ node_3_7 = node_3_6->measresults; if(node_3_6->measresults){ node_3_8 = node_3_7->measresultlistnr; if(node_3_7->measresultlistnr){ for(i_3_9=0;i_3_9n_items; i_3_9++){ node_3_9 = node_3_8->items[i_3_9]; if(node_3_9->physcellid){ neighbor_beam_csi->physCellId = node_3_9->physcellid->value; neighbor_beam_csi->physCellId_exists = 1; }else{ neighbor_beam_csi->physCellId_exists = 0; } node_3_10 = node_3_9->measresult; if(node_3_9->measresult){ node_3_11 = node_3_10->rsindexresults; if(node_3_10->rsindexresults){ node_3_12 = node_3_11->resultscsi_rs_indexes; if(node_3_11->resultscsi_rs_indexes){ for(i_3_13=0;i_3_13n_items; i_3_13++){ node_3_13 = node_3_12->items[i_3_13]; neighbor_beam_csi->csi_rs_index = node_3_13->csi_rs_index; node_3_14 = node_3_13->csi_rs_results; if(node_3_13->csi_rs_results){ if(node_3_14->rsrq){ neighbor_beam_csi->rsrq = node_3_14->rsrq->value; neighbor_beam_csi->rsrq_exists = 1; }else{ neighbor_beam_csi->rsrq_exists = 0; } if(node_3_14->rsrp){ neighbor_beam_csi->rsrp = node_3_14->rsrp->value; neighbor_beam_csi->rsrp_exists = 1; }else{ neighbor_beam_csi->rsrp_exists = 0; } if(node_3_14->sinr){ neighbor_beam_csi->sinr = node_3_14->sinr->value; neighbor_beam_csi->sinr_exists = 1; }else{ neighbor_beam_csi->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json serv_cell_beam_ssb = (struct _serv_cell_beam_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 3; node_4_0 = node_3_0; serv_cell_beam_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) serv_cell_beam_ssb->gnb_id = empty_string; else serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value; node_4_1 = node_4_0->rrctransfer_ies; if(node_4_0->rrctransfer_ies){ serv_cell_beam_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id; serv_cell_beam_ssb->id_SgNB_UE_X2AP_ID = node_4_1->id_sgnb_ue_x2ap_id; node_4_2 = node_4_1->id_uenrmeasurement; if(node_4_1->id_uenrmeasurement){ node_4_3 = node_4_2->uenrmeasurements; if(node_4_2->uenrmeasurements){ node_4_4 = node_4_3->ul_dcch_message; if(node_4_3->ul_dcch_message){ node_4_5 = node_4_4->measurementreport; if(node_4_4->measurementreport){ node_4_6 = node_4_5->measurementreport; if(node_4_5->measurementreport){ node_4_7 = node_4_6->measresults; if(node_4_6->measresults){ node_4_8 = node_4_7->measresultservingmolist; if(node_4_7->measresultservingmolist){ for(i_4_9=0;i_4_9n_items; i_4_9++){ node_4_9 = node_4_8->items[i_4_9]; serv_cell_beam_ssb->servCellID = node_4_9->servcellid; node_4_10 = node_4_9->measresultservingcell; if(node_4_9->measresultservingcell){ if(node_4_10->physcellid){ serv_cell_beam_ssb->physCellId = node_4_10->physcellid->value; serv_cell_beam_ssb->physCellId_exists = 1; }else{ serv_cell_beam_ssb->physCellId_exists = 0; } node_4_11 = node_4_10->measresult; if(node_4_10->measresult){ node_4_12 = node_4_11->rsindexresults; if(node_4_11->rsindexresults){ node_4_13 = node_4_12->resultsssb_indexes; if(node_4_12->resultsssb_indexes){ for(i_4_14=0;i_4_14n_items; i_4_14++){ node_4_14 = node_4_13->items[i_4_14]; serv_cell_beam_ssb->ssb_Index = node_4_14->ssb_index; node_4_15 = node_4_14->ssb_results; if(node_4_14->ssb_results){ if(node_4_15->rsrq){ serv_cell_beam_ssb->rsrq = node_4_15->rsrq->value; serv_cell_beam_ssb->rsrq_exists = 1; }else{ serv_cell_beam_ssb->rsrq_exists = 0; } if(node_4_15->rsrp){ serv_cell_beam_ssb->rsrp = node_4_15->rsrp->value; serv_cell_beam_ssb->rsrp_exists = 1; }else{ serv_cell_beam_ssb->rsrp_exists = 0; } if(node_4_15->sinr){ serv_cell_beam_ssb->sinr = node_4_15->sinr->value; serv_cell_beam_ssb->sinr_exists = 1; }else{ serv_cell_beam_ssb->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json neighbor_beam_ssb = (struct _neighbor_beam_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 6; node_5_0 = node_4_0; neighbor_beam_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) neighbor_beam_ssb->gnb_id = empty_string; else neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value; node_5_1 = node_5_0->rrctransfer_ies; if(node_5_0->rrctransfer_ies){ neighbor_beam_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id; neighbor_beam_ssb->id_SgNB_UE_X2AP_ID = node_5_1->id_sgnb_ue_x2ap_id; node_5_2 = node_5_1->id_uenrmeasurement; if(node_5_1->id_uenrmeasurement){ node_5_3 = node_5_2->uenrmeasurements; if(node_5_2->uenrmeasurements){ node_5_4 = node_5_3->ul_dcch_message; if(node_5_3->ul_dcch_message){ node_5_5 = node_5_4->measurementreport; if(node_5_4->measurementreport){ node_5_6 = node_5_5->measurementreport; if(node_5_5->measurementreport){ node_5_7 = node_5_6->measresults; if(node_5_6->measresults){ node_5_8 = node_5_7->measresultlistnr; if(node_5_7->measresultlistnr){ for(i_5_9=0;i_5_9n_items; i_5_9++){ node_5_9 = node_5_8->items[i_5_9]; if(node_5_9->physcellid){ neighbor_beam_ssb->physCellId = node_5_9->physcellid->value; neighbor_beam_ssb->physCellId_exists = 1; }else{ neighbor_beam_ssb->physCellId_exists = 0; } node_5_10 = node_5_9->measresult; if(node_5_9->measresult){ node_5_11 = node_5_10->rsindexresults; if(node_5_10->rsindexresults){ node_5_12 = node_5_11->resultsssb_indexes; if(node_5_11->resultsssb_indexes){ for(i_5_13=0;i_5_13n_items; i_5_13++){ node_5_13 = node_5_12->items[i_5_13]; neighbor_beam_ssb->ssb_Index = node_5_13->ssb_index; node_5_14 = node_5_13->ssb_results; if(node_5_13->ssb_results){ if(node_5_14->rsrq){ neighbor_beam_ssb->rsrq = node_5_14->rsrq->value; neighbor_beam_ssb->rsrq_exists = 1; }else{ neighbor_beam_ssb->rsrq_exists = 0; } if(node_5_14->rsrp){ neighbor_beam_ssb->rsrp = node_5_14->rsrp->value; neighbor_beam_ssb->rsrp_exists = 1; }else{ neighbor_beam_ssb->rsrp_exists = 0; } if(node_5_14->sinr){ neighbor_beam_ssb->sinr = node_5_14->sinr->value; neighbor_beam_ssb->sinr_exists = 1; }else{ neighbor_beam_ssb->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } } } } uenibstreamprotobuf__rrctransfer__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_ADDREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json struct _sgnb_add_req_reject *sgnb_add_req_reject = NULL; Uenibstreamprotobuf__SgNBAdditionRequestReject *node_0_0 = NULL; Uenibstreamprotobuf__Cause *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values); cur_packet.schema = 701; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbadditionrequestreject; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_add_req_reject->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_add_req_reject->gnb_id = empty_string; else sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value; sgnb_add_req_reject->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id; sgnb_add_req_reject->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id; node_0_1 = node_0_0->id_cause; if(node_0_0->id_cause){ if(node_0_1->radionetwork){ sgnb_add_req_reject->cause_radio_network = node_0_1->radionetwork->value; }else{ sgnb_add_req_reject->cause_radio_network = -1; } if(node_0_1->transport){ sgnb_add_req_reject->cause_transport = node_0_1->transport->value; }else{ sgnb_add_req_reject->cause_transport = -1; } if(node_0_1->protocol){ sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value; }else{ sgnb_add_req_reject->cause_protocol = -1; } if(node_0_1->misc){ sgnb_add_req_reject->cause_misc = node_0_1->misc->value; }else{ sgnb_add_req_reject->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNB_ADDITION_REQ_ACK(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _eRABs_notadmitted_for_ue *eRABs_notadmitted_for_ue = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_0_0 = NULL; Uenibstreamprotobuf__ERABList *node_0_1 = NULL; Uenibstreamprotobuf__ERABItemIEs *node_0_2 = NULL; gs_uint32_t i_0_2; Uenibstreamprotobuf__ERABItem *node_0_3 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_1_0 = NULL; Uenibstreamprotobuf__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_1_1 = NULL; Uenibstreamprotobuf__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_1_2 = NULL; gs_uint32_t i_1_2; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_2_0 = NULL; Uenibstreamprotobuf__CGConfig *node_2_1 = NULL; Uenibstreamprotobuf__CGConfigCriticalExtensionsChoice1 *node_2_2 = NULL; Uenibstreamprotobuf__CGConfigIEs *node_2_3 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_3_0 = NULL; Uenibstreamprotobuf__CGConfig *node_3_1 = NULL; Uenibstreamprotobuf__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL; Uenibstreamprotobuf__CGConfigIEs *node_3_3 = NULL; Uenibstreamprotobuf__RadioBearerConfig *node_3_4 = NULL; Uenibstreamprotobuf__DRBToAddModList *node_3_5 = NULL; Uenibstreamprotobuf__DRBToAddMod *node_3_6 = NULL; gs_uint32_t i_3_6; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_4_0 = NULL; Uenibstreamprotobuf__CGConfig *node_4_1 = NULL; Uenibstreamprotobuf__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL; Uenibstreamprotobuf__CGConfigIEs *node_4_3 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_4_4 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_4_5 = NULL; gs_uint32_t i_4_5; Uenibstreamprotobuf__MeasResultNR *node_4_6 = NULL; Uenibstreamprotobuf__MeasResult *node_4_7 = NULL; Uenibstreamprotobuf__CellResults *node_4_8 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_4_9 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_5_0 = NULL; Uenibstreamprotobuf__CGConfig *node_5_1 = NULL; Uenibstreamprotobuf__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL; Uenibstreamprotobuf__CGConfigIEs *node_5_3 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_5_4 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_5_5 = NULL; gs_uint32_t i_5_5; Uenibstreamprotobuf__MeasResultNR *node_5_6 = NULL; Uenibstreamprotobuf__MeasResult *node_5_7 = NULL; Uenibstreamprotobuf__RsIndexResults *node_5_8 = NULL; Uenibstreamprotobuf__ResultsPerCSIRSIndexList *node_5_9 = NULL; Uenibstreamprotobuf__ResultsPerCSIRSIndex *node_5_10 = NULL; gs_uint32_t i_5_10; Uenibstreamprotobuf__MeasQuantityResults *node_5_11 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL; Uenibstreamprotobuf__SgNBAdditionRequestAcknowledge *node_6_0 = NULL; Uenibstreamprotobuf__CGConfig *node_6_1 = NULL; Uenibstreamprotobuf__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL; Uenibstreamprotobuf__CGConfigIEs *node_6_3 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_6_4 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_6_5 = NULL; gs_uint32_t i_6_5; Uenibstreamprotobuf__MeasResultNR *node_6_6 = NULL; Uenibstreamprotobuf__MeasResult *node_6_7 = NULL; Uenibstreamprotobuf__RsIndexResults *node_6_8 = NULL; Uenibstreamprotobuf__ResultsPerSSBIndexList *node_6_9 = NULL; Uenibstreamprotobuf__ResultsPerSSBIndex *node_6_10 = NULL; gs_uint32_t i_6_10; Uenibstreamprotobuf__MeasQuantityResults *node_6_11 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values); cur_packet.schema = 501; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbadditionrequestacknowledge; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; eRABs_notadmitted_for_ue->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) eRABs_notadmitted_for_ue->gnb_id = empty_string; else eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value; eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id; eRABs_notadmitted_for_ue->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id; if(node_0_0->id_menb_ue_x2ap_id_extension){ eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value; }else{ eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; } node_0_1 = node_0_0->id_e_rabs_notadmitted_list; if(node_0_0->id_e_rabs_notadmitted_list){ for(i_0_2=0;i_0_2n_items; i_0_2++){ node_0_2 = node_0_1->items[i_0_2]; node_0_3 = node_0_2->id_e_rab_item; if(node_0_2->id_e_rab_item){ eRABs_notadmitted_for_ue->e_RAB_ID = node_0_3->e_rab_id; if(node_0_3->cause && node_0_3->cause->transport){ eRABs_notadmitted_for_ue->cause_transport = node_0_3->cause->transport->value; }else{ eRABs_notadmitted_for_ue->cause_transport = -1; } if(node_0_3->cause && node_0_3->cause->protocol){ eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value; }else{ eRABs_notadmitted_for_ue->cause_protocol = -1; } if(node_0_3->cause && node_0_3->cause->misc){ eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value; }else{ eRABs_notadmitted_for_ue->cause_misc = -1; } if(node_0_3->cause && node_0_3->cause->radionetwork){ eRABs_notadmitted_for_ue->cause_radio_network = node_0_3->cause->radionetwork->value; }else{ eRABs_notadmitted_for_ue->cause_radio_network = -1; } rts_fta_process_packet(&cur_packet); } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values); cur_packet.schema = 502; node_1_0 = node_0_0; eRABs_acked_for_admit_for_ue->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) eRABs_acked_for_admit_for_ue->gnb_id = empty_string; else eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value; eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id; eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id; if(node_1_0->id_menb_ue_x2ap_id_extension){ eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value; }else{ eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; } node_1_1 = node_1_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist; if(node_1_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){ for(i_1_2=0;i_1_2n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_1_2++){ node_1_2 = node_1_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_1_2]; if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid; eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1; }else{ eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0; } if(node_1_2->en_dc_resourceconfiguration){ eRABs_acked_for_admit_for_ue->mCGresources = node_1_2->en_dc_resourceconfiguration->mcgresources; eRABs_acked_for_admit_for_ue->mCGresources_exists = 1; }else{ eRABs_acked_for_admit_for_ue->mCGresources_exists = 0; } if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress; eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1; }else{ eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0; } if(node_1_2->en_dc_resourceconfiguration){ eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_1_2->en_dc_resourceconfiguration->pdcpatsgnb; eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1; }else{ eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0; } if(node_1_2->en_dc_resourceconfiguration){ eRABs_acked_for_admit_for_ue->sCGresources = node_1_2->en_dc_resourceconfiguration->scgresources; eRABs_acked_for_admit_for_ue->sCGresources_exists = 1; }else{ eRABs_acked_for_admit_for_ue->sCGresources_exists = 0; } eRABs_acked_for_admit_for_ue->e_RAB_ID = node_1_2->e_rab_id; if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){ eRABs_acked_for_admit_for_ue->qCI = node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci; }else{ eRABs_acked_for_admit_for_ue->qCI = 0; } rts_fta_process_packet(&cur_packet); } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values); cur_packet.schema = 503; node_2_0 = node_1_0; SgNB_ack_for_ue_NRfreqs->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) SgNB_ack_for_ue_NRfreqs->gnb_id = empty_string; else SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value; SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id; SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id; if(node_2_0->id_menb_ue_x2ap_id_extension){ SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0; } node_2_1 = node_2_0->id_sgnbtomenbcontainer; if(node_2_0->id_sgnbtomenbcontainer){ node_2_2 = node_2_1->criticalextensionschoice1; if(node_2_1->criticalextensionschoice1){ node_2_3 = node_2_2->protocolies; if(node_2_2->protocolies){ if(node_2_3->scg_cellgroupconfig){ SgNB_ack_for_ue_NRfreqs->scg_CellGroupConfig = node_2_3->scg_cellgroupconfig->value; SgNB_ack_for_ue_NRfreqs->scg_CellGroupConfig_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->scg_CellGroupConfig_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 0){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_2_3->candidateservingfreqlistnr->items[0]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 1){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_2_3->candidateservingfreqlistnr->items[1]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 2){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_2_3->candidateservingfreqlistnr->items[2]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 3){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_2_3->candidateservingfreqlistnr->items[3]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 4){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_2_3->candidateservingfreqlistnr->items[4]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 5){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_2_3->candidateservingfreqlistnr->items[5]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 6){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_2_3->candidateservingfreqlistnr->items[6]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0; } if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 7){ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_2_3->candidateservingfreqlistnr->items[7]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 0 && node_2_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_2_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 1 && node_2_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_2_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 2 && node_2_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_2_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 3 && node_2_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_2_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 4 && node_2_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_2_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 5 && node_2_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_2_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 6 && node_2_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_2_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0; } if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 7 && node_2_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_2_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0; } rts_fta_process_packet(&cur_packet); } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values); cur_packet.schema = 504; node_3_0 = node_2_0; SgNB_ack_for_add_mod_for_ue->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) SgNB_ack_for_add_mod_for_ue->gnb_id = empty_string; else SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value; SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id; SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id; if(node_3_0->id_menb_ue_x2ap_id_extension){ SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; } node_3_1 = node_3_0->id_sgnbtomenbcontainer; if(node_3_0->id_sgnbtomenbcontainer){ node_3_2 = node_3_1->criticalextensionschoice1; if(node_3_1->criticalextensionschoice1){ node_3_3 = node_3_2->protocolies; if(node_3_2->protocolies){ node_3_4 = node_3_3->scg_rb_config; if(node_3_3->scg_rb_config){ if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 0){ SgNB_ack_for_add_mod_for_ue->toRelease0 = node_3_4->drb_toreleaselist->items[0]; SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0; } if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 1){ SgNB_ack_for_add_mod_for_ue->toRelease1 = node_3_4->drb_toreleaselist->items[1]; SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0; } if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 2){ SgNB_ack_for_add_mod_for_ue->toRelease2 = node_3_4->drb_toreleaselist->items[2]; SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0; } if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 3){ SgNB_ack_for_add_mod_for_ue->toRelease3 = node_3_4->drb_toreleaselist->items[3]; SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0; } node_3_5 = node_3_4->drb_toaddmodlist; if(node_3_4->drb_toaddmodlist){ for(i_3_6=0;i_3_6n_items; i_3_6++){ node_3_6 = node_3_5->items[i_3_6]; if(node_3_6->recoverpdcp){ SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_3_6->recoverpdcp->value; SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0; } if(node_3_6->reestablishpdcp){ SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_3_6->reestablishpdcp->value; SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0; } SgNB_ack_for_add_mod_for_ue->drb_Identity = node_3_6->drb_identity; SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_3_6->eps_beareridentity; rts_fta_process_packet(&cur_packet); } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values); cur_packet.schema = 505; node_4_0 = node_3_0; SgNB_ack_for_ue_measurements->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) SgNB_ack_for_ue_measurements->gnb_id = empty_string; else SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value; SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id; SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id; if(node_4_0->id_menb_ue_x2ap_id_extension){ SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0; } node_4_1 = node_4_0->id_sgnbtomenbcontainer; if(node_4_0->id_sgnbtomenbcontainer){ node_4_2 = node_4_1->criticalextensionschoice1; if(node_4_1->criticalextensionschoice1){ node_4_3 = node_4_2->protocolies; if(node_4_2->protocolies){ node_4_4 = node_4_3->candidatecellinfolistsn; if(node_4_3->candidatecellinfolistsn){ for(i_4_5=0;i_4_5n_items; i_4_5++){ node_4_5 = node_4_4->items[i_4_5]; if(node_4_5->ssbfrequency){ SgNB_ack_for_ue_measurements->ssbFrequency = node_4_5->ssbfrequency->value; SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1; }else{ SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0; } if(node_4_5->reffreqcsi_rs){ SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_4_5->reffreqcsi_rs->value; SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1; }else{ SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0; } node_4_6 = node_4_5->measresultservingcell; if(node_4_5->measresultservingcell){ if(node_4_6->physcellid){ SgNB_ack_for_ue_measurements->physCellId = node_4_6->physcellid->value; SgNB_ack_for_ue_measurements->physCellId_exists = 1; }else{ SgNB_ack_for_ue_measurements->physCellId_exists = 0; } node_4_7 = node_4_6->measresult; if(node_4_6->measresult){ node_4_8 = node_4_7->cellresults; if(node_4_7->cellresults){ node_4_9 = node_4_8->resultscsi_rs_cell; if(node_4_8->resultscsi_rs_cell){ if(node_4_9->rsrq){ SgNB_ack_for_ue_measurements->rsrq = node_4_9->rsrq->value; SgNB_ack_for_ue_measurements->rsrq_exists = 1; }else{ SgNB_ack_for_ue_measurements->rsrq_exists = 0; } if(node_4_9->rsrp){ SgNB_ack_for_ue_measurements->rsrp = node_4_9->rsrp->value; SgNB_ack_for_ue_measurements->rsrp_exists = 1; }else{ SgNB_ack_for_ue_measurements->rsrp_exists = 0; } if(node_4_9->sinr){ SgNB_ack_for_ue_measurements->sinr = node_4_9->sinr->value; SgNB_ack_for_ue_measurements->sinr_exists = 1; }else{ SgNB_ack_for_ue_measurements->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values); cur_packet.schema = 506; node_5_0 = node_4_0; SgNB_ack_for_ue_beam_csi->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) SgNB_ack_for_ue_beam_csi->gnb_id = empty_string; else SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value; SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id; SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id; if(node_5_0->id_menb_ue_x2ap_id_extension){ SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0; } node_5_1 = node_5_0->id_sgnbtomenbcontainer; if(node_5_0->id_sgnbtomenbcontainer){ node_5_2 = node_5_1->criticalextensionschoice1; if(node_5_1->criticalextensionschoice1){ node_5_3 = node_5_2->protocolies; if(node_5_2->protocolies){ node_5_4 = node_5_3->candidatecellinfolistsn; if(node_5_3->candidatecellinfolistsn){ for(i_5_5=0;i_5_5n_items; i_5_5++){ node_5_5 = node_5_4->items[i_5_5]; if(node_5_5->ssbfrequency){ SgNB_ack_for_ue_beam_csi->ssbFrequency = node_5_5->ssbfrequency->value; SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0; } if(node_5_5->reffreqcsi_rs){ SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value; SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0; } node_5_6 = node_5_5->measresultservingcell; if(node_5_5->measresultservingcell){ if(node_5_6->physcellid){ SgNB_ack_for_ue_beam_csi->physCellId = node_5_6->physcellid->value; SgNB_ack_for_ue_beam_csi->physCellId_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->physCellId_exists = 0; } node_5_7 = node_5_6->measresult; if(node_5_6->measresult){ node_5_8 = node_5_7->rsindexresults; if(node_5_7->rsindexresults){ node_5_9 = node_5_8->resultscsi_rs_indexes; if(node_5_8->resultscsi_rs_indexes){ for(i_5_10=0;i_5_10n_items; i_5_10++){ node_5_10 = node_5_9->items[i_5_10]; SgNB_ack_for_ue_beam_csi->csi_rs_index = node_5_10->csi_rs_index; node_5_11 = node_5_10->csi_rs_results; if(node_5_10->csi_rs_results){ if(node_5_11->rsrq){ SgNB_ack_for_ue_beam_csi->rsrq = node_5_11->rsrq->value; SgNB_ack_for_ue_beam_csi->rsrq_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->rsrq_exists = 0; } if(node_5_11->rsrp){ SgNB_ack_for_ue_beam_csi->rsrp = node_5_11->rsrp->value; SgNB_ack_for_ue_beam_csi->rsrp_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->rsrp_exists = 0; } if(node_5_11->sinr){ SgNB_ack_for_ue_beam_csi->sinr = node_5_11->sinr->value; SgNB_ack_for_ue_beam_csi->sinr_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 507; node_6_0 = node_5_0; SgNB_ack_for_ue_beam_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) SgNB_ack_for_ue_beam_ssb->gnb_id = empty_string; else SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value; SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id; SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id; if(node_6_0->id_menb_ue_x2ap_id_extension){ SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; } node_6_1 = node_6_0->id_sgnbtomenbcontainer; if(node_6_0->id_sgnbtomenbcontainer){ node_6_2 = node_6_1->criticalextensionschoice1; if(node_6_1->criticalextensionschoice1){ node_6_3 = node_6_2->protocolies; if(node_6_2->protocolies){ node_6_4 = node_6_3->candidatecellinfolistsn; if(node_6_3->candidatecellinfolistsn){ for(i_6_5=0;i_6_5n_items; i_6_5++){ node_6_5 = node_6_4->items[i_6_5]; if(node_6_5->ssbfrequency){ SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_6_5->ssbfrequency->value; SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0; } if(node_6_5->reffreqcsi_rs){ SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value; SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0; } node_6_6 = node_6_5->measresultservingcell; if(node_6_5->measresultservingcell){ if(node_6_6->physcellid){ SgNB_ack_for_ue_beam_ssb->physCellId = node_6_6->physcellid->value; SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0; } node_6_7 = node_6_6->measresult; if(node_6_6->measresult){ node_6_8 = node_6_7->rsindexresults; if(node_6_7->rsindexresults){ node_6_9 = node_6_8->resultsssb_indexes; if(node_6_8->resultsssb_indexes){ for(i_6_10=0;i_6_10n_items; i_6_10++){ node_6_10 = node_6_9->items[i_6_10]; SgNB_ack_for_ue_beam_ssb->ssb_Index = node_6_10->ssb_index; node_6_11 = node_6_10->ssb_results; if(node_6_10->ssb_results){ if(node_6_11->rsrq){ SgNB_ack_for_ue_beam_ssb->rsrq = node_6_11->rsrq->value; SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0; } if(node_6_11->rsrp){ SgNB_ack_for_ue_beam_ssb->rsrp = node_6_11->rsrp->value; SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0; } if(node_6_11->sinr){ SgNB_ack_for_ue_beam_ssb->sinr = node_6_11->sinr->value; SgNB_ack_for_ue_beam_ssb->sinr_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->sinr_exists = 0; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } uenibstreamprotobuf__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNB_ADDITION_REQ(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue *sgnb_addreq_for_ue = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_0_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_0_1 = NULL; Uenibstreamprotobuf__ECGI *node_0_2 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_bearers *sgnb_addreq_for_ue_bearers = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_1_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_1_1 = NULL; Uenibstreamprotobuf__ERABsToBeAddedSgNBAddReqList *node_1_2 = NULL; Uenibstreamprotobuf__ERABsToBeAddedSgNBAddReqItemIEs *node_1_3 = NULL; gs_uint32_t i_1_3; Uenibstreamprotobuf__ERABsToBeAddedSgNBAddReqItem *node_1_4 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_sn_serv_ssb *sgnb_addreq_for_ue_sn_serv_ssb = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_2_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_2_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_2_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_2_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_2_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_2_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_2_6 = NULL; gs_uint32_t i_2_6; Uenibstreamprotobuf__MeasResultNR *node_2_7 = NULL; Uenibstreamprotobuf__MeasResult *node_2_8 = NULL; Uenibstreamprotobuf__CellResults *node_2_9 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_2_10 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_sn_serv_csi_rs *sgnb_addreq_for_ue_sn_serv_csi_rs = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_3_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_3_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_3_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_3_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_3_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_3_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_3_6 = NULL; gs_uint32_t i_3_6; Uenibstreamprotobuf__MeasResultNR *node_3_7 = NULL; Uenibstreamprotobuf__MeasResult *node_3_8 = NULL; Uenibstreamprotobuf__CellResults *node_3_9 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_3_10 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_mn_serv_ssb *sgnb_addreq_for_ue_mn_serv_ssb = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_4_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_4_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_4_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_4_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_4_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_4_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_4_6 = NULL; gs_uint32_t i_4_6; Uenibstreamprotobuf__MeasResultNR *node_4_7 = NULL; Uenibstreamprotobuf__MeasResult *node_4_8 = NULL; Uenibstreamprotobuf__CellResults *node_4_9 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_4_10 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_mn_serv_csi_rs *sgnb_addreq_for_ue_mn_serv_csi_rs = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_5_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_5_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_5_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_5_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_5_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_5_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_5_6 = NULL; gs_uint32_t i_5_6; Uenibstreamprotobuf__MeasResultNR *node_5_7 = NULL; Uenibstreamprotobuf__MeasResult *node_5_8 = NULL; Uenibstreamprotobuf__CellResults *node_5_9 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_5_10 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_sn_neigh_ssb *sgnb_addreq_for_ue_sn_neigh_ssb = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_6_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_6_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_6_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_6_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_6_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_6_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_6_6 = NULL; gs_uint32_t i_6_6; Uenibstreamprotobuf__MeasResultListNR *node_6_7 = NULL; Uenibstreamprotobuf__MeasResultNR *node_6_8 = NULL; gs_uint32_t i_6_8; Uenibstreamprotobuf__MeasResult *node_6_9 = NULL; Uenibstreamprotobuf__CellResults *node_6_10 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_6_11 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *sgnb_addreq_for_ue_sn_neigh_csi_rs = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_7_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_7_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_7_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_7_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_7_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_7_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_7_6 = NULL; gs_uint32_t i_7_6; Uenibstreamprotobuf__MeasResultListNR *node_7_7 = NULL; Uenibstreamprotobuf__MeasResultNR *node_7_8 = NULL; gs_uint32_t i_7_8; Uenibstreamprotobuf__MeasResult *node_7_9 = NULL; Uenibstreamprotobuf__CellResults *node_7_10 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_7_11 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_mn_neigh_ssb *sgnb_addreq_for_ue_mn_neigh_ssb = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_8_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_8_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_8_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_8_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_8_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_8_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_8_6 = NULL; gs_uint32_t i_8_6; Uenibstreamprotobuf__MeasResultListNR *node_8_7 = NULL; Uenibstreamprotobuf__MeasResultNR *node_8_8 = NULL; gs_uint32_t i_8_8; Uenibstreamprotobuf__MeasResult *node_8_9 = NULL; Uenibstreamprotobuf__CellResults *node_8_10 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_8_11 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *sgnb_addreq_for_ue_mn_neigh_csi_rs = NULL; Uenibstreamprotobuf__SgNBAdditionRequest *node_9_0 = NULL; Uenibstreamprotobuf__SgNBAdditionRequestIEs *node_9_1 = NULL; Uenibstreamprotobuf__CGConfigInfo *node_9_2 = NULL; Uenibstreamprotobuf__CGConfigInfoCriticalExtensionsChoice1 *node_9_3 = NULL; Uenibstreamprotobuf__CGConfigInfoIEs *node_9_4 = NULL; Uenibstreamprotobuf__MeasResultList2NR *node_9_5 = NULL; Uenibstreamprotobuf__MeasResult2NR *node_9_6 = NULL; gs_uint32_t i_9_6; Uenibstreamprotobuf__MeasResultListNR *node_9_7 = NULL; Uenibstreamprotobuf__MeasResultNR *node_9_8 = NULL; gs_uint32_t i_9_8; Uenibstreamprotobuf__MeasResult *node_9_9 = NULL; Uenibstreamprotobuf__CellResults *node_9_10 = NULL; Uenibstreamprotobuf__MeasQuantityResults *node_9_11 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue = (struct _sgnb_addreq_for_ue *)(cur_packet.record.packed.values); cur_packet.schema = 401; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbadditionrequest; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_addreq_for_ue->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue->gnb_id = empty_string; else sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; if(node_0_1->id_sgnbueaggregatemaximumbitrate){ sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink = node_0_1->id_sgnbueaggregatemaximumbitrate->ueaggregatemaximumbitratedownlink; sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 1; }else{ sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0; } if(node_0_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; } node_0_2 = node_0_1->id_menbcell_id; if(node_0_1->id_menbcell_id){ sgnb_addreq_for_ue->eUTRANcellIdentifier = node_0_2->eutrancellidentifier; sgnb_addreq_for_ue->pLMN_Identity = node_0_2->plmn_identity; rts_fta_process_packet(&cur_packet); } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_bearers = (struct _sgnb_addreq_for_ue_bearers *)(cur_packet.record.packed.values); cur_packet.schema = 402; node_1_0 = node_0_0; sgnb_addreq_for_ue_bearers->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_bearers->gnb_id = empty_string; else sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value; node_1_1 = node_1_0->protocolies; if(node_1_0->protocolies){ sgnb_addreq_for_ue_bearers->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id; node_1_2 = node_1_1->id_e_rabs_tobeadded_sgnbaddreqlist; if(node_1_1->id_e_rabs_tobeadded_sgnbaddreqlist){ for(i_1_3=0;i_1_3n_items; i_1_3++){ node_1_3 = node_1_2->items[i_1_3]; node_1_4 = node_1_3->id_e_rabs_tobeadded_sgnbaddreq_item; if(node_1_3->id_e_rabs_tobeadded_sgnbaddreq_item){ if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitratedl; }else{ sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0; } if(node_1_4->en_dc_resourceconfiguration){ sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_1_4->en_dc_resourceconfiguration->pdcpatsgnb; }else{ sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1; } sgnb_addreq_for_ue_bearers->drb_ID = node_1_4->drb_id; if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority){ sgnb_addreq_for_ue_bearers->priorityLevel = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel; }else{ sgnb_addreq_for_ue_bearers->priorityLevel = 0; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){ sgnb_addreq_for_ue_bearers->gTP_TEID = node_1_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->gtp_teid; }else{ sgnb_addreq_for_ue_bearers->gTP_TEID = ""; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability){ sgnb_addreq_for_ue_bearers->pre_emptionCapability = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability->value; }else{ sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitrateul; }else{ sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0; } if(node_1_4->en_dc_resourceconfiguration){ sgnb_addreq_for_ue_bearers->mCGresources = node_1_4->en_dc_resourceconfiguration->mcgresources; }else{ sgnb_addreq_for_ue_bearers->mCGresources = -1; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){ sgnb_addreq_for_ue_bearers->transportLayerAddress = node_1_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->transportlayeraddress; }else{ sgnb_addreq_for_ue_bearers->transportLayerAddress = ""; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitrateul; }else{ sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0; } if(node_1_4->en_dc_resourceconfiguration){ sgnb_addreq_for_ue_bearers->sCGresources = node_1_4->en_dc_resourceconfiguration->scgresources; }else{ sgnb_addreq_for_ue_bearers->sCGresources = -1; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitrateul; }else{ sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitrateul; }else{ sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability){ sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability->value; }else{ sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1; } sgnb_addreq_for_ue_bearers->e_RAB_ID = node_1_4->e_rab_id; if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = node_1_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitratedl; }else{ sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters){ sgnb_addreq_for_ue_bearers->qCI = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->qci; }else{ sgnb_addreq_for_ue_bearers->qCI = 0; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitratedl; }else{ sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0; } if(node_1_4->sgnbpdcppresent && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = node_1_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitratedl; }else{ sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0; } rts_fta_process_packet(&cur_packet); } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_sn_serv_ssb = (struct _sgnb_addreq_for_ue_sn_serv_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 403; node_2_0 = node_1_0; sgnb_addreq_for_ue_sn_serv_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = empty_string; else sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value; node_2_1 = node_2_0->protocolies; if(node_2_0->protocolies){ sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id; if(node_2_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_2_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; } node_2_2 = node_2_1->id_menbtosgnbcontainer; if(node_2_1->id_menbtosgnbcontainer){ node_2_3 = node_2_2->criticalextensionschoice1; if(node_2_2->criticalextensionschoice1){ node_2_4 = node_2_3->protocolies; if(node_2_3->protocolies){ node_2_5 = node_2_4->candidatecellinfolistsn; if(node_2_4->candidatecellinfolistsn){ for(i_2_6=0;i_2_6n_items; i_2_6++){ node_2_6 = node_2_5->items[i_2_6]; node_2_7 = node_2_6->measresultservingcell; if(node_2_6->measresultservingcell){ if(node_2_7->physcellid){ sgnb_addreq_for_ue_sn_serv_ssb->physCellId = node_2_7->physcellid->value; sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0; } node_2_8 = node_2_7->measresult; if(node_2_7->measresult){ node_2_9 = node_2_8->cellresults; if(node_2_8->cellresults){ node_2_10 = node_2_9->resultsssb_cell; if(node_2_9->resultsssb_cell){ if(node_2_10->rsrq){ sgnb_addreq_for_ue_sn_serv_ssb->rsrq = node_2_10->rsrq->value; }else{ sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128; } if(node_2_10->rsrp){ sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_2_10->rsrp->value; }else{ sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128; } if(node_2_10->sinr){ sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_2_10->sinr->value; }else{ sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_sn_serv_csi_rs = (struct _sgnb_addreq_for_ue_sn_serv_csi_rs *)(cur_packet.record.packed.values); cur_packet.schema = 404; node_3_0 = node_2_0; sgnb_addreq_for_ue_sn_serv_csi_rs->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = empty_string; else sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value; node_3_1 = node_3_0->protocolies; if(node_3_0->protocolies){ sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id; if(node_3_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_3_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; } node_3_2 = node_3_1->id_menbtosgnbcontainer; if(node_3_1->id_menbtosgnbcontainer){ node_3_3 = node_3_2->criticalextensionschoice1; if(node_3_2->criticalextensionschoice1){ node_3_4 = node_3_3->protocolies; if(node_3_3->protocolies){ node_3_5 = node_3_4->candidatecellinfolistsn; if(node_3_4->candidatecellinfolistsn){ for(i_3_6=0;i_3_6n_items; i_3_6++){ node_3_6 = node_3_5->items[i_3_6]; node_3_7 = node_3_6->measresultservingcell; if(node_3_6->measresultservingcell){ if(node_3_7->physcellid){ sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId = node_3_7->physcellid->value; sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0; } node_3_8 = node_3_7->measresult; if(node_3_7->measresult){ node_3_9 = node_3_8->cellresults; if(node_3_8->cellresults){ node_3_10 = node_3_9->resultscsi_rs_cell; if(node_3_9->resultscsi_rs_cell){ if(node_3_10->rsrq){ sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = node_3_10->rsrq->value; }else{ sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128; } if(node_3_10->rsrp){ sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_3_10->rsrp->value; }else{ sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128; } if(node_3_10->sinr){ sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_3_10->sinr->value; }else{ sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_mn_serv_ssb = (struct _sgnb_addreq_for_ue_mn_serv_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 405; node_4_0 = node_3_0; sgnb_addreq_for_ue_mn_serv_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = empty_string; else sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value; node_4_1 = node_4_0->protocolies; if(node_4_0->protocolies){ sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id; if(node_4_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_4_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; } node_4_2 = node_4_1->id_menbtosgnbcontainer; if(node_4_1->id_menbtosgnbcontainer){ node_4_3 = node_4_2->criticalextensionschoice1; if(node_4_2->criticalextensionschoice1){ node_4_4 = node_4_3->protocolies; if(node_4_3->protocolies){ node_4_5 = node_4_4->candidatecellinfolistmn; if(node_4_4->candidatecellinfolistmn){ for(i_4_6=0;i_4_6n_items; i_4_6++){ node_4_6 = node_4_5->items[i_4_6]; node_4_7 = node_4_6->measresultservingcell; if(node_4_6->measresultservingcell){ if(node_4_7->physcellid){ sgnb_addreq_for_ue_mn_serv_ssb->physCellId = node_4_7->physcellid->value; sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0; } node_4_8 = node_4_7->measresult; if(node_4_7->measresult){ node_4_9 = node_4_8->cellresults; if(node_4_8->cellresults){ node_4_10 = node_4_9->resultsssb_cell; if(node_4_9->resultsssb_cell){ if(node_4_10->rsrq){ sgnb_addreq_for_ue_mn_serv_ssb->rsrq = node_4_10->rsrq->value; }else{ sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128; } if(node_4_10->rsrp){ sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_4_10->rsrp->value; }else{ sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128; } if(node_4_10->sinr){ sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_4_10->sinr->value; }else{ sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_mn_serv_csi_rs = (struct _sgnb_addreq_for_ue_mn_serv_csi_rs *)(cur_packet.record.packed.values); cur_packet.schema = 406; node_5_0 = node_4_0; sgnb_addreq_for_ue_mn_serv_csi_rs->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = empty_string; else sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value; node_5_1 = node_5_0->protocolies; if(node_5_0->protocolies){ sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id; if(node_5_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_5_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; } node_5_2 = node_5_1->id_menbtosgnbcontainer; if(node_5_1->id_menbtosgnbcontainer){ node_5_3 = node_5_2->criticalextensionschoice1; if(node_5_2->criticalextensionschoice1){ node_5_4 = node_5_3->protocolies; if(node_5_3->protocolies){ node_5_5 = node_5_4->candidatecellinfolistmn; if(node_5_4->candidatecellinfolistmn){ for(i_5_6=0;i_5_6n_items; i_5_6++){ node_5_6 = node_5_5->items[i_5_6]; node_5_7 = node_5_6->measresultservingcell; if(node_5_6->measresultservingcell){ if(node_5_7->physcellid){ sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId = node_5_7->physcellid->value; sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0; } node_5_8 = node_5_7->measresult; if(node_5_7->measresult){ node_5_9 = node_5_8->cellresults; if(node_5_8->cellresults){ node_5_10 = node_5_9->resultscsi_rs_cell; if(node_5_9->resultscsi_rs_cell){ if(node_5_10->rsrq){ sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = node_5_10->rsrq->value; }else{ sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128; } if(node_5_10->rsrp){ sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_5_10->rsrp->value; }else{ sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128; } if(node_5_10->sinr){ sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_5_10->sinr->value; }else{ sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_sn_neigh_ssb = (struct _sgnb_addreq_for_ue_sn_neigh_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 408; node_6_0 = node_5_0; sgnb_addreq_for_ue_sn_neigh_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = empty_string; else sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value; node_6_1 = node_6_0->protocolies; if(node_6_0->protocolies){ sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_6_1->id_menb_ue_x2ap_id; if(node_6_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_6_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; } node_6_2 = node_6_1->id_menbtosgnbcontainer; if(node_6_1->id_menbtosgnbcontainer){ node_6_3 = node_6_2->criticalextensionschoice1; if(node_6_2->criticalextensionschoice1){ node_6_4 = node_6_3->protocolies; if(node_6_3->protocolies){ node_6_5 = node_6_4->candidatecellinfolistsn; if(node_6_4->candidatecellinfolistsn){ for(i_6_6=0;i_6_6n_items; i_6_6++){ node_6_6 = node_6_5->items[i_6_6]; node_6_7 = node_6_6->measresultneighcelllistnr; if(node_6_6->measresultneighcelllistnr){ for(i_6_8=0;i_6_8n_items; i_6_8++){ node_6_8 = node_6_7->items[i_6_8]; if(node_6_8->physcellid){ sgnb_addreq_for_ue_sn_neigh_ssb->physCellId = node_6_8->physcellid->value; sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0; } node_6_9 = node_6_8->measresult; if(node_6_8->measresult){ node_6_10 = node_6_9->cellresults; if(node_6_9->cellresults){ node_6_11 = node_6_10->resultsssb_cell; if(node_6_10->resultsssb_cell){ if(node_6_11->rsrq){ sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = node_6_11->rsrq->value; }else{ sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128; } if(node_6_11->rsrp){ sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_6_11->rsrp->value; }else{ sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128; } if(node_6_11->sinr){ sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_6_11->sinr->value; }else{ sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_sn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *)(cur_packet.record.packed.values); cur_packet.schema = 409; node_7_0 = node_6_0; sgnb_addreq_for_ue_sn_neigh_csi_rs->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = empty_string; else sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value; node_7_1 = node_7_0->protocolies; if(node_7_0->protocolies){ sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_7_1->id_menb_ue_x2ap_id; if(node_7_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_7_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; } node_7_2 = node_7_1->id_menbtosgnbcontainer; if(node_7_1->id_menbtosgnbcontainer){ node_7_3 = node_7_2->criticalextensionschoice1; if(node_7_2->criticalextensionschoice1){ node_7_4 = node_7_3->protocolies; if(node_7_3->protocolies){ node_7_5 = node_7_4->candidatecellinfolistsn; if(node_7_4->candidatecellinfolistsn){ for(i_7_6=0;i_7_6n_items; i_7_6++){ node_7_6 = node_7_5->items[i_7_6]; node_7_7 = node_7_6->measresultneighcelllistnr; if(node_7_6->measresultneighcelllistnr){ for(i_7_8=0;i_7_8n_items; i_7_8++){ node_7_8 = node_7_7->items[i_7_8]; if(node_7_8->physcellid){ sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId = node_7_8->physcellid->value; sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0; } node_7_9 = node_7_8->measresult; if(node_7_8->measresult){ node_7_10 = node_7_9->cellresults; if(node_7_9->cellresults){ node_7_11 = node_7_10->resultscsi_rs_cell; if(node_7_10->resultscsi_rs_cell){ if(node_7_11->rsrq){ sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = node_7_11->rsrq->value; }else{ sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128; } if(node_7_11->rsrp){ sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_7_11->rsrp->value; }else{ sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128; } if(node_7_11->sinr){ sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_7_11->sinr->value; }else{ sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_mn_neigh_ssb = (struct _sgnb_addreq_for_ue_mn_neigh_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 410; node_8_0 = node_7_0; sgnb_addreq_for_ue_mn_neigh_ssb->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = empty_string; else sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value; node_8_1 = node_8_0->protocolies; if(node_8_0->protocolies){ sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_8_1->id_menb_ue_x2ap_id; if(node_8_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_8_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; } node_8_2 = node_8_1->id_menbtosgnbcontainer; if(node_8_1->id_menbtosgnbcontainer){ node_8_3 = node_8_2->criticalextensionschoice1; if(node_8_2->criticalextensionschoice1){ node_8_4 = node_8_3->protocolies; if(node_8_3->protocolies){ node_8_5 = node_8_4->candidatecellinfolistmn; if(node_8_4->candidatecellinfolistmn){ for(i_8_6=0;i_8_6n_items; i_8_6++){ node_8_6 = node_8_5->items[i_8_6]; node_8_7 = node_8_6->measresultneighcelllistnr; if(node_8_6->measresultneighcelllistnr){ for(i_8_8=0;i_8_8n_items; i_8_8++){ node_8_8 = node_8_7->items[i_8_8]; if(node_8_8->physcellid){ sgnb_addreq_for_ue_mn_neigh_ssb->physCellId = node_8_8->physcellid->value; sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0; } node_8_9 = node_8_8->measresult; if(node_8_8->measresult){ node_8_10 = node_8_9->cellresults; if(node_8_9->cellresults){ node_8_11 = node_8_10->resultsssb_cell; if(node_8_10->resultsssb_cell){ if(node_8_11->rsrq){ sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = node_8_11->rsrq->value; }else{ sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128; } if(node_8_11->rsrp){ sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_8_11->rsrp->value; }else{ sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128; } if(node_8_11->sinr){ sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_8_11->sinr->value; }else{ sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_for_ue_mn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *)(cur_packet.record.packed.values); cur_packet.schema = 411; node_9_0 = node_8_0; sgnb_addreq_for_ue_mn_neigh_csi_rs->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = empty_string; else sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value; node_9_1 = node_9_0->protocolies; if(node_9_0->protocolies){ sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_9_1->id_menb_ue_x2ap_id; if(node_9_1->id_menb_ue_x2ap_id_extension){ sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_9_1->id_menb_ue_x2ap_id_extension->value; }else{ sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; } node_9_2 = node_9_1->id_menbtosgnbcontainer; if(node_9_1->id_menbtosgnbcontainer){ node_9_3 = node_9_2->criticalextensionschoice1; if(node_9_2->criticalextensionschoice1){ node_9_4 = node_9_3->protocolies; if(node_9_3->protocolies){ node_9_5 = node_9_4->candidatecellinfolistmn; if(node_9_4->candidatecellinfolistmn){ for(i_9_6=0;i_9_6n_items; i_9_6++){ node_9_6 = node_9_5->items[i_9_6]; node_9_7 = node_9_6->measresultneighcelllistnr; if(node_9_6->measresultneighcelllistnr){ for(i_9_8=0;i_9_8n_items; i_9_8++){ node_9_8 = node_9_7->items[i_9_8]; if(node_9_8->physcellid){ sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId = node_9_8->physcellid->value; sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 1; }else{ sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0; } node_9_9 = node_9_8->measresult; if(node_9_8->measresult){ node_9_10 = node_9_9->cellresults; if(node_9_9->cellresults){ node_9_11 = node_9_10->resultscsi_rs_cell; if(node_9_10->resultscsi_rs_cell){ if(node_9_11->rsrq){ sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = node_9_11->rsrq->value; }else{ sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128; } if(node_9_11->rsrp){ sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_9_11->rsrp->value; }else{ sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128; } if(node_9_11->sinr){ sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_9_11->sinr->value; }else{ sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128; } rts_fta_process_packet(&cur_packet); } } } } } } } } } } } uenibstreamprotobuf__sg_nbaddition_request__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBMODCONF(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json struct _sgnb_mod_conf *sgnb_mod_conf = NULL; Uenibstreamprotobuf__SgNBModificationConfirm *node_0_0 = NULL; Uenibstreamprotobuf__SgNBModificationConfirmIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values); cur_packet.schema = 1301; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbmodificationconfirm; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_mod_conf->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_mod_conf->gnb_id = empty_string; else sgnb_mod_conf->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ sgnb_mod_conf->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; sgnb_mod_conf->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBMODREQ(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_modification_request.json, path sgnb_mod_req.json struct _sgnb_mod_req *sgnb_mod_req = NULL; Uenibstreamprotobuf__SgNBModificationRequest *node_0_0 = NULL; Uenibstreamprotobuf__SgNBModificationRequestIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values); cur_packet.schema = 1201; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbmodificationrequest; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_mod_req->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_mod_req->gnb_id = empty_string; else sgnb_mod_req->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ if(node_0_1->id_cause && node_0_1->id_cause->protocol){ sgnb_mod_req->cause_protocol = node_0_1->id_cause->protocol->value; }else{ sgnb_mod_req->cause_protocol = -1; } sgnb_mod_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->transport){ sgnb_mod_req->cause_transport = node_0_1->id_cause->transport->value; }else{ sgnb_mod_req->cause_transport = -1; } if(node_0_1->id_menbtosgnbcontainer && node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1 && node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies && node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo){ sgnb_mod_req->failureType = node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo->failuretype; }else{ sgnb_mod_req->failureType = -1; } if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ sgnb_mod_req->cause_radio_network = node_0_1->id_cause->radionetwork->value; }else{ sgnb_mod_req->cause_radio_network = -1; } sgnb_mod_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->misc){ sgnb_mod_req->cause_misc = node_0_1->id_cause->misc->value; }else{ sgnb_mod_req->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbmodification_request__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBMODREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json struct _sgnb_mod_req_ack *sgnb_mod_req_ack = NULL; Uenibstreamprotobuf__SgNBModificationRequestAcknowledge *node_0_0 = NULL; Uenibstreamprotobuf__SgNBModificationRequestAcknowledgeIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values); cur_packet.schema = 1701; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbmodificationrequestacknowledge; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_mod_req_ack->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_mod_req_ack->gnb_id = empty_string; else sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ sgnb_mod_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; sgnb_mod_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBMODREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json struct _sgnb_mod_req_reject *sgnb_mod_req_reject = NULL; Uenibstreamprotobuf__SgNBModificationRequestReject *node_0_0 = NULL; Uenibstreamprotobuf__SgNBModificationRequestRejectIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values); cur_packet.schema = 1801; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbmodificationrequestreject; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_mod_req_reject->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_mod_req_reject->gnb_id = empty_string; else sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ if(node_0_1->id_cause && node_0_1->id_cause->protocol){ sgnb_mod_req_reject->cause_protocol = node_0_1->id_cause->protocol->value; }else{ sgnb_mod_req_reject->cause_protocol = -1; } sgnb_mod_req_reject->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->transport){ sgnb_mod_req_reject->cause_transport = node_0_1->id_cause->transport->value; }else{ sgnb_mod_req_reject->cause_transport = -1; } if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ sgnb_mod_req_reject->cause_radio_network = node_0_1->id_cause->radionetwork->value; }else{ sgnb_mod_req_reject->cause_radio_network = -1; } sgnb_mod_req_reject->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->misc){ sgnb_mod_req_reject->cause_misc = node_0_1->id_cause->misc->value; }else{ sgnb_mod_req_reject->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBMODREQUIRED(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json struct _sgnb_mod_required *sgnb_mod_required = NULL; Uenibstreamprotobuf__SgNBModificationRequired *node_0_0 = NULL; Uenibstreamprotobuf__SgNBModificationRequiredIEs *node_0_1 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values); cur_packet.schema = 1901; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbmodificationrequired; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_mod_required->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_mod_required->gnb_id = empty_string; else sgnb_mod_required->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ if(node_0_1->id_cause && node_0_1->id_cause->protocol){ sgnb_mod_required->cause_protocol = node_0_1->id_cause->protocol->value; }else{ sgnb_mod_required->cause_protocol = -1; } sgnb_mod_required->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->transport){ sgnb_mod_required->cause_transport = node_0_1->id_cause->transport->value; }else{ sgnb_mod_required->cause_transport = -1; } if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ sgnb_mod_required->cause_radio_network = node_0_1->id_cause->radionetwork->value; }else{ sgnb_mod_required->cause_radio_network = -1; } sgnb_mod_required->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; if(node_0_1->id_cause && node_0_1->id_cause->misc){ sgnb_mod_required->cause_misc = node_0_1->id_cause->misc->value; }else{ sgnb_mod_required->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } uenibstreamprotobuf__sg_nbmodification_required__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SGNBMODREFUSE(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json struct _sgnb_mod_refuse *sgnb_mod_refuse = NULL; Uenibstreamprotobuf__SgNBModificationRefuse *node_0_0 = NULL; Uenibstreamprotobuf__SgNBModificationRefuseIEs *node_0_1 = NULL; Uenibstreamprotobuf__Cause *node_0_2 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values); cur_packet.schema = 1401; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->sgnbmodificationrefuse; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sgnb_mod_refuse->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sgnb_mod_refuse->gnb_id = empty_string; else sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ sgnb_mod_refuse->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; sgnb_mod_refuse->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; node_0_2 = node_0_1->id_cause; if(node_0_1->id_cause){ if(node_0_2->radionetwork){ sgnb_mod_refuse->cause_radio_network = node_0_2->radionetwork->value; }else{ sgnb_mod_refuse->cause_radio_network = -1; } if(node_0_2->transport){ sgnb_mod_refuse->cause_transport = node_0_2->transport->value; }else{ sgnb_mod_refuse->cause_transport = -1; } if(node_0_2->protocol){ sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value; }else{ sgnb_mod_refuse->cause_protocol = -1; } if(node_0_2->misc){ sgnb_mod_refuse->cause_misc = node_0_2->misc->value; }else{ sgnb_mod_refuse->cause_misc = -1; } rts_fta_process_packet(&cur_packet); } } uenibstreamprotobuf__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL); return 0; } gs_uint32_t process_buffer_SNSTATUSXFER(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; Uenibstreamprotobuf__X2APStreaming *hdr = NULL; // ------------------------------------------ // --- Variables for .proto sn_status_transfer.json, path snstatusxfer.json struct _sn_status_transfer *sn_status_transfer = NULL; Uenibstreamprotobuf__SNStatusTransfer *node_0_0 = NULL; Uenibstreamprotobuf__SNStatusTransferIEs *node_0_1 = NULL; Uenibstreamprotobuf__ERABsSubjectToStatusTransferList *node_0_2 = NULL; Uenibstreamprotobuf__ERABsSubjectToStatusTransferItemIEs *node_0_3 = NULL; gs_uint32_t i_0_3; Uenibstreamprotobuf__ERABsSubjectToStatusTransferItem *node_0_4 = NULL; Uenibstreamprotobuf__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL; gs_uint32_t i_0_5; Uenibstreamprotobuf__COUNTvaluePDCPSNlength18 *node_0_6 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values); cur_packet.schema = 1601; hdr = uenibstreamprotobuf__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; node_0_0 = hdr->snstatustransfer; if(node_0_0==NULL) return -2; if(hdr->header==NULL) return -3; sn_status_transfer->timestamp_ms = timestamp; if(hdr->header->gnbid==NULL) sn_status_transfer->gnb_id = empty_string; else sn_status_transfer->gnb_id = hdr->header->gnbid->value; node_0_1 = node_0_0->protocolies; if(node_0_0->protocolies){ sn_status_transfer->id_Old_eNB_UE_X2AP_ID = node_0_1->id_old_enb_ue_x2ap_id; if(node_0_1->id_sgnb_ue_x2ap_id){ sn_status_transfer->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value; }else{ sn_status_transfer->id_SgNB_UE_X2AP_ID = 0; } node_0_2 = node_0_1->id_e_rabs_subjecttostatustransfer_list; if(node_0_1->id_e_rabs_subjecttostatustransfer_list){ for(i_0_3=0;i_0_3n_items; i_0_3++){ node_0_3 = node_0_2->items[i_0_3]; node_0_4 = node_0_3->id_e_rabs_subjecttostatustransfer_item; if(node_0_3->id_e_rabs_subjecttostatustransfer_item){ sn_status_transfer->e_RAB_ID = node_0_4->e_rab_id; for(i_0_5=0;i_0_5n_ie_extensions; i_0_5++){ node_0_5 = node_0_4->ie_extensions[i_0_5]; node_0_6 = node_0_5->id_dlcountvaluepdcp_snlength18; if(node_0_5->id_dlcountvaluepdcp_snlength18){ sn_status_transfer->pDCP_SNlength18 = node_0_6->pdcp_snlength18; rts_fta_process_packet(&cur_packet); } } } } } } uenibstreamprotobuf__snstatus_transfer__free_unpacked(node_0_0,NULL); return 0; } int init_cur_packet(){ cur_packet.ptype=PTYPE_STRUCT; cur_packet.record.packed.values = (void *)(malloc(10000)); if(cur_packet.record.packed.values==NULL){ print_error("could not malloc a data block for cur_packet in init_cur_packet."); exit(10); } return 0; } //---------------- END Specialized proto parsing ----------- static void dproto_replay_check_messages() { if (fta_start_service(0)<0) { print_error("Error:in processing the msg queue for a replay file"); exit(9); } } // Read length bytes from the current socket into buffer. static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){ gs_uint32_t used=0; gs_uint32_t cur; fd_set socket_rset; fd_set socket_eset; struct timeval socket_timeout; int retval; FD_ZERO(&socket_rset); FD_SET(socket_desc,&socket_rset); FD_ZERO(&socket_eset); FD_SET(socket_desc,&socket_eset); // timeout in one millisecon socket_timeout.tv_sec=0; socket_timeout.tv_usec=1000; if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) { if (retval==0) { // caught a timeout return -1; } return -2; } while(used < length) { if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) { print_error("ERROR:could not read data from gdat stream"); return -2; } used+=cur; } return 0; } // query gshub and use that info to open a socket static void init_socket() { endpoint gshub; endpoint srcinfo; struct sockaddr_in server; if (get_hub(&gshub)!=0) { print_error("ERROR:could not find gshub for data source"); exit(0); } if (get_streamsource(gshub,name,&srcinfo,1) !=0) { print_error("ERROR:could not find data source for stream\n"); exit(0); } socket_desc = socket(AF_INET , SOCK_STREAM , 0); if (socket_desc == -1) { print_error("ERROR:could not create socket for data stream"); exit(0); } server.sin_addr.s_addr = srcinfo.ip; server.sin_family = AF_INET; server.sin_port = srcinfo.port; if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0) { print_error("ERROR: could not open connection to data source"); exit(0); } } // proceed to the next file static void next_file() { struct stat s; if (verbose) { fprintf(stderr,"Opening %s\n",name); } while (lstat(name,&s)!=0) { if (errno!=ENOENT) { print_error("dproto::lstat unexpected return value"); exit(10); } dproto_replay_check_messages(); usleep(10000); } if (pd!=0) { fclose(pd); } if ((pd=fopen(name,"r"))==0) { print_error("dproto::open failed "); exit(10); } if (singlefile==0) { unlink(name); } } // Perform initialization when reading from a file static gs_retval_t dproto_replay_init(gs_sp_t device) { gs_sp_t verbosetmp; gs_sp_t delaytmp; gs_sp_t gshubtmp; gs_sp_t tempdel; gs_sp_t singlefiletmp; if ((name=get_iface_properties(device,"filename"))==0) { print_error("dproto_init::No protobuf \"Filename\" defined"); exit(0); } if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) { if (strncmp(verbosetmp,"TRUE",4)==0) { verbose=1; fprintf(stderr,"VERBOSE ENABLED\n"); } else { fprintf(stderr,"VERBOSE DISABLED\n"); } } if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) { if (strncmp(singlefiletmp,"TRUE",4)==0) { singlefile=1; if (verbose) fprintf(stderr,"SINGLEFILE ENABLED\n"); } else { if (verbose) fprintf(stderr,"SINGLEFILE DISABLED\n"); } } if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) { if (verbose) { fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay"))); } startupdelay=atoi(get_iface_properties(device,"startupdelay")); } if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) { if (verbose) { fprintf(stderr,"GDAT format using gshub\n"); } gshub=1; } init_cur_packet(); return 0; } // Read one message from a socket static gs_retval_t dproto_read_socket() { gs_uint32_t i; gs_uint32_t p; gs_uint32_t x; gs_uint32_t pkg_len; gs_int32_t r; gs_retval_t ret=0; gs_uint32_t done; char *pkg_len_s; char *timestamp_s; if((ret=gs_read_buffer(line,28))<0) { return ret;} pkg_len_s = line+4; timestamp_s = line+12; pkg_len = atoi(pkg_len_s); timestamp = atoll(timestamp_s); if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;} cur_packet.systemTime=time(0); ret = process_buffer(line, pkg_len); if(ret < 0){ fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret); } return 0; } // read one message from a file static void dproto_read_tuple(){ gs_uint32_t retlen=0; gs_uint32_t done=0; gs_uint32_t pkg_len=0; gs_uint32_t eof=0; char *pkg_len_s; char *timestamp_s; gs_retval_t ret; if (pd==0) next_file(); retlen = fread(line, sizeof(char), 28, pd); if(retlen==0){ eof=1; }else{ pkg_len_s = line+4; timestamp_s = line+12; pkg_len = atoi(pkg_len_s); timestamp = atoll(timestamp_s); if(pkg_len >= MAXLINE){ // TODO be more graceful here, but a large pkg_len likely indicates // a garbaged file. print_error("Error in dproto_read_tuple, message too long."); fprintf(stderr,"Error in dproto_read_tuple, message length is %d, max is %d\n",pkg_len, MAXLINE); exit(10); } retlen = fread(line, sizeof(char), pkg_len, pd); if(retlentime(NULL)) { if (fta_start_service(0)<0) { fprintf(stderr,"%s::error:in processing the msg queue\n", device); exit(9); } usleep(1000); /* sleep for one millisecond */ } if (verbose) { fprintf(stderr,"... Done\n"); } // open the connection to the data source if (gshub!=0) { init_socket();} // wait to process till we get the signal from GSHUB if (get_hub(&mygshub)!=0) { print_error("ERROR:could not find gshub for data source"); exit(0); } while(get_startprocessing(mygshub,get_instance_name(),0)!=0) { usleep(100); if (fta_start_service(0)<0) { fprintf(stderr,"%s::error:in processing the msg queue\n", device); exit(9); } } /* now we enter an endless loop to process data */ if (verbose) { fprintf(stderr,"Start processing %s\n",device); } while (1==1) { if (dproto_process_file()<0) { fprintf(stderr,"%s::error:in processing packets\n", device); exit(8); } /* process all messages on the message queue*/ if (fta_start_service(0)<0) { fprintf(stderr,"%s::error:in processing the msg queue\n", device); exit(9); } } return 0; }