3 ==============================================================================
5 Copyright (c) 2018-2019 AT&T Intellectual Property.
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18 =============================================================================
29 #include <sys/types.h>
30 #include <sys/socket.h>
31 #include <netinet/in.h>
42 #include "schemaparser.h"
45 void rts_fta_process_packet(struct packet * p);
47 void fta_init(gs_sp_t device);
49 gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; // set at initialization
51 #define MAXLINE 1000000
54 static int listensockfd=-1;
56 static struct packet cur_packet;
57 static gs_sp_t name, this_device;
58 static gs_uint32_t verbose=0;
59 static gs_uint32_t startupdelay=0;
60 static gs_uint32_t singlefile=0;
61 static gs_uint32_t gshub=0;
62 static int socket_desc=0;
64 static gs_uint8_t line[MAXLINE];
65 static gs_uint32_t lineend=0;
66 static unsigned long long timestamp; // extract from input header
68 //---------------- Specialized proto parsing -----------
69 #include "x2ap_streaming.pb-c.h"
70 #include "ue_context_release.pb-c.h"
71 #include "lfta/local/dc_release.h"
72 #include "secondary_rat_data_usage_report.pb-c.h"
73 #include "lfta/local/rat_data_usage.h"
74 #include "sgnb_reconfiguration_complete.pb-c.h"
75 #include "lfta/local/reconfig_all.h"
76 #include "lfta/local/reconfig_success.h"
77 #include "lfta/local/reconfig_reject.h"
78 #include "sgnb_release_confirm.pb-c.h"
79 #include "lfta/local/sgnb_release_confirm_from_menb_erabs.h"
80 #include "lfta/local/sgnb_release_confirm_from_menb.h"
81 #include "sgnb_release_request.pb-c.h"
82 #include "lfta/local/release_req.h"
83 #include "sgnb_release_request_acknowledge.pb-c.h"
84 #include "lfta/local/release_req_ack.h"
85 #include "sgnb_release_required.pb-c.h"
86 #include "lfta/local/SgNB_release_rqd.h"
87 #include "rrctransfer.pb-c.h"
88 #include "lfta/local/serv_nr_cell.h"
89 #include "lfta/local/nr_neighbor.h"
90 #include "lfta/local/serv_cell_beam_csi.h"
91 #include "lfta/local/neighbor_beam_csi.h"
92 #include "lfta/local/serv_cell_beam_ssb.h"
93 #include "lfta/local/neighbor_beam_ssb.h"
94 #include "sgnb_addition_request_reject.pb-c.h"
95 #include "lfta/local/sgnb_add_req_reject.h"
96 #include "sgnb_addition_request_acknowledge.pb-c.h"
97 #include "lfta/local/eRABs_notadmitted_for_ue.h"
98 #include "lfta/local/eRABs_acked_for_admit_for_ue.h"
99 #include "lfta/local/SgNB_ack_for_ue_NRfreqs.h"
100 #include "lfta/local/SgNB_ack_for_add_mod_for_ue.h"
101 #include "lfta/local/SgNB_ack_for_ue_measurements.h"
102 #include "lfta/local/SgNB_ack_for_ue_beam_csi.h"
103 #include "lfta/local/SgNB_ack_for_ue_beam_ssb.h"
104 #include "sgnb_addition_request.pb-c.h"
105 #include "lfta/local/sgnb_addreq_gtp_teid.h"
106 #include "lfta/local/sgnb_addreq_for_ue.h"
107 #include "lfta/local/sgnb_addreq_for_ue_bearers.h"
108 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_ssb.h"
109 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_csi_rs.h"
110 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_ssb.h"
111 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_csi_rs.h"
112 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_ssb.h"
113 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_csi_rs.h"
114 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_ssb.h"
115 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_csi_rs.h"
116 #include "sgnb_modification_confirm.pb-c.h"
117 #include "lfta/local/sgnb_mod_conf.h"
118 #include "sgnb_modification_request.pb-c.h"
119 #include "lfta/local/sgnb_mod_req.h"
120 #include "sgnb_modification_request_acknowledge.pb-c.h"
121 #include "lfta/local/sgnb_mod_req_ack.h"
122 #include "sgnb_modification_request_reject.pb-c.h"
123 #include "lfta/local/sgnb_mod_req_reject.h"
124 #include "sgnb_modification_required.pb-c.h"
125 #include "lfta/local/sgnb_mod_required.h"
126 #include "sgnb_modification_refuse.pb-c.h"
127 #include "lfta/local/sgnb_mod_refuse.h"
128 #include "sn_status_transfer.pb-c.h"
129 #include "lfta/local/sn_status_transfer.h"
130 gs_uint32_t process_buffer_CONRELEASE(gs_uint8_t * buffer, gs_uint32_t buflen){
131 char *empty_string = "";
132 unsigned long long int ts_lo, ts_hi;
133 StreamingProtobufs__X2APStreaming *hdr = NULL;
134 // ------------------------------------------
135 // --- Variables for .proto ue_context_release.json, path context_release.json
136 struct _dc_release *dc_release = NULL;
137 StreamingProtobufs__UEContextRelease *node_0_0 = NULL;
139 // --------------------------------------------------
140 // --- Specialized processing for .proto ue_context_release.json, path context_release.json
142 dc_release = (struct _dc_release *)(cur_packet.record.packed.values);
143 cur_packet.schema = 201;
145 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
146 if(hdr==NULL) return -1;
148 node_0_0 = hdr->uecontextrelease;
149 if(node_0_0==NULL) return -2;
150 if(hdr->header==NULL) return -3;
152 ts_lo = hdr->header->timestamp & 0xffffffff;
153 ts_hi = hdr->header->timestamp >> 32;
154 dc_release->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
155 if(hdr->header->gnbid==NULL)
156 dc_release->gnb_id = empty_string;
158 dc_release->gnb_id = hdr->header->gnbid->value;
160 if(node_0_0->id_old_enb_ue_x2ap_id_extension){
161 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = node_0_0->id_old_enb_ue_x2ap_id_extension->value;
163 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0;
165 dc_release->id_New_eNB_UE_X2AP_ID = node_0_0->id_new_enb_ue_x2ap_id;
166 if(node_0_0->id_sgnb_ue_x2ap_id){
167 dc_release->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
169 dc_release->id_SgNB_UE_X2AP_ID = 0;
171 if(node_0_0->id_new_enb_ue_x2ap_id_extension){
172 dc_release->id_New_eNB_UE_X2AP_ID_Extension = node_0_0->id_new_enb_ue_x2ap_id_extension->value;
174 dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0;
176 dc_release->id_Old_eNB_UE_X2AP_ID = node_0_0->id_old_enb_ue_x2ap_id;
177 rts_fta_process_packet(&cur_packet);
178 streaming_protobufs__uecontext_release__free_unpacked(node_0_0,NULL);
182 gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){
183 char *empty_string = "";
184 unsigned long long int ts_lo, ts_hi;
185 StreamingProtobufs__X2APStreaming *hdr = NULL;
186 // ------------------------------------------
187 // --- Variables for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
188 struct _rat_data_usage *rat_data_usage = NULL;
189 StreamingProtobufs__SecondaryRATDataUsageReport *node_0_0 = NULL;
190 StreamingProtobufs__SecondaryRATDataUsageReportIEs *node_0_1 = NULL;
191 StreamingProtobufs__SecondaryRATUsageReportList *node_0_2 = NULL;
192 StreamingProtobufs__SecondaryRATUsageReportItemIEs *node_0_3 = NULL;
194 StreamingProtobufs__SecondaryRATUsageReportItem *node_0_4 = NULL;
195 StreamingProtobufs__ERABUsageReportList *node_0_5 = NULL;
196 StreamingProtobufs__ERABUsageReportItemIEs *node_0_6 = NULL;
198 StreamingProtobufs__ERABUsageReportItem *node_0_7 = NULL;
200 // --------------------------------------------------
201 // --- Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
203 rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values);
204 cur_packet.schema = 1501;
206 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
207 if(hdr==NULL) return -1;
209 node_0_0 = hdr->secondaryratdatausagereport;
210 if(node_0_0==NULL) return -2;
211 if(hdr->header==NULL) return -3;
213 ts_lo = hdr->header->timestamp & 0xffffffff;
214 ts_hi = hdr->header->timestamp >> 32;
215 rat_data_usage->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
216 if(hdr->header->gnbid==NULL)
217 rat_data_usage->gnb_id = empty_string;
219 rat_data_usage->gnb_id = hdr->header->gnbid->value;
221 node_0_1 = node_0_0->protocolies;
222 if(node_0_0->protocolies){
223 rat_data_usage->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
224 rat_data_usage->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
225 if(node_0_1->id_menb_ue_x2ap_id_extension){
226 rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
228 rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0;
230 node_0_2 = node_0_1->id_secondaryratusagereportlist;
231 if(node_0_1->id_secondaryratusagereportlist){
232 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
233 node_0_3 = node_0_2->items[i_0_3];
234 node_0_4 = node_0_3->id_secondaryratusagereport_item;
235 if(node_0_3->id_secondaryratusagereport_item){
236 rat_data_usage->e_RAB_ID = node_0_4->e_rab_id;
237 rat_data_usage->secondaryRATType = node_0_4->secondaryrattype;
238 node_0_5 = node_0_4->e_rabusagereportlist;
239 if(node_0_4->e_rabusagereportlist){
240 for(i_0_6=0;i_0_6<node_0_5->n_items; i_0_6++){
241 node_0_6 = node_0_5->items[i_0_6];
242 node_0_7 = node_0_6->id_e_rabusagereport_item;
243 if(node_0_6->id_e_rabusagereport_item){
244 rat_data_usage->startTimeStamp = node_0_7->starttimestamp;
245 rat_data_usage->endTimeStamp = node_0_7->endtimestamp;
246 rat_data_usage->usageCountDL = node_0_7->usagecountdl;
247 rts_fta_process_packet(&cur_packet);
255 streaming_protobufs__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL);
259 gs_uint32_t process_buffer_RECONCOMPLETE(gs_uint8_t * buffer, gs_uint32_t buflen){
260 char *empty_string = "";
261 unsigned long long int ts_lo, ts_hi;
262 StreamingProtobufs__X2APStreaming *hdr = NULL;
263 // ------------------------------------------
264 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
265 struct _reconfig_all *reconfig_all = NULL;
266 StreamingProtobufs__SgNBReconfigurationComplete *node_0_0 = NULL;
267 // ------------------------------------------
268 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
269 struct _reconfig_success *reconfig_success = NULL;
270 StreamingProtobufs__SgNBReconfigurationComplete *node_1_0 = NULL;
271 StreamingProtobufs__ResponseInformationSgNBReconfComp *node_1_1 = NULL;
272 StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_1_2 = NULL;
273 // ------------------------------------------
274 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
275 struct _reconfig_reject *reconfig_reject = NULL;
276 StreamingProtobufs__SgNBReconfigurationComplete *node_2_0 = NULL;
277 StreamingProtobufs__ResponseInformationSgNBReconfComp *node_2_1 = NULL;
278 StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_2_2 = NULL;
280 // --------------------------------------------------
281 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
283 reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values);
284 cur_packet.schema = 103;
286 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
287 if(hdr==NULL) return -1;
289 node_0_0 = hdr->sgnbreconfigurationcomplete;
290 if(node_0_0==NULL) return -2;
291 if(hdr->header==NULL) return -3;
293 ts_lo = hdr->header->timestamp & 0xffffffff;
294 ts_hi = hdr->header->timestamp >> 32;
295 reconfig_all->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
296 if(hdr->header->gnbid==NULL)
297 reconfig_all->gnb_id = empty_string;
299 reconfig_all->gnb_id = hdr->header->gnbid->value;
301 reconfig_all->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
302 reconfig_all->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
303 if(node_0_0->id_menb_ue_x2ap_id_extension){
304 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
306 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0;
308 rts_fta_process_packet(&cur_packet);
309 // --------------------------------------------------
310 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
312 reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values);
313 cur_packet.schema = 101;
315 ts_lo = hdr->header->timestamp & 0xffffffff;
316 ts_hi = hdr->header->timestamp >> 32;
317 reconfig_success->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
318 if(hdr->header->gnbid==NULL)
319 reconfig_success->gnb_id = empty_string;
321 reconfig_success->gnb_id = hdr->header->gnbid->value;
323 reconfig_success->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
324 reconfig_success->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
325 if(node_1_0->id_menb_ue_x2ap_id_extension){
326 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
328 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0;
330 node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp;
331 if(!(node_1_0->id_responseinformationsgnbreconfcomp)){
332 rts_fta_process_packet(&cur_packet);
334 node_1_2 = node_1_1->reject_by_menb_sgnbreconfcomp;
335 if(!(node_1_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP)){
336 rts_fta_process_packet(&cur_packet);
338 rts_fta_process_packet(&cur_packet);
341 // --------------------------------------------------
342 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
344 reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values);
345 cur_packet.schema = 102;
347 ts_lo = hdr->header->timestamp & 0xffffffff;
348 ts_hi = hdr->header->timestamp >> 32;
349 reconfig_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
350 if(hdr->header->gnbid==NULL)
351 reconfig_reject->gnb_id = empty_string;
353 reconfig_reject->gnb_id = hdr->header->gnbid->value;
355 reconfig_reject->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
356 reconfig_reject->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
357 if(node_2_0->id_menb_ue_x2ap_id_extension){
358 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
360 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0;
362 node_2_1 = node_2_0->id_responseinformationsgnbreconfcomp;
363 if(node_2_0->id_responseinformationsgnbreconfcomp){
364 node_2_2 = node_2_1->reject_by_menb_sgnbreconfcomp;
365 if(node_2_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP){
366 if(node_2_2->cause && node_2_2->cause->radionetwork){
367 reconfig_reject->cause_radio_network = node_2_2->cause->radionetwork->value;
369 reconfig_reject->cause_radio_network = -1;
371 if(node_2_2->cause && node_2_2->cause->transport){
372 reconfig_reject->cause_transport = node_2_2->cause->transport->value;
374 reconfig_reject->cause_transport = -1;
376 if(node_2_2->cause && node_2_2->cause->protocol){
377 reconfig_reject->cause_protocol = node_2_2->cause->protocol->value;
379 reconfig_reject->cause_protocol = -1;
381 if(node_2_2->cause && node_2_2->cause->misc){
382 reconfig_reject->cause_misc = node_2_2->cause->misc->value;
384 reconfig_reject->cause_misc = -1;
386 rts_fta_process_packet(&cur_packet);
389 streaming_protobufs__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL);
393 gs_uint32_t process_buffer_RELCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
394 char *empty_string = "";
395 unsigned long long int ts_lo, ts_hi;
396 StreamingProtobufs__X2APStreaming *hdr = NULL;
397 // ------------------------------------------
398 // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json
399 struct _sgnb_release_confirm_from_menb_erabs *sgnb_release_confirm_from_menb_erabs = NULL;
400 StreamingProtobufs__SgNBReleaseConfirm *node_0_0 = NULL;
401 StreamingProtobufs__SgNBReleaseConfirmIEs *node_0_1 = NULL;
402 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfList *node_0_2 = NULL;
403 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfItem *node_0_3 = NULL;
405 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfSgNBPDCPpresent *node_0_4 = NULL;
406 StreamingProtobufs__GTPtunnelEndpoint *node_0_5 = NULL;
407 // ------------------------------------------
408 // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json
409 struct _sgnb_release_confirm_from_menb *sgnb_release_confirm_from_menb = NULL;
410 StreamingProtobufs__SgNBReleaseConfirm *node_1_0 = NULL;
411 StreamingProtobufs__SgNBReleaseConfirmIEs *node_1_1 = NULL;
413 // --------------------------------------------------
414 // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
416 sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values);
417 cur_packet.schema = 1101;
419 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
420 if(hdr==NULL) return -1;
422 node_0_0 = hdr->sgnbreleaseconfirm;
423 if(node_0_0==NULL) return -2;
424 if(hdr->header==NULL) return -3;
426 ts_lo = hdr->header->timestamp & 0xffffffff;
427 ts_hi = hdr->header->timestamp >> 32;
428 sgnb_release_confirm_from_menb_erabs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
429 if(hdr->header->gnbid==NULL)
430 sgnb_release_confirm_from_menb_erabs->gnb_id = empty_string;
432 sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value;
434 node_0_1 = node_0_0->protocolies;
435 if(node_0_0->protocolies){
436 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
437 sgnb_release_confirm_from_menb_erabs->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
438 if(node_0_1->id_menb_ue_x2ap_id_extension){
439 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
441 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0;
443 node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelconflist;
444 if(node_0_1->id_e_rabs_tobereleased_sgnbrelconflist){
445 for(i_0_3=0;i_0_3<node_0_2->n_id_e_rabs_tobereleased_sgnbrelconf_item; i_0_3++){
446 node_0_3 = node_0_2->id_e_rabs_tobereleased_sgnbrelconf_item[i_0_3];
447 if(node_0_3->en_dc_resourceconfiguration){
448 sgnb_release_confirm_from_menb_erabs->sCGresources = node_0_3->en_dc_resourceconfiguration->scgresources;
450 sgnb_release_confirm_from_menb_erabs->sCGresources = -1;
452 sgnb_release_confirm_from_menb_erabs->e_RAB_ID = node_0_3->e_rab_id;
453 if(node_0_3->en_dc_resourceconfiguration){
454 sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = node_0_3->en_dc_resourceconfiguration->pdcpatsgnb;
456 sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1;
458 if(node_0_3->en_dc_resourceconfiguration){
459 sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources;
461 sgnb_release_confirm_from_menb_erabs->mCGresources = -1;
463 node_0_4 = node_0_3->sgnbpdcppresent;
464 if(node_0_3->sgnbpdcppresent){
465 node_0_5 = node_0_4->dl_gtptunnelendpoint;
466 if(node_0_4->dl_gtptunnelendpoint){
467 sgnb_release_confirm_from_menb_erabs->gTP_TEID = node_0_5->gtp_teid;
468 sgnb_release_confirm_from_menb_erabs->transportLayerAddress = node_0_5->transportlayeraddress;
469 rts_fta_process_packet(&cur_packet);
475 // --------------------------------------------------
476 // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
478 sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values);
479 cur_packet.schema = 1102;
481 ts_lo = hdr->header->timestamp & 0xffffffff;
482 ts_hi = hdr->header->timestamp >> 32;
483 sgnb_release_confirm_from_menb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
484 if(hdr->header->gnbid==NULL)
485 sgnb_release_confirm_from_menb->gnb_id = empty_string;
487 sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value;
489 node_1_1 = node_1_0->protocolies;
490 if(node_1_0->protocolies){
491 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
492 sgnb_release_confirm_from_menb->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
493 if(node_1_1->id_menb_ue_x2ap_id_extension){
494 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
496 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0;
498 rts_fta_process_packet(&cur_packet);
500 streaming_protobufs__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL);
504 gs_uint32_t process_buffer_RELREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
505 char *empty_string = "";
506 unsigned long long int ts_lo, ts_hi;
507 StreamingProtobufs__X2APStreaming *hdr = NULL;
508 // ------------------------------------------
509 // --- Variables for .proto sgnb_release_request.json, path release_req.json
510 struct _release_req *release_req = NULL;
511 StreamingProtobufs__SgNBReleaseRequest *node_0_0 = NULL;
512 StreamingProtobufs__SgNBReleaseRequestIEs *node_0_1 = NULL;
514 // --------------------------------------------------
515 // --- Specialized processing for .proto sgnb_release_request.json, path release_req.json
517 release_req = (struct _release_req *)(cur_packet.record.packed.values);
518 cur_packet.schema = 801;
520 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
521 if(hdr==NULL) return -1;
523 node_0_0 = hdr->sgnbreleaserequest;
524 if(node_0_0==NULL) return -2;
525 if(hdr->header==NULL) return -3;
527 ts_lo = hdr->header->timestamp & 0xffffffff;
528 ts_hi = hdr->header->timestamp >> 32;
529 release_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
530 if(hdr->header->gnbid==NULL)
531 release_req->gnb_id = empty_string;
533 release_req->gnb_id = hdr->header->gnbid->value;
535 node_0_1 = node_0_0->protocolies;
536 if(node_0_0->protocolies){
537 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
538 release_req->cause_protocol = node_0_1->id_cause->protocol->value;
540 release_req->cause_protocol = -1;
542 release_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
543 if(node_0_1->id_cause && node_0_1->id_cause->transport){
544 release_req->cause_transport = node_0_1->id_cause->transport->value;
546 release_req->cause_transport = -1;
548 if(node_0_1->id_menb_ue_x2ap_id_extension){
549 release_req->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
551 release_req->id_MeNB_UE_X2AP_ID_Extension = 0;
553 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
554 release_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
556 release_req->cause_radio_network = -1;
558 if(node_0_1->id_sgnb_ue_x2ap_id){
559 release_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
561 release_req->id_SgNB_UE_X2AP_ID = 0;
563 if(node_0_1->id_cause && node_0_1->id_cause->misc){
564 release_req->cause_misc = node_0_1->id_cause->misc->value;
566 release_req->cause_misc = -1;
568 rts_fta_process_packet(&cur_packet);
570 streaming_protobufs__sg_nbrelease_request__free_unpacked(node_0_0,NULL);
574 gs_uint32_t process_buffer_RELREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
575 char *empty_string = "";
576 unsigned long long int ts_lo, ts_hi;
577 StreamingProtobufs__X2APStreaming *hdr = NULL;
578 // ------------------------------------------
579 // --- Variables for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
580 struct _release_req_ack *release_req_ack = NULL;
581 StreamingProtobufs__SgNBReleaseRequestAcknowledge *node_0_0 = NULL;
582 StreamingProtobufs__SgNBReleaseRequestAcknowledgeIEs *node_0_1 = NULL;
584 // --------------------------------------------------
585 // --- Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
587 release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values);
588 cur_packet.schema = 901;
590 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
591 if(hdr==NULL) return -1;
593 node_0_0 = hdr->sgnbreleaserequestacknowledge;
594 if(node_0_0==NULL) return -2;
595 if(hdr->header==NULL) return -3;
597 ts_lo = hdr->header->timestamp & 0xffffffff;
598 ts_hi = hdr->header->timestamp >> 32;
599 release_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
600 if(hdr->header->gnbid==NULL)
601 release_req_ack->gnb_id = empty_string;
603 release_req_ack->gnb_id = hdr->header->gnbid->value;
605 node_0_1 = node_0_0->protocolies;
606 if(node_0_0->protocolies){
607 release_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
608 release_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
609 if(node_0_1->id_menb_ue_x2ap_id_extension){
610 release_req_ack->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
612 release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0;
614 rts_fta_process_packet(&cur_packet);
616 streaming_protobufs__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL);
620 gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t buflen){
621 char *empty_string = "";
622 unsigned long long int ts_lo, ts_hi;
623 StreamingProtobufs__X2APStreaming *hdr = NULL;
624 // ------------------------------------------
625 // --- Variables for .proto sgnb_release_required.json, path release_rqd.json
626 struct _SgNB_release_rqd *SgNB_release_rqd = NULL;
627 StreamingProtobufs__SgNBReleaseRequired *node_0_0 = NULL;
628 StreamingProtobufs__SgNBReleaseRequiredIEs *node_0_1 = NULL;
630 // --------------------------------------------------
631 // --- Specialized processing for .proto sgnb_release_required.json, path release_rqd.json
633 SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values);
634 cur_packet.schema = 1001;
636 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
637 if(hdr==NULL) return -1;
639 node_0_0 = hdr->sgnbreleaserequired;
640 if(node_0_0==NULL) return -2;
641 if(hdr->header==NULL) return -3;
643 ts_lo = hdr->header->timestamp & 0xffffffff;
644 ts_hi = hdr->header->timestamp >> 32;
645 SgNB_release_rqd->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
646 if(hdr->header->gnbid==NULL)
647 SgNB_release_rqd->gnb_id = empty_string;
649 SgNB_release_rqd->gnb_id = hdr->header->gnbid->value;
651 node_0_1 = node_0_0->protocolies;
652 if(node_0_0->protocolies){
653 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
654 SgNB_release_rqd->cause_protocol = node_0_1->id_cause->protocol->value;
656 SgNB_release_rqd->cause_protocol = -1;
658 SgNB_release_rqd->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
659 if(node_0_1->id_cause && node_0_1->id_cause->transport){
660 SgNB_release_rqd->cause_transport = node_0_1->id_cause->transport->value;
662 SgNB_release_rqd->cause_transport = -1;
664 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){
665 SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id;
666 SgNB_release_rqd->e_RAB_ID0_exists = 1;
668 SgNB_release_rqd->e_RAB_ID0_exists = 0;
670 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){
671 SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id;
672 SgNB_release_rqd->e_RAB_ID1_exists = 1;
674 SgNB_release_rqd->e_RAB_ID1_exists = 0;
676 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){
677 SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id;
678 SgNB_release_rqd->e_RAB_ID2_exists = 1;
680 SgNB_release_rqd->e_RAB_ID2_exists = 0;
682 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){
683 SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id;
684 SgNB_release_rqd->e_RAB_ID3_exists = 1;
686 SgNB_release_rqd->e_RAB_ID3_exists = 0;
688 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){
689 SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id;
690 SgNB_release_rqd->e_RAB_ID4_exists = 1;
692 SgNB_release_rqd->e_RAB_ID4_exists = 0;
694 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){
695 SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id;
696 SgNB_release_rqd->e_RAB_ID5_exists = 1;
698 SgNB_release_rqd->e_RAB_ID5_exists = 0;
700 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){
701 SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id;
702 SgNB_release_rqd->e_RAB_ID6_exists = 1;
704 SgNB_release_rqd->e_RAB_ID6_exists = 0;
706 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){
707 SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id;
708 SgNB_release_rqd->e_RAB_ID7_exists = 1;
710 SgNB_release_rqd->e_RAB_ID7_exists = 0;
712 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
713 SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value;
715 SgNB_release_rqd->cause_radio_network = -1;
717 SgNB_release_rqd->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
718 if(node_0_1->id_cause && node_0_1->id_cause->misc){
719 SgNB_release_rqd->cause_misc = node_0_1->id_cause->misc->value;
721 SgNB_release_rqd->cause_misc = -1;
723 rts_fta_process_packet(&cur_packet);
725 streaming_protobufs__sg_nbrelease_required__free_unpacked(node_0_0,NULL);
729 gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
730 char *empty_string = "";
731 unsigned long long int ts_lo, ts_hi;
732 StreamingProtobufs__X2APStreaming *hdr = NULL;
733 // ------------------------------------------
734 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
735 struct _serv_nr_cell *serv_nr_cell = NULL;
736 StreamingProtobufs__RRCTransfer *node_0_0 = NULL;
737 StreamingProtobufs__RRCTransferIEs *node_0_1 = NULL;
738 StreamingProtobufs__UENRMeasurement *node_0_2 = NULL;
739 StreamingProtobufs__RRCContainer *node_0_3 = NULL;
740 StreamingProtobufs__ULDCCHMessageType *node_0_4 = NULL;
741 StreamingProtobufs__MeasurementReport *node_0_5 = NULL;
742 StreamingProtobufs__MeasurementReportIEs *node_0_6 = NULL;
743 StreamingProtobufs__MeasResults *node_0_7 = NULL;
744 StreamingProtobufs__MeasResultServMOList *node_0_8 = NULL;
745 StreamingProtobufs__MeasResultServMO *node_0_9 = NULL;
747 StreamingProtobufs__MeasResultNR *node_0_10 = NULL;
748 StreamingProtobufs__MeasResult *node_0_11 = NULL;
749 StreamingProtobufs__CellResults *node_0_12 = NULL;
750 StreamingProtobufs__MeasQuantityResults *node_0_13 = NULL;
751 // ------------------------------------------
752 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
753 struct _nr_neighbor *nr_neighbor = NULL;
754 StreamingProtobufs__RRCTransfer *node_1_0 = NULL;
755 StreamingProtobufs__RRCTransferIEs *node_1_1 = NULL;
756 StreamingProtobufs__UENRMeasurement *node_1_2 = NULL;
757 StreamingProtobufs__RRCContainer *node_1_3 = NULL;
758 StreamingProtobufs__ULDCCHMessageType *node_1_4 = NULL;
759 StreamingProtobufs__MeasurementReport *node_1_5 = NULL;
760 StreamingProtobufs__MeasurementReportIEs *node_1_6 = NULL;
761 StreamingProtobufs__MeasResults *node_1_7 = NULL;
762 StreamingProtobufs__MeasResultListNR *node_1_8 = NULL;
763 StreamingProtobufs__MeasResultNR *node_1_9 = NULL;
765 StreamingProtobufs__MeasResult *node_1_10 = NULL;
766 StreamingProtobufs__CellResults *node_1_11 = NULL;
767 StreamingProtobufs__MeasQuantityResults *node_1_12 = NULL;
768 // ------------------------------------------
769 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
770 struct _serv_cell_beam_csi *serv_cell_beam_csi = NULL;
771 StreamingProtobufs__RRCTransfer *node_2_0 = NULL;
772 StreamingProtobufs__RRCTransferIEs *node_2_1 = NULL;
773 StreamingProtobufs__UENRMeasurement *node_2_2 = NULL;
774 StreamingProtobufs__RRCContainer *node_2_3 = NULL;
775 StreamingProtobufs__ULDCCHMessageType *node_2_4 = NULL;
776 StreamingProtobufs__MeasurementReport *node_2_5 = NULL;
777 StreamingProtobufs__MeasurementReportIEs *node_2_6 = NULL;
778 StreamingProtobufs__MeasResults *node_2_7 = NULL;
779 StreamingProtobufs__MeasResultServMOList *node_2_8 = NULL;
780 StreamingProtobufs__MeasResultServMO *node_2_9 = NULL;
782 StreamingProtobufs__MeasResultNR *node_2_10 = NULL;
783 StreamingProtobufs__MeasResult *node_2_11 = NULL;
784 StreamingProtobufs__RsIndexResults *node_2_12 = NULL;
785 StreamingProtobufs__ResultsPerCSIRSIndexList *node_2_13 = NULL;
786 StreamingProtobufs__ResultsPerCSIRSIndex *node_2_14 = NULL;
788 StreamingProtobufs__MeasQuantityResults *node_2_15 = NULL;
789 // ------------------------------------------
790 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
791 struct _neighbor_beam_csi *neighbor_beam_csi = NULL;
792 StreamingProtobufs__RRCTransfer *node_3_0 = NULL;
793 StreamingProtobufs__RRCTransferIEs *node_3_1 = NULL;
794 StreamingProtobufs__UENRMeasurement *node_3_2 = NULL;
795 StreamingProtobufs__RRCContainer *node_3_3 = NULL;
796 StreamingProtobufs__ULDCCHMessageType *node_3_4 = NULL;
797 StreamingProtobufs__MeasurementReport *node_3_5 = NULL;
798 StreamingProtobufs__MeasurementReportIEs *node_3_6 = NULL;
799 StreamingProtobufs__MeasResults *node_3_7 = NULL;
800 StreamingProtobufs__MeasResultListNR *node_3_8 = NULL;
801 StreamingProtobufs__MeasResultNR *node_3_9 = NULL;
803 StreamingProtobufs__MeasResult *node_3_10 = NULL;
804 StreamingProtobufs__RsIndexResults *node_3_11 = NULL;
805 StreamingProtobufs__ResultsPerCSIRSIndexList *node_3_12 = NULL;
806 StreamingProtobufs__ResultsPerCSIRSIndex *node_3_13 = NULL;
808 StreamingProtobufs__MeasQuantityResults *node_3_14 = NULL;
809 // ------------------------------------------
810 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
811 struct _serv_cell_beam_ssb *serv_cell_beam_ssb = NULL;
812 StreamingProtobufs__RRCTransfer *node_4_0 = NULL;
813 StreamingProtobufs__RRCTransferIEs *node_4_1 = NULL;
814 StreamingProtobufs__UENRMeasurement *node_4_2 = NULL;
815 StreamingProtobufs__RRCContainer *node_4_3 = NULL;
816 StreamingProtobufs__ULDCCHMessageType *node_4_4 = NULL;
817 StreamingProtobufs__MeasurementReport *node_4_5 = NULL;
818 StreamingProtobufs__MeasurementReportIEs *node_4_6 = NULL;
819 StreamingProtobufs__MeasResults *node_4_7 = NULL;
820 StreamingProtobufs__MeasResultServMOList *node_4_8 = NULL;
821 StreamingProtobufs__MeasResultServMO *node_4_9 = NULL;
823 StreamingProtobufs__MeasResultNR *node_4_10 = NULL;
824 StreamingProtobufs__MeasResult *node_4_11 = NULL;
825 StreamingProtobufs__RsIndexResults *node_4_12 = NULL;
826 StreamingProtobufs__ResultsPerSSBIndexList *node_4_13 = NULL;
827 StreamingProtobufs__ResultsPerSSBIndex *node_4_14 = NULL;
829 StreamingProtobufs__MeasQuantityResults *node_4_15 = NULL;
830 // ------------------------------------------
831 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
832 struct _neighbor_beam_ssb *neighbor_beam_ssb = NULL;
833 StreamingProtobufs__RRCTransfer *node_5_0 = NULL;
834 StreamingProtobufs__RRCTransferIEs *node_5_1 = NULL;
835 StreamingProtobufs__UENRMeasurement *node_5_2 = NULL;
836 StreamingProtobufs__RRCContainer *node_5_3 = NULL;
837 StreamingProtobufs__ULDCCHMessageType *node_5_4 = NULL;
838 StreamingProtobufs__MeasurementReport *node_5_5 = NULL;
839 StreamingProtobufs__MeasurementReportIEs *node_5_6 = NULL;
840 StreamingProtobufs__MeasResults *node_5_7 = NULL;
841 StreamingProtobufs__MeasResultListNR *node_5_8 = NULL;
842 StreamingProtobufs__MeasResultNR *node_5_9 = NULL;
844 StreamingProtobufs__MeasResult *node_5_10 = NULL;
845 StreamingProtobufs__RsIndexResults *node_5_11 = NULL;
846 StreamingProtobufs__ResultsPerSSBIndexList *node_5_12 = NULL;
847 StreamingProtobufs__ResultsPerSSBIndex *node_5_13 = NULL;
849 StreamingProtobufs__MeasQuantityResults *node_5_14 = NULL;
851 // --------------------------------------------------
852 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
854 serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values);
855 cur_packet.schema = 1;
857 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
858 if(hdr==NULL) return -1;
860 node_0_0 = hdr->rrctransfer;
861 if(node_0_0==NULL) return -2;
862 if(hdr->header==NULL) return -3;
864 ts_lo = hdr->header->timestamp & 0xffffffff;
865 ts_hi = hdr->header->timestamp >> 32;
866 serv_nr_cell->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
867 if(hdr->header->gnbid==NULL)
868 serv_nr_cell->gnb_id = empty_string;
870 serv_nr_cell->gnb_id = hdr->header->gnbid->value;
872 node_0_1 = node_0_0->rrctransfer_ies;
873 if(node_0_0->rrctransfer_ies){
874 serv_nr_cell->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
875 serv_nr_cell->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
876 node_0_2 = node_0_1->id_uenrmeasurement;
877 if(node_0_1->id_uenrmeasurement){
878 node_0_3 = node_0_2->uenrmeasurements;
879 if(node_0_2->uenrmeasurements){
880 node_0_4 = node_0_3->ul_dcch_message;
881 if(node_0_3->ul_dcch_message){
882 node_0_5 = node_0_4->measurementreport;
883 if(node_0_4->measurementreport){
884 node_0_6 = node_0_5->measurementreport;
885 if(node_0_5->measurementreport){
886 node_0_7 = node_0_6->measresults;
887 if(node_0_6->measresults){
888 node_0_8 = node_0_7->measresultservingmolist;
889 if(node_0_7->measresultservingmolist){
890 for(i_0_9=0;i_0_9<node_0_8->n_items; i_0_9++){
891 node_0_9 = node_0_8->items[i_0_9];
892 serv_nr_cell->servCellID = node_0_9->servcellid;
893 node_0_10 = node_0_9->measresultservingcell;
894 if(node_0_9->measresultservingcell){
895 if(node_0_10->physcellid){
896 serv_nr_cell->physCellId = node_0_10->physcellid->value;
897 serv_nr_cell->physCellId_exists = 1;
899 serv_nr_cell->physCellId_exists = 0;
901 node_0_11 = node_0_10->measresult;
902 if(node_0_10->measresult){
903 node_0_12 = node_0_11->cellresults;
904 if(node_0_11->cellresults){
905 node_0_13 = node_0_12->resultsssb_cell;
906 if(node_0_12->resultsssb_cell){
908 serv_nr_cell->rsrq = node_0_13->rsrq->value;
909 serv_nr_cell->rsrq_exists = 1;
911 serv_nr_cell->rsrq_exists = 0;
914 serv_nr_cell->rsrp = node_0_13->rsrp->value;
915 serv_nr_cell->rsrp_exists = 1;
917 serv_nr_cell->rsrp_exists = 0;
920 serv_nr_cell->sinr = node_0_13->sinr->value;
921 serv_nr_cell->sinr_exists = 1;
923 serv_nr_cell->sinr_exists = 0;
925 rts_fta_process_packet(&cur_packet);
939 // --------------------------------------------------
940 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
942 nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values);
943 cur_packet.schema = 4;
945 ts_lo = hdr->header->timestamp & 0xffffffff;
946 ts_hi = hdr->header->timestamp >> 32;
947 nr_neighbor->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
948 if(hdr->header->gnbid==NULL)
949 nr_neighbor->gnb_id = empty_string;
951 nr_neighbor->gnb_id = hdr->header->gnbid->value;
953 node_1_1 = node_1_0->rrctransfer_ies;
954 if(node_1_0->rrctransfer_ies){
955 nr_neighbor->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
956 nr_neighbor->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
957 node_1_2 = node_1_1->id_uenrmeasurement;
958 if(node_1_1->id_uenrmeasurement){
959 node_1_3 = node_1_2->uenrmeasurements;
960 if(node_1_2->uenrmeasurements){
961 node_1_4 = node_1_3->ul_dcch_message;
962 if(node_1_3->ul_dcch_message){
963 node_1_5 = node_1_4->measurementreport;
964 if(node_1_4->measurementreport){
965 node_1_6 = node_1_5->measurementreport;
966 if(node_1_5->measurementreport){
967 node_1_7 = node_1_6->measresults;
968 if(node_1_6->measresults){
969 node_1_8 = node_1_7->measresultlistnr;
970 if(node_1_7->measresultlistnr){
971 for(i_1_9=0;i_1_9<node_1_8->n_items; i_1_9++){
972 node_1_9 = node_1_8->items[i_1_9];
973 if(node_1_9->physcellid){
974 nr_neighbor->physCellId = node_1_9->physcellid->value;
975 nr_neighbor->physCellId_exists = 1;
977 nr_neighbor->physCellId_exists = 0;
979 node_1_10 = node_1_9->measresult;
980 if(node_1_9->measresult){
981 node_1_11 = node_1_10->cellresults;
982 if(node_1_10->cellresults){
983 node_1_12 = node_1_11->resultsssb_cell;
984 if(node_1_11->resultsssb_cell){
986 nr_neighbor->rsrq = node_1_12->rsrq->value;
987 nr_neighbor->rsrq_exists = 1;
989 nr_neighbor->rsrq_exists = 0;
992 nr_neighbor->rsrp = node_1_12->rsrp->value;
993 nr_neighbor->rsrp_exists = 1;
995 nr_neighbor->rsrp_exists = 0;
998 nr_neighbor->sinr = node_1_12->sinr->value;
999 nr_neighbor->sinr_exists = 1;
1001 nr_neighbor->sinr_exists = 0;
1003 rts_fta_process_packet(&cur_packet);
1016 // --------------------------------------------------
1017 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1019 serv_cell_beam_csi = (struct _serv_cell_beam_csi *)(cur_packet.record.packed.values);
1020 cur_packet.schema = 2;
1021 node_2_0 = node_1_0;
1022 ts_lo = hdr->header->timestamp & 0xffffffff;
1023 ts_hi = hdr->header->timestamp >> 32;
1024 serv_cell_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1025 if(hdr->header->gnbid==NULL)
1026 serv_cell_beam_csi->gnb_id = empty_string;
1028 serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value;
1030 node_2_1 = node_2_0->rrctransfer_ies;
1031 if(node_2_0->rrctransfer_ies){
1032 serv_cell_beam_csi->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
1033 serv_cell_beam_csi->id_SgNB_UE_X2AP_ID = node_2_1->id_sgnb_ue_x2ap_id;
1034 node_2_2 = node_2_1->id_uenrmeasurement;
1035 if(node_2_1->id_uenrmeasurement){
1036 node_2_3 = node_2_2->uenrmeasurements;
1037 if(node_2_2->uenrmeasurements){
1038 node_2_4 = node_2_3->ul_dcch_message;
1039 if(node_2_3->ul_dcch_message){
1040 node_2_5 = node_2_4->measurementreport;
1041 if(node_2_4->measurementreport){
1042 node_2_6 = node_2_5->measurementreport;
1043 if(node_2_5->measurementreport){
1044 node_2_7 = node_2_6->measresults;
1045 if(node_2_6->measresults){
1046 node_2_8 = node_2_7->measresultservingmolist;
1047 if(node_2_7->measresultservingmolist){
1048 for(i_2_9=0;i_2_9<node_2_8->n_items; i_2_9++){
1049 node_2_9 = node_2_8->items[i_2_9];
1050 serv_cell_beam_csi->servCellID = node_2_9->servcellid;
1051 node_2_10 = node_2_9->measresultservingcell;
1052 if(node_2_9->measresultservingcell){
1053 if(node_2_10->physcellid){
1054 serv_cell_beam_csi->physCellId = node_2_10->physcellid->value;
1055 serv_cell_beam_csi->physCellId_exists = 1;
1057 serv_cell_beam_csi->physCellId_exists = 0;
1059 node_2_11 = node_2_10->measresult;
1060 if(node_2_10->measresult){
1061 node_2_12 = node_2_11->rsindexresults;
1062 if(node_2_11->rsindexresults){
1063 node_2_13 = node_2_12->resultscsi_rs_indexes;
1064 if(node_2_12->resultscsi_rs_indexes){
1065 for(i_2_14=0;i_2_14<node_2_13->n_items; i_2_14++){
1066 node_2_14 = node_2_13->items[i_2_14];
1067 serv_cell_beam_csi->csi_rs_index = node_2_14->csi_rs_index;
1068 node_2_15 = node_2_14->csi_rs_results;
1069 if(node_2_14->csi_rs_results){
1070 if(node_2_15->rsrq){
1071 serv_cell_beam_csi->rsrq = node_2_15->rsrq->value;
1072 serv_cell_beam_csi->rsrq_exists = 1;
1074 serv_cell_beam_csi->rsrq_exists = 0;
1076 if(node_2_15->rsrp){
1077 serv_cell_beam_csi->rsrp = node_2_15->rsrp->value;
1078 serv_cell_beam_csi->rsrp_exists = 1;
1080 serv_cell_beam_csi->rsrp_exists = 0;
1082 if(node_2_15->sinr){
1083 serv_cell_beam_csi->sinr = node_2_15->sinr->value;
1084 serv_cell_beam_csi->sinr_exists = 1;
1086 serv_cell_beam_csi->sinr_exists = 0;
1088 rts_fta_process_packet(&cur_packet);
1104 // --------------------------------------------------
1105 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1107 neighbor_beam_csi = (struct _neighbor_beam_csi *)(cur_packet.record.packed.values);
1108 cur_packet.schema = 5;
1109 node_3_0 = node_2_0;
1110 ts_lo = hdr->header->timestamp & 0xffffffff;
1111 ts_hi = hdr->header->timestamp >> 32;
1112 neighbor_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1113 if(hdr->header->gnbid==NULL)
1114 neighbor_beam_csi->gnb_id = empty_string;
1116 neighbor_beam_csi->gnb_id = hdr->header->gnbid->value;
1118 node_3_1 = node_3_0->rrctransfer_ies;
1119 if(node_3_0->rrctransfer_ies){
1120 neighbor_beam_csi->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
1121 neighbor_beam_csi->id_SgNB_UE_X2AP_ID = node_3_1->id_sgnb_ue_x2ap_id;
1122 node_3_2 = node_3_1->id_uenrmeasurement;
1123 if(node_3_1->id_uenrmeasurement){
1124 node_3_3 = node_3_2->uenrmeasurements;
1125 if(node_3_2->uenrmeasurements){
1126 node_3_4 = node_3_3->ul_dcch_message;
1127 if(node_3_3->ul_dcch_message){
1128 node_3_5 = node_3_4->measurementreport;
1129 if(node_3_4->measurementreport){
1130 node_3_6 = node_3_5->measurementreport;
1131 if(node_3_5->measurementreport){
1132 node_3_7 = node_3_6->measresults;
1133 if(node_3_6->measresults){
1134 node_3_8 = node_3_7->measresultlistnr;
1135 if(node_3_7->measresultlistnr){
1136 for(i_3_9=0;i_3_9<node_3_8->n_items; i_3_9++){
1137 node_3_9 = node_3_8->items[i_3_9];
1138 if(node_3_9->physcellid){
1139 neighbor_beam_csi->physCellId = node_3_9->physcellid->value;
1140 neighbor_beam_csi->physCellId_exists = 1;
1142 neighbor_beam_csi->physCellId_exists = 0;
1144 node_3_10 = node_3_9->measresult;
1145 if(node_3_9->measresult){
1146 node_3_11 = node_3_10->rsindexresults;
1147 if(node_3_10->rsindexresults){
1148 node_3_12 = node_3_11->resultscsi_rs_indexes;
1149 if(node_3_11->resultscsi_rs_indexes){
1150 for(i_3_13=0;i_3_13<node_3_12->n_items; i_3_13++){
1151 node_3_13 = node_3_12->items[i_3_13];
1152 neighbor_beam_csi->csi_rs_index = node_3_13->csi_rs_index;
1153 node_3_14 = node_3_13->csi_rs_results;
1154 if(node_3_13->csi_rs_results){
1155 if(node_3_14->rsrq){
1156 neighbor_beam_csi->rsrq = node_3_14->rsrq->value;
1157 neighbor_beam_csi->rsrq_exists = 1;
1159 neighbor_beam_csi->rsrq_exists = 0;
1161 if(node_3_14->rsrp){
1162 neighbor_beam_csi->rsrp = node_3_14->rsrp->value;
1163 neighbor_beam_csi->rsrp_exists = 1;
1165 neighbor_beam_csi->rsrp_exists = 0;
1167 if(node_3_14->sinr){
1168 neighbor_beam_csi->sinr = node_3_14->sinr->value;
1169 neighbor_beam_csi->sinr_exists = 1;
1171 neighbor_beam_csi->sinr_exists = 0;
1173 rts_fta_process_packet(&cur_packet);
1188 // --------------------------------------------------
1189 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1191 serv_cell_beam_ssb = (struct _serv_cell_beam_ssb *)(cur_packet.record.packed.values);
1192 cur_packet.schema = 3;
1193 node_4_0 = node_3_0;
1194 ts_lo = hdr->header->timestamp & 0xffffffff;
1195 ts_hi = hdr->header->timestamp >> 32;
1196 serv_cell_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1197 if(hdr->header->gnbid==NULL)
1198 serv_cell_beam_ssb->gnb_id = empty_string;
1200 serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value;
1202 node_4_1 = node_4_0->rrctransfer_ies;
1203 if(node_4_0->rrctransfer_ies){
1204 serv_cell_beam_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
1205 serv_cell_beam_ssb->id_SgNB_UE_X2AP_ID = node_4_1->id_sgnb_ue_x2ap_id;
1206 node_4_2 = node_4_1->id_uenrmeasurement;
1207 if(node_4_1->id_uenrmeasurement){
1208 node_4_3 = node_4_2->uenrmeasurements;
1209 if(node_4_2->uenrmeasurements){
1210 node_4_4 = node_4_3->ul_dcch_message;
1211 if(node_4_3->ul_dcch_message){
1212 node_4_5 = node_4_4->measurementreport;
1213 if(node_4_4->measurementreport){
1214 node_4_6 = node_4_5->measurementreport;
1215 if(node_4_5->measurementreport){
1216 node_4_7 = node_4_6->measresults;
1217 if(node_4_6->measresults){
1218 node_4_8 = node_4_7->measresultservingmolist;
1219 if(node_4_7->measresultservingmolist){
1220 for(i_4_9=0;i_4_9<node_4_8->n_items; i_4_9++){
1221 node_4_9 = node_4_8->items[i_4_9];
1222 serv_cell_beam_ssb->servCellID = node_4_9->servcellid;
1223 node_4_10 = node_4_9->measresultservingcell;
1224 if(node_4_9->measresultservingcell){
1225 if(node_4_10->physcellid){
1226 serv_cell_beam_ssb->physCellId = node_4_10->physcellid->value;
1227 serv_cell_beam_ssb->physCellId_exists = 1;
1229 serv_cell_beam_ssb->physCellId_exists = 0;
1231 node_4_11 = node_4_10->measresult;
1232 if(node_4_10->measresult){
1233 node_4_12 = node_4_11->rsindexresults;
1234 if(node_4_11->rsindexresults){
1235 node_4_13 = node_4_12->resultsssb_indexes;
1236 if(node_4_12->resultsssb_indexes){
1237 for(i_4_14=0;i_4_14<node_4_13->n_items; i_4_14++){
1238 node_4_14 = node_4_13->items[i_4_14];
1239 serv_cell_beam_ssb->ssb_Index = node_4_14->ssb_index;
1240 node_4_15 = node_4_14->ssb_results;
1241 if(node_4_14->ssb_results){
1242 if(node_4_15->rsrq){
1243 serv_cell_beam_ssb->rsrq = node_4_15->rsrq->value;
1244 serv_cell_beam_ssb->rsrq_exists = 1;
1246 serv_cell_beam_ssb->rsrq_exists = 0;
1248 if(node_4_15->rsrp){
1249 serv_cell_beam_ssb->rsrp = node_4_15->rsrp->value;
1250 serv_cell_beam_ssb->rsrp_exists = 1;
1252 serv_cell_beam_ssb->rsrp_exists = 0;
1254 if(node_4_15->sinr){
1255 serv_cell_beam_ssb->sinr = node_4_15->sinr->value;
1256 serv_cell_beam_ssb->sinr_exists = 1;
1258 serv_cell_beam_ssb->sinr_exists = 0;
1260 rts_fta_process_packet(&cur_packet);
1276 // --------------------------------------------------
1277 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1279 neighbor_beam_ssb = (struct _neighbor_beam_ssb *)(cur_packet.record.packed.values);
1280 cur_packet.schema = 6;
1281 node_5_0 = node_4_0;
1282 ts_lo = hdr->header->timestamp & 0xffffffff;
1283 ts_hi = hdr->header->timestamp >> 32;
1284 neighbor_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1285 if(hdr->header->gnbid==NULL)
1286 neighbor_beam_ssb->gnb_id = empty_string;
1288 neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value;
1290 node_5_1 = node_5_0->rrctransfer_ies;
1291 if(node_5_0->rrctransfer_ies){
1292 neighbor_beam_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
1293 neighbor_beam_ssb->id_SgNB_UE_X2AP_ID = node_5_1->id_sgnb_ue_x2ap_id;
1294 node_5_2 = node_5_1->id_uenrmeasurement;
1295 if(node_5_1->id_uenrmeasurement){
1296 node_5_3 = node_5_2->uenrmeasurements;
1297 if(node_5_2->uenrmeasurements){
1298 node_5_4 = node_5_3->ul_dcch_message;
1299 if(node_5_3->ul_dcch_message){
1300 node_5_5 = node_5_4->measurementreport;
1301 if(node_5_4->measurementreport){
1302 node_5_6 = node_5_5->measurementreport;
1303 if(node_5_5->measurementreport){
1304 node_5_7 = node_5_6->measresults;
1305 if(node_5_6->measresults){
1306 node_5_8 = node_5_7->measresultlistnr;
1307 if(node_5_7->measresultlistnr){
1308 for(i_5_9=0;i_5_9<node_5_8->n_items; i_5_9++){
1309 node_5_9 = node_5_8->items[i_5_9];
1310 if(node_5_9->physcellid){
1311 neighbor_beam_ssb->physCellId = node_5_9->physcellid->value;
1312 neighbor_beam_ssb->physCellId_exists = 1;
1314 neighbor_beam_ssb->physCellId_exists = 0;
1316 node_5_10 = node_5_9->measresult;
1317 if(node_5_9->measresult){
1318 node_5_11 = node_5_10->rsindexresults;
1319 if(node_5_10->rsindexresults){
1320 node_5_12 = node_5_11->resultsssb_indexes;
1321 if(node_5_11->resultsssb_indexes){
1322 for(i_5_13=0;i_5_13<node_5_12->n_items; i_5_13++){
1323 node_5_13 = node_5_12->items[i_5_13];
1324 neighbor_beam_ssb->ssb_Index = node_5_13->ssb_index;
1325 node_5_14 = node_5_13->ssb_results;
1326 if(node_5_13->ssb_results){
1327 if(node_5_14->rsrq){
1328 neighbor_beam_ssb->rsrq = node_5_14->rsrq->value;
1329 neighbor_beam_ssb->rsrq_exists = 1;
1331 neighbor_beam_ssb->rsrq_exists = 0;
1333 if(node_5_14->rsrp){
1334 neighbor_beam_ssb->rsrp = node_5_14->rsrp->value;
1335 neighbor_beam_ssb->rsrp_exists = 1;
1337 neighbor_beam_ssb->rsrp_exists = 0;
1339 if(node_5_14->sinr){
1340 neighbor_beam_ssb->sinr = node_5_14->sinr->value;
1341 neighbor_beam_ssb->sinr_exists = 1;
1343 neighbor_beam_ssb->sinr_exists = 0;
1345 rts_fta_process_packet(&cur_packet);
1360 streaming_protobufs__rrctransfer__free_unpacked(node_0_0,NULL);
1364 gs_uint32_t process_buffer_ADDREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
1365 char *empty_string = "";
1366 unsigned long long int ts_lo, ts_hi;
1367 StreamingProtobufs__X2APStreaming *hdr = NULL;
1368 // ------------------------------------------
1369 // --- Variables for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1370 struct _sgnb_add_req_reject *sgnb_add_req_reject = NULL;
1371 StreamingProtobufs__SgNBAdditionRequestReject *node_0_0 = NULL;
1372 StreamingProtobufs__Cause *node_0_1 = NULL;
1374 // --------------------------------------------------
1375 // --- Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1377 sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values);
1378 cur_packet.schema = 701;
1380 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1381 if(hdr==NULL) return -1;
1383 node_0_0 = hdr->sgnbadditionrequestreject;
1384 if(node_0_0==NULL) return -2;
1385 if(hdr->header==NULL) return -3;
1387 ts_lo = hdr->header->timestamp & 0xffffffff;
1388 ts_hi = hdr->header->timestamp >> 32;
1389 sgnb_add_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1390 if(hdr->header->gnbid==NULL)
1391 sgnb_add_req_reject->gnb_id = empty_string;
1393 sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value;
1395 sgnb_add_req_reject->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1396 if(node_0_0->id_sgnb_ue_x2ap_id){
1397 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
1398 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 1;
1400 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 0;
1402 node_0_1 = node_0_0->id_cause;
1403 if(node_0_0->id_cause){
1404 if(node_0_1->radionetwork){
1405 sgnb_add_req_reject->cause_radio_network = node_0_1->radionetwork->value;
1407 sgnb_add_req_reject->cause_radio_network = -1;
1409 if(node_0_1->transport){
1410 sgnb_add_req_reject->cause_transport = node_0_1->transport->value;
1412 sgnb_add_req_reject->cause_transport = -1;
1414 if(node_0_1->protocol){
1415 sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value;
1417 sgnb_add_req_reject->cause_protocol = -1;
1420 sgnb_add_req_reject->cause_misc = node_0_1->misc->value;
1422 sgnb_add_req_reject->cause_misc = -1;
1424 rts_fta_process_packet(&cur_packet);
1426 streaming_protobufs__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL);
1430 gs_uint32_t process_buffer_SGNB_ADDITION_REQ_ACK(gs_uint8_t * buffer, gs_uint32_t buflen){
1431 char *empty_string = "";
1432 unsigned long long int ts_lo, ts_hi;
1433 StreamingProtobufs__X2APStreaming *hdr = NULL;
1434 // ------------------------------------------
1435 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1436 struct _eRABs_notadmitted_for_ue *eRABs_notadmitted_for_ue = NULL;
1437 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_0_0 = NULL;
1438 StreamingProtobufs__ERABList *node_0_1 = NULL;
1439 StreamingProtobufs__ERABItemIEs *node_0_2 = NULL;
1441 StreamingProtobufs__ERABItem *node_0_3 = NULL;
1442 // ------------------------------------------
1443 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1444 struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL;
1445 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_1_0 = NULL;
1446 StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_1_1 = NULL;
1447 StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_1_2 = NULL;
1449 // ------------------------------------------
1450 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1451 struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL;
1452 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_2_0 = NULL;
1453 StreamingProtobufs__CGConfig *node_2_1 = NULL;
1454 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_2_2 = NULL;
1455 StreamingProtobufs__CGConfigIEs *node_2_3 = NULL;
1456 // ------------------------------------------
1457 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1458 struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL;
1459 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_3_0 = NULL;
1460 StreamingProtobufs__CGConfig *node_3_1 = NULL;
1461 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL;
1462 StreamingProtobufs__CGConfigIEs *node_3_3 = NULL;
1463 StreamingProtobufs__RadioBearerConfig *node_3_4 = NULL;
1464 StreamingProtobufs__DRBToAddModList *node_3_5 = NULL;
1465 StreamingProtobufs__DRBToAddMod *node_3_6 = NULL;
1467 // ------------------------------------------
1468 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1469 struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL;
1470 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_4_0 = NULL;
1471 StreamingProtobufs__CGConfig *node_4_1 = NULL;
1472 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL;
1473 StreamingProtobufs__CGConfigIEs *node_4_3 = NULL;
1474 StreamingProtobufs__MeasResultList2NR *node_4_4 = NULL;
1475 StreamingProtobufs__MeasResult2NR *node_4_5 = NULL;
1477 StreamingProtobufs__MeasResultNR *node_4_6 = NULL;
1478 StreamingProtobufs__MeasResult *node_4_7 = NULL;
1479 StreamingProtobufs__CellResults *node_4_8 = NULL;
1480 StreamingProtobufs__MeasQuantityResults *node_4_9 = NULL;
1481 // ------------------------------------------
1482 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1483 struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL;
1484 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_5_0 = NULL;
1485 StreamingProtobufs__CGConfig *node_5_1 = NULL;
1486 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL;
1487 StreamingProtobufs__CGConfigIEs *node_5_3 = NULL;
1488 StreamingProtobufs__MeasResultList2NR *node_5_4 = NULL;
1489 StreamingProtobufs__MeasResult2NR *node_5_5 = NULL;
1491 StreamingProtobufs__MeasResultNR *node_5_6 = NULL;
1492 StreamingProtobufs__MeasResult *node_5_7 = NULL;
1493 StreamingProtobufs__RsIndexResults *node_5_8 = NULL;
1494 StreamingProtobufs__ResultsPerCSIRSIndexList *node_5_9 = NULL;
1495 StreamingProtobufs__ResultsPerCSIRSIndex *node_5_10 = NULL;
1497 StreamingProtobufs__MeasQuantityResults *node_5_11 = NULL;
1498 // ------------------------------------------
1499 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1500 struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL;
1501 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_6_0 = NULL;
1502 StreamingProtobufs__CGConfig *node_6_1 = NULL;
1503 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL;
1504 StreamingProtobufs__CGConfigIEs *node_6_3 = NULL;
1505 StreamingProtobufs__MeasResultList2NR *node_6_4 = NULL;
1506 StreamingProtobufs__MeasResult2NR *node_6_5 = NULL;
1508 StreamingProtobufs__MeasResultNR *node_6_6 = NULL;
1509 StreamingProtobufs__MeasResult *node_6_7 = NULL;
1510 StreamingProtobufs__RsIndexResults *node_6_8 = NULL;
1511 StreamingProtobufs__ResultsPerSSBIndexList *node_6_9 = NULL;
1512 StreamingProtobufs__ResultsPerSSBIndex *node_6_10 = NULL;
1514 StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL;
1516 // --------------------------------------------------
1517 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1519 eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values);
1520 cur_packet.schema = 501;
1522 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1523 if(hdr==NULL) return -1;
1525 node_0_0 = hdr->sgnbadditionrequestacknowledge;
1526 if(node_0_0==NULL) return -2;
1527 if(hdr->header==NULL) return -3;
1529 ts_lo = hdr->header->timestamp & 0xffffffff;
1530 ts_hi = hdr->header->timestamp >> 32;
1531 eRABs_notadmitted_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1532 if(hdr->header->gnbid==NULL)
1533 eRABs_notadmitted_for_ue->gnb_id = empty_string;
1535 eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value;
1537 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1538 eRABs_notadmitted_for_ue->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
1539 if(node_0_0->id_menb_ue_x2ap_id_extension){
1540 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
1542 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1544 node_0_1 = node_0_0->id_e_rabs_notadmitted_list;
1545 if(node_0_0->id_e_rabs_notadmitted_list){
1546 for(i_0_2=0;i_0_2<node_0_1->n_items; i_0_2++){
1547 node_0_2 = node_0_1->items[i_0_2];
1548 node_0_3 = node_0_2->id_e_rab_item;
1549 if(node_0_2->id_e_rab_item){
1550 eRABs_notadmitted_for_ue->e_RAB_ID = node_0_3->e_rab_id;
1551 if(node_0_3->cause && node_0_3->cause->transport){
1552 eRABs_notadmitted_for_ue->cause_transport = node_0_3->cause->transport->value;
1554 eRABs_notadmitted_for_ue->cause_transport = -1;
1556 if(node_0_3->cause && node_0_3->cause->protocol){
1557 eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value;
1559 eRABs_notadmitted_for_ue->cause_protocol = -1;
1561 if(node_0_3->cause && node_0_3->cause->misc){
1562 eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value;
1564 eRABs_notadmitted_for_ue->cause_misc = -1;
1566 if(node_0_3->cause && node_0_3->cause->radionetwork){
1567 eRABs_notadmitted_for_ue->cause_radio_network = node_0_3->cause->radionetwork->value;
1569 eRABs_notadmitted_for_ue->cause_radio_network = -1;
1571 rts_fta_process_packet(&cur_packet);
1575 // --------------------------------------------------
1576 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1578 eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values);
1579 cur_packet.schema = 502;
1580 node_1_0 = node_0_0;
1581 ts_lo = hdr->header->timestamp & 0xffffffff;
1582 ts_hi = hdr->header->timestamp >> 32;
1583 eRABs_acked_for_admit_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1584 if(hdr->header->gnbid==NULL)
1585 eRABs_acked_for_admit_for_ue->gnb_id = empty_string;
1587 eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value;
1589 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
1590 eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
1591 if(node_1_0->id_menb_ue_x2ap_id_extension){
1592 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
1594 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1596 node_1_1 = node_1_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist;
1597 if(node_1_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){
1598 for(i_1_2=0;i_1_2<node_1_1->n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_1_2++){
1599 node_1_2 = node_1_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_1_2];
1600 if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority){
1601 eRABs_acked_for_admit_for_ue->ARP = node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
1603 eRABs_acked_for_admit_for_ue->ARP = 0;
1605 if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1606 eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid;
1607 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1;
1609 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0;
1611 if(node_1_2->en_dc_resourceconfiguration){
1612 eRABs_acked_for_admit_for_ue->mCGresources = node_1_2->en_dc_resourceconfiguration->mcgresources;
1613 eRABs_acked_for_admit_for_ue->mCGresources_exists = 1;
1615 eRABs_acked_for_admit_for_ue->mCGresources_exists = 0;
1617 if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1618 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress;
1619 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1;
1621 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0;
1623 if(node_1_2->en_dc_resourceconfiguration){
1624 eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_1_2->en_dc_resourceconfiguration->pdcpatsgnb;
1625 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1;
1627 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0;
1629 if(node_1_2->en_dc_resourceconfiguration){
1630 eRABs_acked_for_admit_for_ue->sCGresources = node_1_2->en_dc_resourceconfiguration->scgresources;
1631 eRABs_acked_for_admit_for_ue->sCGresources_exists = 1;
1633 eRABs_acked_for_admit_for_ue->sCGresources_exists = 0;
1635 eRABs_acked_for_admit_for_ue->e_RAB_ID = node_1_2->e_rab_id;
1636 if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){
1637 eRABs_acked_for_admit_for_ue->qCI = node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci;
1639 eRABs_acked_for_admit_for_ue->qCI = 0;
1641 rts_fta_process_packet(&cur_packet);
1644 // --------------------------------------------------
1645 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1647 SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values);
1648 cur_packet.schema = 503;
1649 node_2_0 = node_1_0;
1650 ts_lo = hdr->header->timestamp & 0xffffffff;
1651 ts_hi = hdr->header->timestamp >> 32;
1652 SgNB_ack_for_ue_NRfreqs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1653 if(hdr->header->gnbid==NULL)
1654 SgNB_ack_for_ue_NRfreqs->gnb_id = empty_string;
1656 SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value;
1658 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
1659 SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
1660 if(node_2_0->id_menb_ue_x2ap_id_extension){
1661 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
1663 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0;
1665 node_2_1 = node_2_0->id_sgnbtomenbcontainer;
1666 if(node_2_0->id_sgnbtomenbcontainer){
1667 node_2_2 = node_2_1->criticalextensionschoice1;
1668 if(node_2_1->criticalextensionschoice1){
1669 node_2_3 = node_2_2->protocolies;
1670 if(node_2_2->protocolies){
1671 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 0 && node_2_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){
1672 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_2_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value;
1673 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1;
1675 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0;
1677 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 1 && node_2_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){
1678 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_2_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value;
1679 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1;
1681 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0;
1683 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 2 && node_2_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){
1684 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_2_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value;
1685 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1;
1687 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0;
1689 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 3 && node_2_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){
1690 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_2_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value;
1691 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1;
1693 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0;
1695 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 4 && node_2_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){
1696 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_2_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value;
1697 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1;
1699 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0;
1701 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 5 && node_2_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){
1702 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_2_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value;
1703 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1;
1705 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0;
1707 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 6 && node_2_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){
1708 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_2_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value;
1709 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1;
1711 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0;
1713 if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 7 && node_2_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){
1714 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_2_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value;
1715 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1;
1717 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0;
1719 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 0){
1720 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_2_3->candidateservingfreqlistnr->items[0];
1721 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1;
1723 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0;
1725 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 1){
1726 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_2_3->candidateservingfreqlistnr->items[1];
1727 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1;
1729 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0;
1731 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 2){
1732 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_2_3->candidateservingfreqlistnr->items[2];
1733 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1;
1735 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0;
1737 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 3){
1738 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_2_3->candidateservingfreqlistnr->items[3];
1739 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1;
1741 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0;
1743 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 4){
1744 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_2_3->candidateservingfreqlistnr->items[4];
1745 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1;
1747 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0;
1749 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 5){
1750 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_2_3->candidateservingfreqlistnr->items[5];
1751 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1;
1753 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0;
1755 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 6){
1756 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_2_3->candidateservingfreqlistnr->items[6];
1757 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1;
1759 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0;
1761 if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 7){
1762 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_2_3->candidateservingfreqlistnr->items[7];
1763 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1;
1765 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0;
1767 rts_fta_process_packet(&cur_packet);
1771 // --------------------------------------------------
1772 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1774 SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values);
1775 cur_packet.schema = 504;
1776 node_3_0 = node_2_0;
1777 ts_lo = hdr->header->timestamp & 0xffffffff;
1778 ts_hi = hdr->header->timestamp >> 32;
1779 SgNB_ack_for_add_mod_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1780 if(hdr->header->gnbid==NULL)
1781 SgNB_ack_for_add_mod_for_ue->gnb_id = empty_string;
1783 SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value;
1785 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id;
1786 SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id;
1787 if(node_3_0->id_menb_ue_x2ap_id_extension){
1788 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value;
1790 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1792 node_3_1 = node_3_0->id_sgnbtomenbcontainer;
1793 if(node_3_0->id_sgnbtomenbcontainer){
1794 node_3_2 = node_3_1->criticalextensionschoice1;
1795 if(node_3_1->criticalextensionschoice1){
1796 node_3_3 = node_3_2->protocolies;
1797 if(node_3_2->protocolies){
1798 node_3_4 = node_3_3->scg_rb_config;
1799 if(node_3_3->scg_rb_config){
1800 if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 0){
1801 SgNB_ack_for_add_mod_for_ue->toRelease0 = node_3_4->drb_toreleaselist->items[0];
1802 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1;
1804 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0;
1806 if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 1){
1807 SgNB_ack_for_add_mod_for_ue->toRelease1 = node_3_4->drb_toreleaselist->items[1];
1808 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1;
1810 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0;
1812 if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 2){
1813 SgNB_ack_for_add_mod_for_ue->toRelease2 = node_3_4->drb_toreleaselist->items[2];
1814 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1;
1816 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0;
1818 if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 3){
1819 SgNB_ack_for_add_mod_for_ue->toRelease3 = node_3_4->drb_toreleaselist->items[3];
1820 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1;
1822 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0;
1824 node_3_5 = node_3_4->drb_toaddmodlist;
1825 if(node_3_4->drb_toaddmodlist){
1826 for(i_3_6=0;i_3_6<node_3_5->n_items; i_3_6++){
1827 node_3_6 = node_3_5->items[i_3_6];
1828 if(node_3_6->recoverpdcp){
1829 SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_3_6->recoverpdcp->value;
1830 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1;
1832 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0;
1834 if(node_3_6->reestablishpdcp){
1835 SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_3_6->reestablishpdcp->value;
1836 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1;
1838 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0;
1840 SgNB_ack_for_add_mod_for_ue->drb_Identity = node_3_6->drb_identity;
1841 SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_3_6->eps_beareridentity;
1842 rts_fta_process_packet(&cur_packet);
1849 // --------------------------------------------------
1850 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1852 SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values);
1853 cur_packet.schema = 505;
1854 node_4_0 = node_3_0;
1855 ts_lo = hdr->header->timestamp & 0xffffffff;
1856 ts_hi = hdr->header->timestamp >> 32;
1857 SgNB_ack_for_ue_measurements->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1858 if(hdr->header->gnbid==NULL)
1859 SgNB_ack_for_ue_measurements->gnb_id = empty_string;
1861 SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value;
1863 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id;
1864 SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id;
1865 if(node_4_0->id_menb_ue_x2ap_id_extension){
1866 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value;
1868 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0;
1870 node_4_1 = node_4_0->id_sgnbtomenbcontainer;
1871 if(node_4_0->id_sgnbtomenbcontainer){
1872 node_4_2 = node_4_1->criticalextensionschoice1;
1873 if(node_4_1->criticalextensionschoice1){
1874 node_4_3 = node_4_2->protocolies;
1875 if(node_4_2->protocolies){
1876 node_4_4 = node_4_3->candidatecellinfolistsn;
1877 if(node_4_3->candidatecellinfolistsn){
1878 for(i_4_5=0;i_4_5<node_4_4->n_items; i_4_5++){
1879 node_4_5 = node_4_4->items[i_4_5];
1880 if(node_4_5->ssbfrequency){
1881 SgNB_ack_for_ue_measurements->ssbFrequency = node_4_5->ssbfrequency->value;
1882 SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1;
1884 SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0;
1886 if(node_4_5->reffreqcsi_rs){
1887 SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_4_5->reffreqcsi_rs->value;
1888 SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1;
1890 SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0;
1892 node_4_6 = node_4_5->measresultservingcell;
1893 if(node_4_5->measresultservingcell){
1894 if(node_4_6->physcellid){
1895 SgNB_ack_for_ue_measurements->physCellId = node_4_6->physcellid->value;
1896 SgNB_ack_for_ue_measurements->physCellId_exists = 1;
1898 SgNB_ack_for_ue_measurements->physCellId_exists = 0;
1900 node_4_7 = node_4_6->measresult;
1901 if(node_4_6->measresult){
1902 node_4_8 = node_4_7->cellresults;
1903 if(node_4_7->cellresults){
1904 node_4_9 = node_4_8->resultscsi_rs_cell;
1905 if(node_4_8->resultscsi_rs_cell){
1907 SgNB_ack_for_ue_measurements->rsrq = node_4_9->rsrq->value;
1908 SgNB_ack_for_ue_measurements->rsrq_exists = 1;
1910 SgNB_ack_for_ue_measurements->rsrq_exists = 0;
1913 SgNB_ack_for_ue_measurements->rsrp = node_4_9->rsrp->value;
1914 SgNB_ack_for_ue_measurements->rsrp_exists = 1;
1916 SgNB_ack_for_ue_measurements->rsrp_exists = 0;
1919 SgNB_ack_for_ue_measurements->sinr = node_4_9->sinr->value;
1920 SgNB_ack_for_ue_measurements->sinr_exists = 1;
1922 SgNB_ack_for_ue_measurements->sinr_exists = 0;
1924 rts_fta_process_packet(&cur_packet);
1934 // --------------------------------------------------
1935 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1937 SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values);
1938 cur_packet.schema = 506;
1939 node_5_0 = node_4_0;
1940 ts_lo = hdr->header->timestamp & 0xffffffff;
1941 ts_hi = hdr->header->timestamp >> 32;
1942 SgNB_ack_for_ue_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1943 if(hdr->header->gnbid==NULL)
1944 SgNB_ack_for_ue_beam_csi->gnb_id = empty_string;
1946 SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value;
1948 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id;
1949 SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id;
1950 if(node_5_0->id_menb_ue_x2ap_id_extension){
1951 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value;
1953 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0;
1955 node_5_1 = node_5_0->id_sgnbtomenbcontainer;
1956 if(node_5_0->id_sgnbtomenbcontainer){
1957 node_5_2 = node_5_1->criticalextensionschoice1;
1958 if(node_5_1->criticalextensionschoice1){
1959 node_5_3 = node_5_2->protocolies;
1960 if(node_5_2->protocolies){
1961 node_5_4 = node_5_3->candidatecellinfolistsn;
1962 if(node_5_3->candidatecellinfolistsn){
1963 for(i_5_5=0;i_5_5<node_5_4->n_items; i_5_5++){
1964 node_5_5 = node_5_4->items[i_5_5];
1965 if(node_5_5->ssbfrequency){
1966 SgNB_ack_for_ue_beam_csi->ssbFrequency = node_5_5->ssbfrequency->value;
1967 SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1;
1969 SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0;
1971 if(node_5_5->reffreqcsi_rs){
1972 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value;
1973 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1;
1975 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0;
1977 node_5_6 = node_5_5->measresultservingcell;
1978 if(node_5_5->measresultservingcell){
1979 if(node_5_6->physcellid){
1980 SgNB_ack_for_ue_beam_csi->physCellId = node_5_6->physcellid->value;
1981 SgNB_ack_for_ue_beam_csi->physCellId_exists = 1;
1983 SgNB_ack_for_ue_beam_csi->physCellId_exists = 0;
1985 node_5_7 = node_5_6->measresult;
1986 if(node_5_6->measresult){
1987 node_5_8 = node_5_7->rsindexresults;
1988 if(node_5_7->rsindexresults){
1989 node_5_9 = node_5_8->resultscsi_rs_indexes;
1990 if(node_5_8->resultscsi_rs_indexes){
1991 for(i_5_10=0;i_5_10<node_5_9->n_items; i_5_10++){
1992 node_5_10 = node_5_9->items[i_5_10];
1993 SgNB_ack_for_ue_beam_csi->csi_rs_index = node_5_10->csi_rs_index;
1994 node_5_11 = node_5_10->csi_rs_results;
1995 if(node_5_10->csi_rs_results){
1996 if(node_5_11->rsrq){
1997 SgNB_ack_for_ue_beam_csi->rsrq = node_5_11->rsrq->value;
1998 SgNB_ack_for_ue_beam_csi->rsrq_exists = 1;
2000 SgNB_ack_for_ue_beam_csi->rsrq_exists = 0;
2002 if(node_5_11->rsrp){
2003 SgNB_ack_for_ue_beam_csi->rsrp = node_5_11->rsrp->value;
2004 SgNB_ack_for_ue_beam_csi->rsrp_exists = 1;
2006 SgNB_ack_for_ue_beam_csi->rsrp_exists = 0;
2008 if(node_5_11->sinr){
2009 SgNB_ack_for_ue_beam_csi->sinr = node_5_11->sinr->value;
2010 SgNB_ack_for_ue_beam_csi->sinr_exists = 1;
2012 SgNB_ack_for_ue_beam_csi->sinr_exists = 0;
2014 rts_fta_process_packet(&cur_packet);
2026 // --------------------------------------------------
2027 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2029 SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values);
2030 cur_packet.schema = 507;
2031 node_6_0 = node_5_0;
2032 ts_lo = hdr->header->timestamp & 0xffffffff;
2033 ts_hi = hdr->header->timestamp >> 32;
2034 SgNB_ack_for_ue_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2035 if(hdr->header->gnbid==NULL)
2036 SgNB_ack_for_ue_beam_ssb->gnb_id = empty_string;
2038 SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value;
2040 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id;
2041 SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id;
2042 if(node_6_0->id_menb_ue_x2ap_id_extension){
2043 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value;
2045 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2047 node_6_1 = node_6_0->id_sgnbtomenbcontainer;
2048 if(node_6_0->id_sgnbtomenbcontainer){
2049 node_6_2 = node_6_1->criticalextensionschoice1;
2050 if(node_6_1->criticalextensionschoice1){
2051 node_6_3 = node_6_2->protocolies;
2052 if(node_6_2->protocolies){
2053 node_6_4 = node_6_3->candidatecellinfolistsn;
2054 if(node_6_3->candidatecellinfolistsn){
2055 for(i_6_5=0;i_6_5<node_6_4->n_items; i_6_5++){
2056 node_6_5 = node_6_4->items[i_6_5];
2057 if(node_6_5->ssbfrequency){
2058 SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_6_5->ssbfrequency->value;
2059 SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1;
2061 SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0;
2063 if(node_6_5->reffreqcsi_rs){
2064 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value;
2065 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1;
2067 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0;
2069 node_6_6 = node_6_5->measresultservingcell;
2070 if(node_6_5->measresultservingcell){
2071 if(node_6_6->physcellid){
2072 SgNB_ack_for_ue_beam_ssb->physCellId = node_6_6->physcellid->value;
2073 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1;
2075 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0;
2077 node_6_7 = node_6_6->measresult;
2078 if(node_6_6->measresult){
2079 node_6_8 = node_6_7->rsindexresults;
2080 if(node_6_7->rsindexresults){
2081 node_6_9 = node_6_8->resultsssb_indexes;
2082 if(node_6_8->resultsssb_indexes){
2083 for(i_6_10=0;i_6_10<node_6_9->n_items; i_6_10++){
2084 node_6_10 = node_6_9->items[i_6_10];
2085 SgNB_ack_for_ue_beam_ssb->ssb_Index = node_6_10->ssb_index;
2086 node_6_11 = node_6_10->ssb_results;
2087 if(node_6_10->ssb_results){
2088 if(node_6_11->rsrq){
2089 SgNB_ack_for_ue_beam_ssb->rsrq = node_6_11->rsrq->value;
2090 SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1;
2092 SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0;
2094 if(node_6_11->rsrp){
2095 SgNB_ack_for_ue_beam_ssb->rsrp = node_6_11->rsrp->value;
2096 SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1;
2098 SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0;
2100 if(node_6_11->sinr){
2101 SgNB_ack_for_ue_beam_ssb->sinr = node_6_11->sinr->value;
2102 SgNB_ack_for_ue_beam_ssb->sinr_exists = 1;
2104 SgNB_ack_for_ue_beam_ssb->sinr_exists = 0;
2106 rts_fta_process_packet(&cur_packet);
2118 streaming_protobufs__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL);
2122 gs_uint32_t process_buffer_SGNB_ADDITION_REQ(gs_uint8_t * buffer, gs_uint32_t buflen){
2123 char *empty_string = "";
2124 unsigned long long int ts_lo, ts_hi;
2125 StreamingProtobufs__X2APStreaming *hdr = NULL;
2126 // ------------------------------------------
2127 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2128 struct _sgnb_addreq_gtp_teid *sgnb_addreq_gtp_teid = NULL;
2129 StreamingProtobufs__SgNBAdditionRequest *node_0_0 = NULL;
2130 StreamingProtobufs__SgNBAdditionRequestIEs *node_0_1 = NULL;
2131 StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_0_2 = NULL;
2132 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_0_3 = NULL;
2134 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_0_4 = NULL;
2135 StreamingProtobufs__ERABsToBeAddedSgNBAddReqSgNBPDCPpresent *node_0_5 = NULL;
2136 StreamingProtobufs__GTPtunnelEndpoint *node_0_6 = NULL;
2137 // ------------------------------------------
2138 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2139 struct _sgnb_addreq_for_ue *sgnb_addreq_for_ue = NULL;
2140 StreamingProtobufs__SgNBAdditionRequest *node_1_0 = NULL;
2141 StreamingProtobufs__SgNBAdditionRequestIEs *node_1_1 = NULL;
2142 StreamingProtobufs__ECGI *node_1_2 = NULL;
2143 // ------------------------------------------
2144 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2145 struct _sgnb_addreq_for_ue_bearers *sgnb_addreq_for_ue_bearers = NULL;
2146 StreamingProtobufs__SgNBAdditionRequest *node_2_0 = NULL;
2147 StreamingProtobufs__SgNBAdditionRequestIEs *node_2_1 = NULL;
2148 StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_2_2 = NULL;
2149 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_2_3 = NULL;
2151 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_2_4 = NULL;
2152 // ------------------------------------------
2153 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2154 struct _sgnb_addreq_for_ue_sn_serv_ssb *sgnb_addreq_for_ue_sn_serv_ssb = NULL;
2155 StreamingProtobufs__SgNBAdditionRequest *node_3_0 = NULL;
2156 StreamingProtobufs__SgNBAdditionRequestIEs *node_3_1 = NULL;
2157 StreamingProtobufs__CGConfigInfo *node_3_2 = NULL;
2158 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_3_3 = NULL;
2159 StreamingProtobufs__CGConfigInfoIEs *node_3_4 = NULL;
2160 StreamingProtobufs__MeasResultList2NR *node_3_5 = NULL;
2161 StreamingProtobufs__MeasResult2NR *node_3_6 = NULL;
2163 StreamingProtobufs__MeasResultNR *node_3_7 = NULL;
2164 StreamingProtobufs__MeasResult *node_3_8 = NULL;
2165 StreamingProtobufs__CellResults *node_3_9 = NULL;
2166 StreamingProtobufs__MeasQuantityResults *node_3_10 = NULL;
2167 // ------------------------------------------
2168 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2169 struct _sgnb_addreq_for_ue_sn_serv_csi_rs *sgnb_addreq_for_ue_sn_serv_csi_rs = NULL;
2170 StreamingProtobufs__SgNBAdditionRequest *node_4_0 = NULL;
2171 StreamingProtobufs__SgNBAdditionRequestIEs *node_4_1 = NULL;
2172 StreamingProtobufs__CGConfigInfo *node_4_2 = NULL;
2173 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_4_3 = NULL;
2174 StreamingProtobufs__CGConfigInfoIEs *node_4_4 = NULL;
2175 StreamingProtobufs__MeasResultList2NR *node_4_5 = NULL;
2176 StreamingProtobufs__MeasResult2NR *node_4_6 = NULL;
2178 StreamingProtobufs__MeasResultNR *node_4_7 = NULL;
2179 StreamingProtobufs__MeasResult *node_4_8 = NULL;
2180 StreamingProtobufs__CellResults *node_4_9 = NULL;
2181 StreamingProtobufs__MeasQuantityResults *node_4_10 = NULL;
2182 // ------------------------------------------
2183 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2184 struct _sgnb_addreq_for_ue_mn_serv_ssb *sgnb_addreq_for_ue_mn_serv_ssb = NULL;
2185 StreamingProtobufs__SgNBAdditionRequest *node_5_0 = NULL;
2186 StreamingProtobufs__SgNBAdditionRequestIEs *node_5_1 = NULL;
2187 StreamingProtobufs__CGConfigInfo *node_5_2 = NULL;
2188 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_5_3 = NULL;
2189 StreamingProtobufs__CGConfigInfoIEs *node_5_4 = NULL;
2190 StreamingProtobufs__MeasResultList2NR *node_5_5 = NULL;
2191 StreamingProtobufs__MeasResult2NR *node_5_6 = NULL;
2193 StreamingProtobufs__MeasResultNR *node_5_7 = NULL;
2194 StreamingProtobufs__MeasResult *node_5_8 = NULL;
2195 StreamingProtobufs__CellResults *node_5_9 = NULL;
2196 StreamingProtobufs__MeasQuantityResults *node_5_10 = NULL;
2197 // ------------------------------------------
2198 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2199 struct _sgnb_addreq_for_ue_mn_serv_csi_rs *sgnb_addreq_for_ue_mn_serv_csi_rs = NULL;
2200 StreamingProtobufs__SgNBAdditionRequest *node_6_0 = NULL;
2201 StreamingProtobufs__SgNBAdditionRequestIEs *node_6_1 = NULL;
2202 StreamingProtobufs__CGConfigInfo *node_6_2 = NULL;
2203 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_6_3 = NULL;
2204 StreamingProtobufs__CGConfigInfoIEs *node_6_4 = NULL;
2205 StreamingProtobufs__MeasResultList2NR *node_6_5 = NULL;
2206 StreamingProtobufs__MeasResult2NR *node_6_6 = NULL;
2208 StreamingProtobufs__MeasResultNR *node_6_7 = NULL;
2209 StreamingProtobufs__MeasResult *node_6_8 = NULL;
2210 StreamingProtobufs__CellResults *node_6_9 = NULL;
2211 StreamingProtobufs__MeasQuantityResults *node_6_10 = NULL;
2212 // ------------------------------------------
2213 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2214 struct _sgnb_addreq_for_ue_sn_neigh_ssb *sgnb_addreq_for_ue_sn_neigh_ssb = NULL;
2215 StreamingProtobufs__SgNBAdditionRequest *node_7_0 = NULL;
2216 StreamingProtobufs__SgNBAdditionRequestIEs *node_7_1 = NULL;
2217 StreamingProtobufs__CGConfigInfo *node_7_2 = NULL;
2218 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_7_3 = NULL;
2219 StreamingProtobufs__CGConfigInfoIEs *node_7_4 = NULL;
2220 StreamingProtobufs__MeasResultList2NR *node_7_5 = NULL;
2221 StreamingProtobufs__MeasResult2NR *node_7_6 = NULL;
2223 StreamingProtobufs__MeasResultListNR *node_7_7 = NULL;
2224 StreamingProtobufs__MeasResultNR *node_7_8 = NULL;
2226 StreamingProtobufs__MeasResult *node_7_9 = NULL;
2227 StreamingProtobufs__CellResults *node_7_10 = NULL;
2228 StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
2229 // ------------------------------------------
2230 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2231 struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *sgnb_addreq_for_ue_sn_neigh_csi_rs = NULL;
2232 StreamingProtobufs__SgNBAdditionRequest *node_8_0 = NULL;
2233 StreamingProtobufs__SgNBAdditionRequestIEs *node_8_1 = NULL;
2234 StreamingProtobufs__CGConfigInfo *node_8_2 = NULL;
2235 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_8_3 = NULL;
2236 StreamingProtobufs__CGConfigInfoIEs *node_8_4 = NULL;
2237 StreamingProtobufs__MeasResultList2NR *node_8_5 = NULL;
2238 StreamingProtobufs__MeasResult2NR *node_8_6 = NULL;
2240 StreamingProtobufs__MeasResultListNR *node_8_7 = NULL;
2241 StreamingProtobufs__MeasResultNR *node_8_8 = NULL;
2243 StreamingProtobufs__MeasResult *node_8_9 = NULL;
2244 StreamingProtobufs__CellResults *node_8_10 = NULL;
2245 StreamingProtobufs__MeasQuantityResults *node_8_11 = NULL;
2246 // ------------------------------------------
2247 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2248 struct _sgnb_addreq_for_ue_mn_neigh_ssb *sgnb_addreq_for_ue_mn_neigh_ssb = NULL;
2249 StreamingProtobufs__SgNBAdditionRequest *node_9_0 = NULL;
2250 StreamingProtobufs__SgNBAdditionRequestIEs *node_9_1 = NULL;
2251 StreamingProtobufs__CGConfigInfo *node_9_2 = NULL;
2252 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_9_3 = NULL;
2253 StreamingProtobufs__CGConfigInfoIEs *node_9_4 = NULL;
2254 StreamingProtobufs__MeasResultList2NR *node_9_5 = NULL;
2255 StreamingProtobufs__MeasResult2NR *node_9_6 = NULL;
2257 StreamingProtobufs__MeasResultListNR *node_9_7 = NULL;
2258 StreamingProtobufs__MeasResultNR *node_9_8 = NULL;
2260 StreamingProtobufs__MeasResult *node_9_9 = NULL;
2261 StreamingProtobufs__CellResults *node_9_10 = NULL;
2262 StreamingProtobufs__MeasQuantityResults *node_9_11 = NULL;
2263 // ------------------------------------------
2264 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2265 struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *sgnb_addreq_for_ue_mn_neigh_csi_rs = NULL;
2266 StreamingProtobufs__SgNBAdditionRequest *node_10_0 = NULL;
2267 StreamingProtobufs__SgNBAdditionRequestIEs *node_10_1 = NULL;
2268 StreamingProtobufs__CGConfigInfo *node_10_2 = NULL;
2269 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_10_3 = NULL;
2270 StreamingProtobufs__CGConfigInfoIEs *node_10_4 = NULL;
2271 StreamingProtobufs__MeasResultList2NR *node_10_5 = NULL;
2272 StreamingProtobufs__MeasResult2NR *node_10_6 = NULL;
2274 StreamingProtobufs__MeasResultListNR *node_10_7 = NULL;
2275 StreamingProtobufs__MeasResultNR *node_10_8 = NULL;
2277 StreamingProtobufs__MeasResult *node_10_9 = NULL;
2278 StreamingProtobufs__CellResults *node_10_10 = NULL;
2279 StreamingProtobufs__MeasQuantityResults *node_10_11 = NULL;
2281 // --------------------------------------------------
2282 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2284 sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values);
2285 cur_packet.schema = 10000;
2287 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
2288 if(hdr==NULL) return -1;
2290 node_0_0 = hdr->sgnbadditionrequest;
2291 if(node_0_0==NULL) return -2;
2292 if(hdr->header==NULL) return -3;
2294 ts_lo = hdr->header->timestamp & 0xffffffff;
2295 ts_hi = hdr->header->timestamp >> 32;
2296 sgnb_addreq_gtp_teid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2297 if(hdr->header->gnbid==NULL)
2298 sgnb_addreq_gtp_teid->gnb_id = empty_string;
2300 sgnb_addreq_gtp_teid->gnb_id = hdr->header->gnbid->value;
2302 node_0_1 = node_0_0->protocolies;
2303 if(node_0_0->protocolies){
2304 sgnb_addreq_gtp_teid->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
2305 node_0_2 = node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2306 if(node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2307 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
2308 node_0_3 = node_0_2->items[i_0_3];
2309 node_0_4 = node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2310 if(node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2311 node_0_5 = node_0_4->sgnbpdcppresent;
2312 if(node_0_4->sgnbpdcppresent){
2313 node_0_6 = node_0_5->s1_ul_gtptunnelendpoint;
2314 if(node_0_5->s1_ul_gtptunnelendpoint){
2315 sgnb_addreq_gtp_teid->gTP_TEID = node_0_6->gtp_teid;
2316 sgnb_addreq_gtp_teid->transportLayerAddress = node_0_6->transportlayeraddress;
2317 rts_fta_process_packet(&cur_packet);
2324 // --------------------------------------------------
2325 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2327 sgnb_addreq_for_ue = (struct _sgnb_addreq_for_ue *)(cur_packet.record.packed.values);
2328 cur_packet.schema = 401;
2329 node_1_0 = node_0_0;
2330 ts_lo = hdr->header->timestamp & 0xffffffff;
2331 ts_hi = hdr->header->timestamp >> 32;
2332 sgnb_addreq_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2333 if(hdr->header->gnbid==NULL)
2334 sgnb_addreq_for_ue->gnb_id = empty_string;
2336 sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value;
2338 node_1_1 = node_1_0->protocolies;
2339 if(node_1_0->protocolies){
2340 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
2341 if(node_1_1->id_sgnbueaggregatemaximumbitrate){
2342 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink = node_1_1->id_sgnbueaggregatemaximumbitrate->ueaggregatemaximumbitratedownlink;
2343 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 1;
2345 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0;
2347 if(node_1_1->id_menb_ue_x2ap_id_extension){
2348 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
2350 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
2352 node_1_2 = node_1_1->id_menbcell_id;
2353 if(node_1_1->id_menbcell_id){
2354 sgnb_addreq_for_ue->eUTRANcellIdentifier = node_1_2->eutrancellidentifier;
2355 sgnb_addreq_for_ue->pLMN_Identity = node_1_2->plmn_identity;
2356 rts_fta_process_packet(&cur_packet);
2359 // --------------------------------------------------
2360 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2362 sgnb_addreq_for_ue_bearers = (struct _sgnb_addreq_for_ue_bearers *)(cur_packet.record.packed.values);
2363 cur_packet.schema = 402;
2364 node_2_0 = node_1_0;
2365 ts_lo = hdr->header->timestamp & 0xffffffff;
2366 ts_hi = hdr->header->timestamp >> 32;
2367 sgnb_addreq_for_ue_bearers->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2368 if(hdr->header->gnbid==NULL)
2369 sgnb_addreq_for_ue_bearers->gnb_id = empty_string;
2371 sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value;
2373 node_2_1 = node_2_0->protocolies;
2374 if(node_2_0->protocolies){
2375 sgnb_addreq_for_ue_bearers->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
2376 node_2_2 = node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2377 if(node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2378 for(i_2_3=0;i_2_3<node_2_2->n_items; i_2_3++){
2379 node_2_3 = node_2_2->items[i_2_3];
2380 node_2_4 = node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2381 if(node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2382 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2383 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitratedl;
2385 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0;
2387 if(node_2_4->en_dc_resourceconfiguration){
2388 sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_2_4->en_dc_resourceconfiguration->pdcpatsgnb;
2390 sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1;
2392 sgnb_addreq_for_ue_bearers->drb_ID = node_2_4->drb_id;
2393 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority){
2394 sgnb_addreq_for_ue_bearers->priorityLevel = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
2396 sgnb_addreq_for_ue_bearers->priorityLevel = 0;
2398 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2399 sgnb_addreq_for_ue_bearers->gTP_TEID = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->gtp_teid;
2401 sgnb_addreq_for_ue_bearers->gTP_TEID.data = "";
2402 sgnb_addreq_for_ue_bearers->gTP_TEID.len = 1;
2404 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability){
2405 sgnb_addreq_for_ue_bearers->pre_emptionCapability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability->value;
2407 sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1;
2409 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2410 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitrateul;
2412 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0;
2414 if(node_2_4->en_dc_resourceconfiguration){
2415 sgnb_addreq_for_ue_bearers->mCGresources = node_2_4->en_dc_resourceconfiguration->mcgresources;
2417 sgnb_addreq_for_ue_bearers->mCGresources = -1;
2419 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2420 sgnb_addreq_for_ue_bearers->transportLayerAddress = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->transportlayeraddress;
2422 sgnb_addreq_for_ue_bearers->transportLayerAddress.data = "";
2423 sgnb_addreq_for_ue_bearers->transportLayerAddress.len = 1;
2425 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){
2426 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitrateul;
2428 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0;
2430 if(node_2_4->en_dc_resourceconfiguration){
2431 sgnb_addreq_for_ue_bearers->sCGresources = node_2_4->en_dc_resourceconfiguration->scgresources;
2433 sgnb_addreq_for_ue_bearers->sCGresources = -1;
2435 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2436 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitrateul;
2438 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0;
2440 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){
2441 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitrateul;
2443 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0;
2445 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability){
2446 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability->value;
2448 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1;
2450 sgnb_addreq_for_ue_bearers->e_RAB_ID = node_2_4->e_rab_id;
2451 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2452 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitratedl;
2454 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0;
2456 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters){
2457 sgnb_addreq_for_ue_bearers->qCI = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->qci;
2459 sgnb_addreq_for_ue_bearers->qCI = 0;
2461 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){
2462 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitratedl;
2464 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0;
2466 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){
2467 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitratedl;
2469 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0;
2471 rts_fta_process_packet(&cur_packet);
2476 // --------------------------------------------------
2477 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2479 sgnb_addreq_for_ue_sn_serv_ssb = (struct _sgnb_addreq_for_ue_sn_serv_ssb *)(cur_packet.record.packed.values);
2480 cur_packet.schema = 403;
2481 node_3_0 = node_2_0;
2482 ts_lo = hdr->header->timestamp & 0xffffffff;
2483 ts_hi = hdr->header->timestamp >> 32;
2484 sgnb_addreq_for_ue_sn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2485 if(hdr->header->gnbid==NULL)
2486 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = empty_string;
2488 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2490 node_3_1 = node_3_0->protocolies;
2491 if(node_3_0->protocolies){
2492 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
2493 if(node_3_1->id_menb_ue_x2ap_id_extension){
2494 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_3_1->id_menb_ue_x2ap_id_extension->value;
2496 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2498 node_3_2 = node_3_1->id_menbtosgnbcontainer;
2499 if(node_3_1->id_menbtosgnbcontainer){
2500 node_3_3 = node_3_2->criticalextensionschoice1;
2501 if(node_3_2->criticalextensionschoice1){
2502 node_3_4 = node_3_3->protocolies;
2503 if(node_3_3->protocolies){
2504 node_3_5 = node_3_4->candidatecellinfolistsn;
2505 if(node_3_4->candidatecellinfolistsn){
2506 for(i_3_6=0;i_3_6<node_3_5->n_items; i_3_6++){
2507 node_3_6 = node_3_5->items[i_3_6];
2508 node_3_7 = node_3_6->measresultservingcell;
2509 if(node_3_6->measresultservingcell){
2510 if(node_3_7->physcellid){
2511 sgnb_addreq_for_ue_sn_serv_ssb->physCellId = node_3_7->physcellid->value;
2512 sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 1;
2514 sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0;
2516 node_3_8 = node_3_7->measresult;
2517 if(node_3_7->measresult){
2518 node_3_9 = node_3_8->cellresults;
2519 if(node_3_8->cellresults){
2520 node_3_10 = node_3_9->resultsssb_cell;
2521 if(node_3_9->resultsssb_cell){
2522 if(node_3_10->rsrq){
2523 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = node_3_10->rsrq->value;
2525 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128;
2527 if(node_3_10->rsrp){
2528 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_3_10->rsrp->value;
2530 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128;
2532 if(node_3_10->sinr){
2533 sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_3_10->sinr->value;
2535 sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128;
2537 rts_fta_process_packet(&cur_packet);
2548 // --------------------------------------------------
2549 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2551 sgnb_addreq_for_ue_sn_serv_csi_rs = (struct _sgnb_addreq_for_ue_sn_serv_csi_rs *)(cur_packet.record.packed.values);
2552 cur_packet.schema = 404;
2553 node_4_0 = node_3_0;
2554 ts_lo = hdr->header->timestamp & 0xffffffff;
2555 ts_hi = hdr->header->timestamp >> 32;
2556 sgnb_addreq_for_ue_sn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2557 if(hdr->header->gnbid==NULL)
2558 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = empty_string;
2560 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2562 node_4_1 = node_4_0->protocolies;
2563 if(node_4_0->protocolies){
2564 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
2565 if(node_4_1->id_menb_ue_x2ap_id_extension){
2566 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_4_1->id_menb_ue_x2ap_id_extension->value;
2568 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2570 node_4_2 = node_4_1->id_menbtosgnbcontainer;
2571 if(node_4_1->id_menbtosgnbcontainer){
2572 node_4_3 = node_4_2->criticalextensionschoice1;
2573 if(node_4_2->criticalextensionschoice1){
2574 node_4_4 = node_4_3->protocolies;
2575 if(node_4_3->protocolies){
2576 node_4_5 = node_4_4->candidatecellinfolistsn;
2577 if(node_4_4->candidatecellinfolistsn){
2578 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
2579 node_4_6 = node_4_5->items[i_4_6];
2580 node_4_7 = node_4_6->measresultservingcell;
2581 if(node_4_6->measresultservingcell){
2582 if(node_4_7->physcellid){
2583 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId = node_4_7->physcellid->value;
2584 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 1;
2586 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0;
2588 node_4_8 = node_4_7->measresult;
2589 if(node_4_7->measresult){
2590 node_4_9 = node_4_8->cellresults;
2591 if(node_4_8->cellresults){
2592 node_4_10 = node_4_9->resultscsi_rs_cell;
2593 if(node_4_9->resultscsi_rs_cell){
2594 if(node_4_10->rsrq){
2595 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = node_4_10->rsrq->value;
2597 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128;
2599 if(node_4_10->rsrp){
2600 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_4_10->rsrp->value;
2602 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128;
2604 if(node_4_10->sinr){
2605 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_4_10->sinr->value;
2607 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128;
2609 rts_fta_process_packet(&cur_packet);
2620 // --------------------------------------------------
2621 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2623 sgnb_addreq_for_ue_mn_serv_ssb = (struct _sgnb_addreq_for_ue_mn_serv_ssb *)(cur_packet.record.packed.values);
2624 cur_packet.schema = 405;
2625 node_5_0 = node_4_0;
2626 ts_lo = hdr->header->timestamp & 0xffffffff;
2627 ts_hi = hdr->header->timestamp >> 32;
2628 sgnb_addreq_for_ue_mn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2629 if(hdr->header->gnbid==NULL)
2630 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = empty_string;
2632 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2634 node_5_1 = node_5_0->protocolies;
2635 if(node_5_0->protocolies){
2636 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
2637 if(node_5_1->id_menb_ue_x2ap_id_extension){
2638 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_5_1->id_menb_ue_x2ap_id_extension->value;
2640 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2642 node_5_2 = node_5_1->id_menbtosgnbcontainer;
2643 if(node_5_1->id_menbtosgnbcontainer){
2644 node_5_3 = node_5_2->criticalextensionschoice1;
2645 if(node_5_2->criticalextensionschoice1){
2646 node_5_4 = node_5_3->protocolies;
2647 if(node_5_3->protocolies){
2648 node_5_5 = node_5_4->candidatecellinfolistmn;
2649 if(node_5_4->candidatecellinfolistmn){
2650 for(i_5_6=0;i_5_6<node_5_5->n_items; i_5_6++){
2651 node_5_6 = node_5_5->items[i_5_6];
2652 node_5_7 = node_5_6->measresultservingcell;
2653 if(node_5_6->measresultservingcell){
2654 if(node_5_7->physcellid){
2655 sgnb_addreq_for_ue_mn_serv_ssb->physCellId = node_5_7->physcellid->value;
2656 sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 1;
2658 sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0;
2660 node_5_8 = node_5_7->measresult;
2661 if(node_5_7->measresult){
2662 node_5_9 = node_5_8->cellresults;
2663 if(node_5_8->cellresults){
2664 node_5_10 = node_5_9->resultsssb_cell;
2665 if(node_5_9->resultsssb_cell){
2666 if(node_5_10->rsrq){
2667 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = node_5_10->rsrq->value;
2669 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128;
2671 if(node_5_10->rsrp){
2672 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_5_10->rsrp->value;
2674 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128;
2676 if(node_5_10->sinr){
2677 sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_5_10->sinr->value;
2679 sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128;
2681 rts_fta_process_packet(&cur_packet);
2692 // --------------------------------------------------
2693 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2695 sgnb_addreq_for_ue_mn_serv_csi_rs = (struct _sgnb_addreq_for_ue_mn_serv_csi_rs *)(cur_packet.record.packed.values);
2696 cur_packet.schema = 406;
2697 node_6_0 = node_5_0;
2698 ts_lo = hdr->header->timestamp & 0xffffffff;
2699 ts_hi = hdr->header->timestamp >> 32;
2700 sgnb_addreq_for_ue_mn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2701 if(hdr->header->gnbid==NULL)
2702 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = empty_string;
2704 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2706 node_6_1 = node_6_0->protocolies;
2707 if(node_6_0->protocolies){
2708 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_6_1->id_menb_ue_x2ap_id;
2709 if(node_6_1->id_menb_ue_x2ap_id_extension){
2710 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_6_1->id_menb_ue_x2ap_id_extension->value;
2712 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2714 node_6_2 = node_6_1->id_menbtosgnbcontainer;
2715 if(node_6_1->id_menbtosgnbcontainer){
2716 node_6_3 = node_6_2->criticalextensionschoice1;
2717 if(node_6_2->criticalextensionschoice1){
2718 node_6_4 = node_6_3->protocolies;
2719 if(node_6_3->protocolies){
2720 node_6_5 = node_6_4->candidatecellinfolistmn;
2721 if(node_6_4->candidatecellinfolistmn){
2722 for(i_6_6=0;i_6_6<node_6_5->n_items; i_6_6++){
2723 node_6_6 = node_6_5->items[i_6_6];
2724 node_6_7 = node_6_6->measresultservingcell;
2725 if(node_6_6->measresultservingcell){
2726 if(node_6_7->physcellid){
2727 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId = node_6_7->physcellid->value;
2728 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 1;
2730 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0;
2732 node_6_8 = node_6_7->measresult;
2733 if(node_6_7->measresult){
2734 node_6_9 = node_6_8->cellresults;
2735 if(node_6_8->cellresults){
2736 node_6_10 = node_6_9->resultscsi_rs_cell;
2737 if(node_6_9->resultscsi_rs_cell){
2738 if(node_6_10->rsrq){
2739 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = node_6_10->rsrq->value;
2741 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128;
2743 if(node_6_10->rsrp){
2744 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_6_10->rsrp->value;
2746 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128;
2748 if(node_6_10->sinr){
2749 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_6_10->sinr->value;
2751 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128;
2753 rts_fta_process_packet(&cur_packet);
2764 // --------------------------------------------------
2765 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2767 sgnb_addreq_for_ue_sn_neigh_ssb = (struct _sgnb_addreq_for_ue_sn_neigh_ssb *)(cur_packet.record.packed.values);
2768 cur_packet.schema = 408;
2769 node_7_0 = node_6_0;
2770 ts_lo = hdr->header->timestamp & 0xffffffff;
2771 ts_hi = hdr->header->timestamp >> 32;
2772 sgnb_addreq_for_ue_sn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2773 if(hdr->header->gnbid==NULL)
2774 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = empty_string;
2776 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2778 node_7_1 = node_7_0->protocolies;
2779 if(node_7_0->protocolies){
2780 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_7_1->id_menb_ue_x2ap_id;
2781 if(node_7_1->id_menb_ue_x2ap_id_extension){
2782 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_1->id_menb_ue_x2ap_id_extension->value;
2784 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2786 node_7_2 = node_7_1->id_menbtosgnbcontainer;
2787 if(node_7_1->id_menbtosgnbcontainer){
2788 node_7_3 = node_7_2->criticalextensionschoice1;
2789 if(node_7_2->criticalextensionschoice1){
2790 node_7_4 = node_7_3->protocolies;
2791 if(node_7_3->protocolies){
2792 node_7_5 = node_7_4->candidatecellinfolistsn;
2793 if(node_7_4->candidatecellinfolistsn){
2794 for(i_7_6=0;i_7_6<node_7_5->n_items; i_7_6++){
2795 node_7_6 = node_7_5->items[i_7_6];
2796 node_7_7 = node_7_6->measresultneighcelllistnr;
2797 if(node_7_6->measresultneighcelllistnr){
2798 for(i_7_8=0;i_7_8<node_7_7->n_items; i_7_8++){
2799 node_7_8 = node_7_7->items[i_7_8];
2800 if(node_7_8->physcellid){
2801 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId = node_7_8->physcellid->value;
2802 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 1;
2804 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0;
2806 node_7_9 = node_7_8->measresult;
2807 if(node_7_8->measresult){
2808 node_7_10 = node_7_9->cellresults;
2809 if(node_7_9->cellresults){
2810 node_7_11 = node_7_10->resultsssb_cell;
2811 if(node_7_10->resultsssb_cell){
2812 if(node_7_11->rsrq){
2813 sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = node_7_11->rsrq->value;
2815 sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128;
2817 if(node_7_11->rsrp){
2818 sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_7_11->rsrp->value;
2820 sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128;
2822 if(node_7_11->sinr){
2823 sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_7_11->sinr->value;
2825 sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128;
2827 rts_fta_process_packet(&cur_packet);
2839 // --------------------------------------------------
2840 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2842 sgnb_addreq_for_ue_sn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *)(cur_packet.record.packed.values);
2843 cur_packet.schema = 409;
2844 node_8_0 = node_7_0;
2845 ts_lo = hdr->header->timestamp & 0xffffffff;
2846 ts_hi = hdr->header->timestamp >> 32;
2847 sgnb_addreq_for_ue_sn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2848 if(hdr->header->gnbid==NULL)
2849 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = empty_string;
2851 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
2853 node_8_1 = node_8_0->protocolies;
2854 if(node_8_0->protocolies){
2855 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_8_1->id_menb_ue_x2ap_id;
2856 if(node_8_1->id_menb_ue_x2ap_id_extension){
2857 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_8_1->id_menb_ue_x2ap_id_extension->value;
2859 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2861 node_8_2 = node_8_1->id_menbtosgnbcontainer;
2862 if(node_8_1->id_menbtosgnbcontainer){
2863 node_8_3 = node_8_2->criticalextensionschoice1;
2864 if(node_8_2->criticalextensionschoice1){
2865 node_8_4 = node_8_3->protocolies;
2866 if(node_8_3->protocolies){
2867 node_8_5 = node_8_4->candidatecellinfolistsn;
2868 if(node_8_4->candidatecellinfolistsn){
2869 for(i_8_6=0;i_8_6<node_8_5->n_items; i_8_6++){
2870 node_8_6 = node_8_5->items[i_8_6];
2871 node_8_7 = node_8_6->measresultneighcelllistnr;
2872 if(node_8_6->measresultneighcelllistnr){
2873 for(i_8_8=0;i_8_8<node_8_7->n_items; i_8_8++){
2874 node_8_8 = node_8_7->items[i_8_8];
2875 if(node_8_8->physcellid){
2876 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId = node_8_8->physcellid->value;
2877 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 1;
2879 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0;
2881 node_8_9 = node_8_8->measresult;
2882 if(node_8_8->measresult){
2883 node_8_10 = node_8_9->cellresults;
2884 if(node_8_9->cellresults){
2885 node_8_11 = node_8_10->resultscsi_rs_cell;
2886 if(node_8_10->resultscsi_rs_cell){
2887 if(node_8_11->rsrq){
2888 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = node_8_11->rsrq->value;
2890 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128;
2892 if(node_8_11->rsrp){
2893 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_8_11->rsrp->value;
2895 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128;
2897 if(node_8_11->sinr){
2898 sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_8_11->sinr->value;
2900 sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128;
2902 rts_fta_process_packet(&cur_packet);
2914 // --------------------------------------------------
2915 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2917 sgnb_addreq_for_ue_mn_neigh_ssb = (struct _sgnb_addreq_for_ue_mn_neigh_ssb *)(cur_packet.record.packed.values);
2918 cur_packet.schema = 410;
2919 node_9_0 = node_8_0;
2920 ts_lo = hdr->header->timestamp & 0xffffffff;
2921 ts_hi = hdr->header->timestamp >> 32;
2922 sgnb_addreq_for_ue_mn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2923 if(hdr->header->gnbid==NULL)
2924 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = empty_string;
2926 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2928 node_9_1 = node_9_0->protocolies;
2929 if(node_9_0->protocolies){
2930 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_9_1->id_menb_ue_x2ap_id;
2931 if(node_9_1->id_menb_ue_x2ap_id_extension){
2932 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_9_1->id_menb_ue_x2ap_id_extension->value;
2934 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2936 node_9_2 = node_9_1->id_menbtosgnbcontainer;
2937 if(node_9_1->id_menbtosgnbcontainer){
2938 node_9_3 = node_9_2->criticalextensionschoice1;
2939 if(node_9_2->criticalextensionschoice1){
2940 node_9_4 = node_9_3->protocolies;
2941 if(node_9_3->protocolies){
2942 node_9_5 = node_9_4->candidatecellinfolistmn;
2943 if(node_9_4->candidatecellinfolistmn){
2944 for(i_9_6=0;i_9_6<node_9_5->n_items; i_9_6++){
2945 node_9_6 = node_9_5->items[i_9_6];
2946 node_9_7 = node_9_6->measresultneighcelllistnr;
2947 if(node_9_6->measresultneighcelllistnr){
2948 for(i_9_8=0;i_9_8<node_9_7->n_items; i_9_8++){
2949 node_9_8 = node_9_7->items[i_9_8];
2950 if(node_9_8->physcellid){
2951 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId = node_9_8->physcellid->value;
2952 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 1;
2954 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0;
2956 node_9_9 = node_9_8->measresult;
2957 if(node_9_8->measresult){
2958 node_9_10 = node_9_9->cellresults;
2959 if(node_9_9->cellresults){
2960 node_9_11 = node_9_10->resultsssb_cell;
2961 if(node_9_10->resultsssb_cell){
2962 if(node_9_11->rsrq){
2963 sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = node_9_11->rsrq->value;
2965 sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128;
2967 if(node_9_11->rsrp){
2968 sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_9_11->rsrp->value;
2970 sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128;
2972 if(node_9_11->sinr){
2973 sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_9_11->sinr->value;
2975 sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128;
2977 rts_fta_process_packet(&cur_packet);
2989 // --------------------------------------------------
2990 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2992 sgnb_addreq_for_ue_mn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *)(cur_packet.record.packed.values);
2993 cur_packet.schema = 411;
2994 node_10_0 = node_9_0;
2995 ts_lo = hdr->header->timestamp & 0xffffffff;
2996 ts_hi = hdr->header->timestamp >> 32;
2997 sgnb_addreq_for_ue_mn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2998 if(hdr->header->gnbid==NULL)
2999 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = empty_string;
3001 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
3003 node_10_1 = node_10_0->protocolies;
3004 if(node_10_0->protocolies){
3005 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_10_1->id_menb_ue_x2ap_id;
3006 if(node_10_1->id_menb_ue_x2ap_id_extension){
3007 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_10_1->id_menb_ue_x2ap_id_extension->value;
3009 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
3011 node_10_2 = node_10_1->id_menbtosgnbcontainer;
3012 if(node_10_1->id_menbtosgnbcontainer){
3013 node_10_3 = node_10_2->criticalextensionschoice1;
3014 if(node_10_2->criticalextensionschoice1){
3015 node_10_4 = node_10_3->protocolies;
3016 if(node_10_3->protocolies){
3017 node_10_5 = node_10_4->candidatecellinfolistmn;
3018 if(node_10_4->candidatecellinfolistmn){
3019 for(i_10_6=0;i_10_6<node_10_5->n_items; i_10_6++){
3020 node_10_6 = node_10_5->items[i_10_6];
3021 node_10_7 = node_10_6->measresultneighcelllistnr;
3022 if(node_10_6->measresultneighcelllistnr){
3023 for(i_10_8=0;i_10_8<node_10_7->n_items; i_10_8++){
3024 node_10_8 = node_10_7->items[i_10_8];
3025 if(node_10_8->physcellid){
3026 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId = node_10_8->physcellid->value;
3027 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 1;
3029 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0;
3031 node_10_9 = node_10_8->measresult;
3032 if(node_10_8->measresult){
3033 node_10_10 = node_10_9->cellresults;
3034 if(node_10_9->cellresults){
3035 node_10_11 = node_10_10->resultscsi_rs_cell;
3036 if(node_10_10->resultscsi_rs_cell){
3037 if(node_10_11->rsrq){
3038 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = node_10_11->rsrq->value;
3040 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128;
3042 if(node_10_11->rsrp){
3043 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_10_11->rsrp->value;
3045 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128;
3047 if(node_10_11->sinr){
3048 sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_10_11->sinr->value;
3050 sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128;
3052 rts_fta_process_packet(&cur_packet);
3064 streaming_protobufs__sg_nbaddition_request__free_unpacked(node_0_0,NULL);
3068 gs_uint32_t process_buffer_SGNBMODCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
3069 char *empty_string = "";
3070 unsigned long long int ts_lo, ts_hi;
3071 StreamingProtobufs__X2APStreaming *hdr = NULL;
3072 // ------------------------------------------
3073 // --- Variables for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3074 struct _sgnb_mod_conf *sgnb_mod_conf = NULL;
3075 StreamingProtobufs__SgNBModificationConfirm *node_0_0 = NULL;
3076 StreamingProtobufs__SgNBModificationConfirmIEs *node_0_1 = NULL;
3078 // --------------------------------------------------
3079 // --- Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3081 sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values);
3082 cur_packet.schema = 1301;
3084 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3085 if(hdr==NULL) return -1;
3087 node_0_0 = hdr->sgnbmodificationconfirm;
3088 if(node_0_0==NULL) return -2;
3089 if(hdr->header==NULL) return -3;
3091 ts_lo = hdr->header->timestamp & 0xffffffff;
3092 ts_hi = hdr->header->timestamp >> 32;
3093 sgnb_mod_conf->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3094 if(hdr->header->gnbid==NULL)
3095 sgnb_mod_conf->gnb_id = empty_string;
3097 sgnb_mod_conf->gnb_id = hdr->header->gnbid->value;
3099 node_0_1 = node_0_0->protocolies;
3100 if(node_0_0->protocolies){
3101 sgnb_mod_conf->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3102 sgnb_mod_conf->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3103 rts_fta_process_packet(&cur_packet);
3105 streaming_protobufs__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL);
3109 gs_uint32_t process_buffer_SGNBMODREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
3110 char *empty_string = "";
3111 unsigned long long int ts_lo, ts_hi;
3112 StreamingProtobufs__X2APStreaming *hdr = NULL;
3113 // ------------------------------------------
3114 // --- Variables for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3115 struct _sgnb_mod_req *sgnb_mod_req = NULL;
3116 StreamingProtobufs__SgNBModificationRequest *node_0_0 = NULL;
3117 StreamingProtobufs__SgNBModificationRequestIEs *node_0_1 = NULL;
3119 // --------------------------------------------------
3120 // --- Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3122 sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values);
3123 cur_packet.schema = 1201;
3125 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3126 if(hdr==NULL) return -1;
3128 node_0_0 = hdr->sgnbmodificationrequest;
3129 if(node_0_0==NULL) return -2;
3130 if(hdr->header==NULL) return -3;
3132 ts_lo = hdr->header->timestamp & 0xffffffff;
3133 ts_hi = hdr->header->timestamp >> 32;
3134 sgnb_mod_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3135 if(hdr->header->gnbid==NULL)
3136 sgnb_mod_req->gnb_id = empty_string;
3138 sgnb_mod_req->gnb_id = hdr->header->gnbid->value;
3140 node_0_1 = node_0_0->protocolies;
3141 if(node_0_0->protocolies){
3142 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3143 sgnb_mod_req->cause_protocol = node_0_1->id_cause->protocol->value;
3145 sgnb_mod_req->cause_protocol = -1;
3147 sgnb_mod_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3148 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3149 sgnb_mod_req->cause_transport = node_0_1->id_cause->transport->value;
3151 sgnb_mod_req->cause_transport = -1;
3153 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){
3154 sgnb_mod_req->failureType = node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo->failuretype;
3156 sgnb_mod_req->failureType = -1;
3158 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3159 sgnb_mod_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3161 sgnb_mod_req->cause_radio_network = -1;
3163 sgnb_mod_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3164 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3165 sgnb_mod_req->cause_misc = node_0_1->id_cause->misc->value;
3167 sgnb_mod_req->cause_misc = -1;
3169 rts_fta_process_packet(&cur_packet);
3171 streaming_protobufs__sg_nbmodification_request__free_unpacked(node_0_0,NULL);
3175 gs_uint32_t process_buffer_SGNBMODREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
3176 char *empty_string = "";
3177 unsigned long long int ts_lo, ts_hi;
3178 StreamingProtobufs__X2APStreaming *hdr = NULL;
3179 // ------------------------------------------
3180 // --- Variables for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3181 struct _sgnb_mod_req_ack *sgnb_mod_req_ack = NULL;
3182 StreamingProtobufs__SgNBModificationRequestAcknowledge *node_0_0 = NULL;
3183 StreamingProtobufs__SgNBModificationRequestAcknowledgeIEs *node_0_1 = NULL;
3185 // --------------------------------------------------
3186 // --- Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3188 sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values);
3189 cur_packet.schema = 1701;
3191 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3192 if(hdr==NULL) return -1;
3194 node_0_0 = hdr->sgnbmodificationrequestacknowledge;
3195 if(node_0_0==NULL) return -2;
3196 if(hdr->header==NULL) return -3;
3198 ts_lo = hdr->header->timestamp & 0xffffffff;
3199 ts_hi = hdr->header->timestamp >> 32;
3200 sgnb_mod_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3201 if(hdr->header->gnbid==NULL)
3202 sgnb_mod_req_ack->gnb_id = empty_string;
3204 sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value;
3206 node_0_1 = node_0_0->protocolies;
3207 if(node_0_0->protocolies){
3208 sgnb_mod_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3209 sgnb_mod_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3210 rts_fta_process_packet(&cur_packet);
3212 streaming_protobufs__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL);
3216 gs_uint32_t process_buffer_SGNBMODREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
3217 char *empty_string = "";
3218 unsigned long long int ts_lo, ts_hi;
3219 StreamingProtobufs__X2APStreaming *hdr = NULL;
3220 // ------------------------------------------
3221 // --- Variables for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3222 struct _sgnb_mod_req_reject *sgnb_mod_req_reject = NULL;
3223 StreamingProtobufs__SgNBModificationRequestReject *node_0_0 = NULL;
3224 StreamingProtobufs__SgNBModificationRequestRejectIEs *node_0_1 = NULL;
3226 // --------------------------------------------------
3227 // --- Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3229 sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values);
3230 cur_packet.schema = 1801;
3232 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3233 if(hdr==NULL) return -1;
3235 node_0_0 = hdr->sgnbmodificationrequestreject;
3236 if(node_0_0==NULL) return -2;
3237 if(hdr->header==NULL) return -3;
3239 ts_lo = hdr->header->timestamp & 0xffffffff;
3240 ts_hi = hdr->header->timestamp >> 32;
3241 sgnb_mod_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3242 if(hdr->header->gnbid==NULL)
3243 sgnb_mod_req_reject->gnb_id = empty_string;
3245 sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value;
3247 node_0_1 = node_0_0->protocolies;
3248 if(node_0_0->protocolies){
3249 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3250 sgnb_mod_req_reject->cause_protocol = node_0_1->id_cause->protocol->value;
3252 sgnb_mod_req_reject->cause_protocol = -1;
3254 sgnb_mod_req_reject->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3255 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3256 sgnb_mod_req_reject->cause_transport = node_0_1->id_cause->transport->value;
3258 sgnb_mod_req_reject->cause_transport = -1;
3260 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3261 sgnb_mod_req_reject->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3263 sgnb_mod_req_reject->cause_radio_network = -1;
3265 sgnb_mod_req_reject->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3266 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3267 sgnb_mod_req_reject->cause_misc = node_0_1->id_cause->misc->value;
3269 sgnb_mod_req_reject->cause_misc = -1;
3271 rts_fta_process_packet(&cur_packet);
3273 streaming_protobufs__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL);
3277 gs_uint32_t process_buffer_SGNBMODREQUIRED(gs_uint8_t * buffer, gs_uint32_t buflen){
3278 char *empty_string = "";
3279 unsigned long long int ts_lo, ts_hi;
3280 StreamingProtobufs__X2APStreaming *hdr = NULL;
3281 // ------------------------------------------
3282 // --- Variables for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3283 struct _sgnb_mod_required *sgnb_mod_required = NULL;
3284 StreamingProtobufs__SgNBModificationRequired *node_0_0 = NULL;
3285 StreamingProtobufs__SgNBModificationRequiredIEs *node_0_1 = NULL;
3287 // --------------------------------------------------
3288 // --- Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3290 sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values);
3291 cur_packet.schema = 1901;
3293 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3294 if(hdr==NULL) return -1;
3296 node_0_0 = hdr->sgnbmodificationrequired;
3297 if(node_0_0==NULL) return -2;
3298 if(hdr->header==NULL) return -3;
3300 ts_lo = hdr->header->timestamp & 0xffffffff;
3301 ts_hi = hdr->header->timestamp >> 32;
3302 sgnb_mod_required->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3303 if(hdr->header->gnbid==NULL)
3304 sgnb_mod_required->gnb_id = empty_string;
3306 sgnb_mod_required->gnb_id = hdr->header->gnbid->value;
3308 node_0_1 = node_0_0->protocolies;
3309 if(node_0_0->protocolies){
3310 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3311 sgnb_mod_required->cause_protocol = node_0_1->id_cause->protocol->value;
3313 sgnb_mod_required->cause_protocol = -1;
3315 sgnb_mod_required->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3316 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3317 sgnb_mod_required->cause_transport = node_0_1->id_cause->transport->value;
3319 sgnb_mod_required->cause_transport = -1;
3321 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3322 sgnb_mod_required->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3324 sgnb_mod_required->cause_radio_network = -1;
3326 sgnb_mod_required->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3327 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3328 sgnb_mod_required->cause_misc = node_0_1->id_cause->misc->value;
3330 sgnb_mod_required->cause_misc = -1;
3332 rts_fta_process_packet(&cur_packet);
3334 streaming_protobufs__sg_nbmodification_required__free_unpacked(node_0_0,NULL);
3338 gs_uint32_t process_buffer_SGNBMODREFUSE(gs_uint8_t * buffer, gs_uint32_t buflen){
3339 char *empty_string = "";
3340 unsigned long long int ts_lo, ts_hi;
3341 StreamingProtobufs__X2APStreaming *hdr = NULL;
3342 // ------------------------------------------
3343 // --- Variables for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3344 struct _sgnb_mod_refuse *sgnb_mod_refuse = NULL;
3345 StreamingProtobufs__SgNBModificationRefuse *node_0_0 = NULL;
3346 StreamingProtobufs__SgNBModificationRefuseIEs *node_0_1 = NULL;
3347 StreamingProtobufs__Cause *node_0_2 = NULL;
3349 // --------------------------------------------------
3350 // --- Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3352 sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values);
3353 cur_packet.schema = 1401;
3355 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3356 if(hdr==NULL) return -1;
3358 node_0_0 = hdr->sgnbmodificationrefuse;
3359 if(node_0_0==NULL) return -2;
3360 if(hdr->header==NULL) return -3;
3362 ts_lo = hdr->header->timestamp & 0xffffffff;
3363 ts_hi = hdr->header->timestamp >> 32;
3364 sgnb_mod_refuse->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3365 if(hdr->header->gnbid==NULL)
3366 sgnb_mod_refuse->gnb_id = empty_string;
3368 sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value;
3370 node_0_1 = node_0_0->protocolies;
3371 if(node_0_0->protocolies){
3372 sgnb_mod_refuse->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3373 sgnb_mod_refuse->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3374 node_0_2 = node_0_1->id_cause;
3375 if(node_0_1->id_cause){
3376 if(node_0_2->radionetwork){
3377 sgnb_mod_refuse->cause_radio_network = node_0_2->radionetwork->value;
3379 sgnb_mod_refuse->cause_radio_network = -1;
3381 if(node_0_2->transport){
3382 sgnb_mod_refuse->cause_transport = node_0_2->transport->value;
3384 sgnb_mod_refuse->cause_transport = -1;
3386 if(node_0_2->protocol){
3387 sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value;
3389 sgnb_mod_refuse->cause_protocol = -1;
3392 sgnb_mod_refuse->cause_misc = node_0_2->misc->value;
3394 sgnb_mod_refuse->cause_misc = -1;
3396 rts_fta_process_packet(&cur_packet);
3399 streaming_protobufs__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL);
3403 gs_uint32_t process_buffer_SNSTATUSXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
3404 char *empty_string = "";
3405 unsigned long long int ts_lo, ts_hi;
3406 StreamingProtobufs__X2APStreaming *hdr = NULL;
3407 // ------------------------------------------
3408 // --- Variables for .proto sn_status_transfer.json, path snstatusxfer.json
3409 struct _sn_status_transfer *sn_status_transfer = NULL;
3410 StreamingProtobufs__SNStatusTransfer *node_0_0 = NULL;
3411 StreamingProtobufs__SNStatusTransferIEs *node_0_1 = NULL;
3412 StreamingProtobufs__ERABsSubjectToStatusTransferList *node_0_2 = NULL;
3413 StreamingProtobufs__ERABsSubjectToStatusTransferItemIEs *node_0_3 = NULL;
3415 StreamingProtobufs__ERABsSubjectToStatusTransferItem *node_0_4 = NULL;
3416 StreamingProtobufs__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL;
3418 StreamingProtobufs__COUNTvaluePDCPSNlength18 *node_0_6 = NULL;
3420 // --------------------------------------------------
3421 // --- Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json
3423 sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values);
3424 cur_packet.schema = 1601;
3426 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3427 if(hdr==NULL) return -1;
3429 node_0_0 = hdr->snstatustransfer;
3430 if(node_0_0==NULL) return -2;
3431 if(hdr->header==NULL) return -3;
3433 ts_lo = hdr->header->timestamp & 0xffffffff;
3434 ts_hi = hdr->header->timestamp >> 32;
3435 sn_status_transfer->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3436 if(hdr->header->gnbid==NULL)
3437 sn_status_transfer->gnb_id = empty_string;
3439 sn_status_transfer->gnb_id = hdr->header->gnbid->value;
3441 node_0_1 = node_0_0->protocolies;
3442 if(node_0_0->protocolies){
3443 sn_status_transfer->id_Old_eNB_UE_X2AP_ID = node_0_1->id_old_enb_ue_x2ap_id;
3444 if(node_0_1->id_sgnb_ue_x2ap_id){
3445 sn_status_transfer->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
3447 sn_status_transfer->id_SgNB_UE_X2AP_ID = 0;
3449 node_0_2 = node_0_1->id_e_rabs_subjecttostatustransfer_list;
3450 if(node_0_1->id_e_rabs_subjecttostatustransfer_list){
3451 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
3452 node_0_3 = node_0_2->items[i_0_3];
3453 node_0_4 = node_0_3->id_e_rabs_subjecttostatustransfer_item;
3454 if(node_0_3->id_e_rabs_subjecttostatustransfer_item){
3455 sn_status_transfer->e_RAB_ID = node_0_4->e_rab_id;
3456 for(i_0_5=0;i_0_5<node_0_4->n_ie_extensions; i_0_5++){
3457 node_0_5 = node_0_4->ie_extensions[i_0_5];
3458 node_0_6 = node_0_5->id_dlcountvaluepdcp_snlength18;
3459 if(node_0_5->id_dlcountvaluepdcp_snlength18){
3460 sn_status_transfer->pDCP_SNlength18 = node_0_6->pdcp_snlength18;
3461 rts_fta_process_packet(&cur_packet);
3468 streaming_protobufs__snstatus_transfer__free_unpacked(node_0_0,NULL);
3473 int init_cur_packet(){
3474 cur_packet.ptype=PTYPE_STRUCT;
3475 cur_packet.record.packed.values = (void *)(malloc(10000));
3477 if(cur_packet.record.packed.values==NULL){
3478 print_error("could not malloc a data block for cur_packet in init_cur_packet.");
3483 //---------------- END Specialized proto parsing -----------
3485 static void dproto_replay_check_messages() {
3486 if (fta_start_service(0)<0) {
3487 print_error("Error:in processing the msg queue for a replay file");
3492 // Read length bytes from the current socket into buffer.
3493 static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){
3498 struct timeval socket_timeout;
3501 FD_ZERO(&socket_rset);
3502 FD_SET(socket_desc,&socket_rset);
3503 FD_ZERO(&socket_eset);
3504 FD_SET(socket_desc,&socket_eset);
3505 // timeout in one millisecon
3506 socket_timeout.tv_sec=0;
3507 socket_timeout.tv_usec=1000;
3509 if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) {
3517 while(used < length) {
3518 if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) {
3519 print_error("ERROR:could not read data from gdat stream");
3527 // query gshub and use that info to open a socket
3528 static void init_socket() {
3531 struct sockaddr_in server;
3533 if (get_hub(&gshub)!=0) {
3534 print_error("ERROR:could not find gshub for data source");
3538 if (get_streamsource(gshub,name,&srcinfo,1) !=0) {
3539 print_error("ERROR:could not find data source for stream\n");
3543 socket_desc = socket(AF_INET , SOCK_STREAM , 0);
3544 if (socket_desc == -1)
3546 print_error("ERROR:could not create socket for data stream");
3549 server.sin_addr.s_addr = srcinfo.ip;
3550 server.sin_family = AF_INET;
3551 server.sin_port = srcinfo.port;
3553 if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
3555 print_error("ERROR: could not open connection to data source");
3561 // proceed to the next file
3562 static void next_file() {
3565 fprintf(stderr,"Opening %s\n",name);
3567 while (lstat(name,&s)!=0) {
3568 if (errno!=ENOENT) {
3569 print_error("dproto::lstat unexpected return value");
3572 dproto_replay_check_messages();
3578 if ((pd=fopen(name,"r"))==0) {
3579 print_error("dproto::open failed ");
3582 if (singlefile==0) {
3587 // Perform initialization when reading from a file
3588 static gs_retval_t dproto_replay_init(gs_sp_t device) {
3593 gs_sp_t singlefiletmp;
3595 if ((name=get_iface_properties(device,"filename"))==0) {
3596 print_error("dproto_init::No protobuf \"Filename\" defined");
3600 if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) {
3601 if (strncmp(verbosetmp,"TRUE",4)==0) {
3603 fprintf(stderr,"VERBOSE ENABLED\n");
3605 fprintf(stderr,"VERBOSE DISABLED\n");
3608 if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) {
3609 if (strncmp(singlefiletmp,"TRUE",4)==0) {
3612 fprintf(stderr,"SINGLEFILE ENABLED\n");
3615 fprintf(stderr,"SINGLEFILE DISABLED\n");
3619 if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) {
3621 fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay")));
3623 startupdelay=atoi(get_iface_properties(device,"startupdelay"));
3625 if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) {
3627 fprintf(stderr,"GDAT format using gshub\n");
3636 // Read one message from a socket
3637 static gs_retval_t dproto_read_socket()
3642 gs_uint32_t pkg_len;
3649 if((ret=gs_read_buffer(line,28))<0) { return ret;}
3651 pkg_len = atoi(pkg_len_s);
3653 if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;}
3655 cur_packet.systemTime=time(0);
3656 ret = process_buffer(line, pkg_len);
3658 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3664 // read one message from a file
3665 static void dproto_read_tuple(){
3666 gs_uint32_t retlen=0;
3668 gs_uint32_t pkg_len=0;
3674 if (pd==0) next_file();
3676 retlen = fread(line, sizeof(char), 28, pd);
3681 timestamp_s = line+12;
3682 pkg_len = atoi(pkg_len_s);
3684 if(pkg_len >= MAXLINE){
3685 // TODO be more graceful here, but a large pkg_len likely indicates
3687 print_error("Error in dproto_read_tuple, message too long.");
3688 fprintf(stderr,"Error in dproto_read_tuple, message length is %d, max is %d\n",pkg_len, MAXLINE);
3692 retlen = fread(line, sizeof(char), pkg_len, pd);
3694 print_error("Error in dproto_read_tuple, line too short.");
3695 fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
3700 cur_packet.systemTime=time(0);
3701 ret = process_buffer(line, pkg_len);
3703 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3708 if (singlefile==1) {
3710 fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
3714 fprintf(stderr,"RTS SAYS BYe\n");
3716 while(1==1) sleep(1);
3723 // Main loop for processing records from a file or socket
3724 static gs_retval_t dproto_process_file(){
3726 static unsigned totalcnt=0;
3728 for(cnt=0;cnt<5/*0000*/;cnt++) {
3731 retval=dproto_read_socket();
3732 if (retval==-1) return 0; // got a timeout so service message queue
3733 if ((retval==-2) || (ftaschema_is_eof_tuple(cur_packet.record.gdat.schema,(void *)cur_packet.record.gdat.data))) {
3734 // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
3736 fprintf(stderr,"Done processing waiting for things to shut down\n");
3738 // now just service message queue until we get killed or loose connectivity
3740 fta_start_service(0); // service all waiting messages
3741 usleep(1000); // sleep a millisecond
3745 dproto_read_tuple();
3748 totalcnt=totalcnt+cnt;
3750 fprintf(stderr,"Processed %u messages from %s\n",totalcnt, name);
3755 // Entry for processing this interface
3756 gs_retval_t main_dproto(gs_int32_t devicenum, gs_sp_t device, gs_int32_t mapcnt, gs_sp_t map[]) {
3760 dproto_replay_init(device); // will call init_cur_packet
3761 this_device = strdup(device); // save for error messages.
3763 /* initalize host_lib */
3765 fprintf(stderr,"Init LFTAs for %s\n",device);
3768 if (hostlib_init(LFTA,0,devicenum,mapcnt,map)<0) {
3769 fprintf(stderr,"%s::error:could not initiate host lib for clearinghouse\n", device);
3773 //--------------------------------------------
3774 //---- Generated dispatch code
3775 if(strcmp(device,"CONRELEASE")==0){
3776 process_buffer = &process_buffer_CONRELEASE;
3778 if(strcmp(device,"RATDATAUSAGE")==0){
3779 process_buffer = &process_buffer_RATDATAUSAGE;
3781 if(strcmp(device,"RECONCOMPLETE")==0){
3782 process_buffer = &process_buffer_RECONCOMPLETE;
3784 if(strcmp(device,"RELCONF")==0){
3785 process_buffer = &process_buffer_RELCONF;
3787 if(strcmp(device,"RELREQ")==0){
3788 process_buffer = &process_buffer_RELREQ;
3790 if(strcmp(device,"RELREQACK")==0){
3791 process_buffer = &process_buffer_RELREQACK;
3793 if(strcmp(device,"SGNBRELEASERQD")==0){
3794 process_buffer = &process_buffer_SGNBRELEASERQD;
3796 if(strcmp(device,"RRCXFER")==0){
3797 process_buffer = &process_buffer_RRCXFER;
3799 if(strcmp(device,"ADDREQREJECT")==0){
3800 process_buffer = &process_buffer_ADDREQREJECT;
3802 if(strcmp(device,"SGNB_ADDITION_REQ_ACK")==0){
3803 process_buffer = &process_buffer_SGNB_ADDITION_REQ_ACK;
3805 if(strcmp(device,"SGNB_ADDITION_REQ")==0){
3806 process_buffer = &process_buffer_SGNB_ADDITION_REQ;
3808 if(strcmp(device,"SGNBMODCONF")==0){
3809 process_buffer = &process_buffer_SGNBMODCONF;
3811 if(strcmp(device,"SGNBMODREQ")==0){
3812 process_buffer = &process_buffer_SGNBMODREQ;
3814 if(strcmp(device,"SGNBMODREQACK")==0){
3815 process_buffer = &process_buffer_SGNBMODREQACK;
3817 if(strcmp(device,"SGNBMODREQREJECT")==0){
3818 process_buffer = &process_buffer_SGNBMODREQREJECT;
3820 if(strcmp(device,"SGNBMODREQUIRED")==0){
3821 process_buffer = &process_buffer_SGNBMODREQUIRED;
3823 if(strcmp(device,"SGNBMODREFUSE")==0){
3824 process_buffer = &process_buffer_SGNBMODREFUSE;
3826 if(strcmp(device,"SNSTATUSXFER")==0){
3827 process_buffer = &process_buffer_SNSTATUSXFER;
3829 if(process_buffer == NULL){
3830 fprintf(stderr,"Error, interface %s not recognized\n",device);
3833 //--------------------------------------------
3836 fta_init(device); /*xxx probably should get error code back put Ted doesn't give me one*/
3838 cont=startupdelay+time(0);
3840 if (verbose) { fprintf(stderr,"Start startup delay"); }
3842 while (cont>time(NULL)) {
3843 if (fta_start_service(0)<0) {
3844 fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3847 usleep(1000); /* sleep for one millisecond */
3850 if (verbose) { fprintf(stderr,"... Done\n"); }
3852 // open the connection to the data source
3853 if (gshub!=0) { init_socket();}
3855 // wait to process till we get the signal from GSHUB
3856 if (get_hub(&mygshub)!=0) {
3857 print_error("ERROR:could not find gshub for data source");
3860 while(get_startprocessing(mygshub,get_instance_name(),0)!=0) {
3862 if (fta_start_service(0)<0) {
3863 fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3868 /* now we enter an endless loop to process data */
3870 fprintf(stderr,"Start processing %s\n",device);
3874 if (dproto_process_file()<0) {
3875 fprintf(stderr,"%s::error:in processing packets\n", device);
3878 /* process all messages on the message queue*/
3879 if (fta_start_service(0)<0) {
3880 fprintf(stderr,"%s::error:in processing the msg queue\n", device);