Change RMR version to 4.0.5, start listener in background mode at container startup
[ric-app/mc.git] / mc-core / mc / local_datasource / rts_proto.c
1
2 /*
3 ==============================================================================
4
5         Copyright (c) 2018-2019 AT&T Intellectual Property.
6
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
10
11        http://www.apache.org/licenses/LICENSE-2.0
12
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 =============================================================================
19 */
20
21
22 #include <time.h>
23 #include <stdlib.h>
24 #include <string.h>
25 #include <unistd.h>
26 #include <fcntl.h>
27 #include <sys/time.h>
28 #include <sys/stat.h>
29 #include <sys/types.h>
30 #include <sys/socket.h>
31 #include <netinet/in.h>
32 #include "errno.h"
33
34 #include "gsconfig.h"
35 #include "gshub.h"
36 #include "gstypes.h"
37 #include "lapp.h"
38 #include "fta.h"
39 #include "stdio.h"
40 #include "stdlib.h"
41 #include "packet.h"
42 #include "schemaparser.h"
43 #include "lfta/rts.h"
44
45 void rts_fta_process_packet(struct packet * p);
46 void rts_fta_done();
47 void fta_init(gs_sp_t device);
48
49 gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; // set at initialization
50
51 #define MAXLINE 1000000
52
53 static FILE *pd;
54 static int listensockfd=-1;
55 static int fd=-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;
63
64 static gs_uint8_t line[MAXLINE];
65 static gs_uint32_t lineend=0;
66 static unsigned long long timestamp; // extract from input header
67
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;
138
139 // --------------------------------------------------
140 // ---  Specialized processing for .proto ue_context_release.json, path context_release.json
141
142         dc_release = (struct _dc_release *)(cur_packet.record.packed.values);
143         cur_packet.schema = 201;
144
145         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
146         if(hdr==NULL) return -1;
147
148         node_0_0 = hdr->uecontextrelease;
149         if(node_0_0==NULL) return -2;
150         if(hdr->header==NULL) return -3;
151
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;
157         else
158                 dc_release->gnb_id = hdr->header->gnbid->value;
159
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;
162         }else{
163                 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0;
164         }
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;
168         }else{
169                 dc_release->id_SgNB_UE_X2AP_ID = 0;
170         }
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;
173         }else{
174                 dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0;
175         }
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);
179         return 0;
180 }
181
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;
193         gs_uint32_t i_0_3;
194         StreamingProtobufs__SecondaryRATUsageReportItem *node_0_4 = NULL;
195         StreamingProtobufs__ERABUsageReportList *node_0_5 = NULL;
196         StreamingProtobufs__ERABUsageReportItemIEs *node_0_6 = NULL;
197         gs_uint32_t i_0_6;
198         StreamingProtobufs__ERABUsageReportItem *node_0_7 = NULL;
199
200 // --------------------------------------------------
201 // ---  Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
202
203         rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values);
204         cur_packet.schema = 1501;
205
206         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
207         if(hdr==NULL) return -1;
208
209         node_0_0 = hdr->secondaryratdatausagereport;
210         if(node_0_0==NULL) return -2;
211         if(hdr->header==NULL) return -3;
212
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;
218         else
219                 rat_data_usage->gnb_id = hdr->header->gnbid->value;
220
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;
227                 }else{
228                         rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0;
229                 }
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);
248                                                         }
249                                                 }
250                                         }
251                                 }
252                         }
253                 }
254         }
255         streaming_protobufs__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL);
256         return 0;
257 }
258
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;
279
280 // --------------------------------------------------
281 // ---  Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
282
283         reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values);
284         cur_packet.schema = 103;
285
286         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
287         if(hdr==NULL) return -1;
288
289         node_0_0 = hdr->sgnbreconfigurationcomplete;
290         if(node_0_0==NULL) return -2;
291         if(hdr->header==NULL) return -3;
292
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;
298         else
299                 reconfig_all->gnb_id = hdr->header->gnbid->value;
300
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;
305         }else{
306                 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0;
307         }
308         rts_fta_process_packet(&cur_packet);
309 // --------------------------------------------------
310 // ---  Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
311
312         reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values);
313         cur_packet.schema = 101;
314         node_1_0 = node_0_0;
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;
320         else
321                 reconfig_success->gnb_id = hdr->header->gnbid->value;
322
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;
327         }else{
328                 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0;
329         }
330         node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp;
331         if(!(node_1_0->id_responseinformationsgnbreconfcomp)){
332                 rts_fta_process_packet(&cur_packet);
333         }else{
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);
337                 }else{
338                         rts_fta_process_packet(&cur_packet);
339                 }
340         }
341 // --------------------------------------------------
342 // ---  Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
343
344         reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values);
345         cur_packet.schema = 102;
346         node_2_0 = node_1_0;
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;
352         else
353                 reconfig_reject->gnb_id = hdr->header->gnbid->value;
354
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;
359         }else{
360                 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0;
361         }
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;
368                         }else{
369                                 reconfig_reject->cause_radio_network = -1;
370                         }
371                         if(node_2_2->cause && node_2_2->cause->transport){
372                                 reconfig_reject->cause_transport = node_2_2->cause->transport->value;
373                         }else{
374                                 reconfig_reject->cause_transport = -1;
375                         }
376                         if(node_2_2->cause && node_2_2->cause->protocol){
377                                 reconfig_reject->cause_protocol = node_2_2->cause->protocol->value;
378                         }else{
379                                 reconfig_reject->cause_protocol = -1;
380                         }
381                         if(node_2_2->cause && node_2_2->cause->misc){
382                                 reconfig_reject->cause_misc = node_2_2->cause->misc->value;
383                         }else{
384                                 reconfig_reject->cause_misc = -1;
385                         }
386                         rts_fta_process_packet(&cur_packet);
387                 }
388         }
389         streaming_protobufs__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL);
390         return 0;
391 }
392
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;
404         gs_uint32_t i_0_3;
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;
412
413 // --------------------------------------------------
414 // ---  Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
415
416         sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values);
417         cur_packet.schema = 1101;
418
419         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
420         if(hdr==NULL) return -1;
421
422         node_0_0 = hdr->sgnbreleaseconfirm;
423         if(node_0_0==NULL) return -2;
424         if(hdr->header==NULL) return -3;
425
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;
431         else
432                 sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value;
433
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;
440                 }else{
441                         sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0;
442                 }
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;
449                                 }else{
450                                         sgnb_release_confirm_from_menb_erabs->sCGresources = -1;
451                                 }
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;
455                                 }else{
456                                         sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1;
457                                 }
458                                 if(node_0_3->en_dc_resourceconfiguration){
459                                         sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources;
460                                 }else{
461                                         sgnb_release_confirm_from_menb_erabs->mCGresources = -1;
462                                 }
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);
470                                         }
471                                 }
472                         }
473                 }
474         }
475 // --------------------------------------------------
476 // ---  Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
477
478         sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values);
479         cur_packet.schema = 1102;
480         node_1_0 = node_0_0;
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;
486         else
487                 sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value;
488
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;
495                 }else{
496                         sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0;
497                 }
498                 rts_fta_process_packet(&cur_packet);
499         }
500         streaming_protobufs__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL);
501         return 0;
502 }
503
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;
513
514 // --------------------------------------------------
515 // ---  Specialized processing for .proto sgnb_release_request.json, path release_req.json
516
517         release_req = (struct _release_req *)(cur_packet.record.packed.values);
518         cur_packet.schema = 801;
519
520         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
521         if(hdr==NULL) return -1;
522
523         node_0_0 = hdr->sgnbreleaserequest;
524         if(node_0_0==NULL) return -2;
525         if(hdr->header==NULL) return -3;
526
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;
532         else
533                 release_req->gnb_id = hdr->header->gnbid->value;
534
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;
539                 }else{
540                         release_req->cause_protocol = -1;
541                 }
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;
545                 }else{
546                         release_req->cause_transport = -1;
547                 }
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;
550                 }else{
551                         release_req->id_MeNB_UE_X2AP_ID_Extension = 0;
552                 }
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;
555                 }else{
556                         release_req->cause_radio_network = -1;
557                 }
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;
560                 }else{
561                         release_req->id_SgNB_UE_X2AP_ID = 0;
562                 }
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;
565                 }else{
566                         release_req->cause_misc = -1;
567                 }
568                 rts_fta_process_packet(&cur_packet);
569         }
570         streaming_protobufs__sg_nbrelease_request__free_unpacked(node_0_0,NULL);
571         return 0;
572 }
573
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;
583
584 // --------------------------------------------------
585 // ---  Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
586
587         release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values);
588         cur_packet.schema = 901;
589
590         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
591         if(hdr==NULL) return -1;
592
593         node_0_0 = hdr->sgnbreleaserequestacknowledge;
594         if(node_0_0==NULL) return -2;
595         if(hdr->header==NULL) return -3;
596
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;
602         else
603                 release_req_ack->gnb_id = hdr->header->gnbid->value;
604
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;
611                 }else{
612                         release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0;
613                 }
614                 rts_fta_process_packet(&cur_packet);
615         }
616         streaming_protobufs__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL);
617         return 0;
618 }
619
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;
629
630 // --------------------------------------------------
631 // ---  Specialized processing for .proto sgnb_release_required.json, path release_rqd.json
632
633         SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values);
634         cur_packet.schema = 1001;
635
636         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
637         if(hdr==NULL) return -1;
638
639         node_0_0 = hdr->sgnbreleaserequired;
640         if(node_0_0==NULL) return -2;
641         if(hdr->header==NULL) return -3;
642
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;
648         else
649                 SgNB_release_rqd->gnb_id = hdr->header->gnbid->value;
650
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;
655                 }else{
656                         SgNB_release_rqd->cause_protocol = -1;
657                 }
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;
661                 }else{
662                         SgNB_release_rqd->cause_transport = -1;
663                 }
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;
667                 }else{
668                         SgNB_release_rqd->e_RAB_ID0_exists = 0;
669                 }
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;
673                 }else{
674                         SgNB_release_rqd->e_RAB_ID1_exists = 0;
675                 }
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;
679                 }else{
680                         SgNB_release_rqd->e_RAB_ID2_exists = 0;
681                 }
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;
685                 }else{
686                         SgNB_release_rqd->e_RAB_ID3_exists = 0;
687                 }
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;
691                 }else{
692                         SgNB_release_rqd->e_RAB_ID4_exists = 0;
693                 }
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;
697                 }else{
698                         SgNB_release_rqd->e_RAB_ID5_exists = 0;
699                 }
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;
703                 }else{
704                         SgNB_release_rqd->e_RAB_ID6_exists = 0;
705                 }
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;
709                 }else{
710                         SgNB_release_rqd->e_RAB_ID7_exists = 0;
711                 }
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;
714                 }else{
715                         SgNB_release_rqd->cause_radio_network = -1;
716                 }
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;
720                 }else{
721                         SgNB_release_rqd->cause_misc = -1;
722                 }
723                 rts_fta_process_packet(&cur_packet);
724         }
725         streaming_protobufs__sg_nbrelease_required__free_unpacked(node_0_0,NULL);
726         return 0;
727 }
728
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;
746         gs_uint32_t i_0_9;
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;
764         gs_uint32_t i_1_9;
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;
781         gs_uint32_t i_2_9;
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;
787         gs_uint32_t i_2_14;
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;
802         gs_uint32_t i_3_9;
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;
807         gs_uint32_t i_3_13;
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;
822         gs_uint32_t i_4_9;
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;
828         gs_uint32_t i_4_14;
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;
843         gs_uint32_t i_5_9;
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;
848         gs_uint32_t i_5_13;
849         StreamingProtobufs__MeasQuantityResults *node_5_14 = NULL;
850
851 // --------------------------------------------------
852 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
853
854         serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values);
855         cur_packet.schema = 1;
856
857         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
858         if(hdr==NULL) return -1;
859
860         node_0_0 = hdr->rrctransfer;
861         if(node_0_0==NULL) return -2;
862         if(hdr->header==NULL) return -3;
863
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;
869         else
870                 serv_nr_cell->gnb_id = hdr->header->gnbid->value;
871
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;
898                                                                                         }else{
899                                                                                                 serv_nr_cell->physCellId_exists = 0;
900                                                                                         }
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){
907                                                                                                                 if(node_0_13->rsrq){
908                                                                                                                         serv_nr_cell->rsrq = node_0_13->rsrq->value;
909                                                                                                                         serv_nr_cell->rsrq_exists = 1;
910                                                                                                                 }else{
911                                                                                                                         serv_nr_cell->rsrq_exists = 0;
912                                                                                                                 }
913                                                                                                                 if(node_0_13->rsrp){
914                                                                                                                         serv_nr_cell->rsrp = node_0_13->rsrp->value;
915                                                                                                                         serv_nr_cell->rsrp_exists = 1;
916                                                                                                                 }else{
917                                                                                                                         serv_nr_cell->rsrp_exists = 0;
918                                                                                                                 }
919                                                                                                                 if(node_0_13->sinr){
920                                                                                                                         serv_nr_cell->sinr = node_0_13->sinr->value;
921                                                                                                                         serv_nr_cell->sinr_exists = 1;
922                                                                                                                 }else{
923                                                                                                                         serv_nr_cell->sinr_exists = 0;
924                                                                                                                 }
925                                                                                                                 rts_fta_process_packet(&cur_packet);
926                                                                                                         }
927                                                                                                 }
928                                                                                         }
929                                                                                 }
930                                                                         }
931                                                                 }
932                                                         }
933                                                 }
934                                         }
935                                 }
936                         }
937                 }
938         }
939 // --------------------------------------------------
940 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
941
942         nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values);
943         cur_packet.schema = 4;
944         node_1_0 = node_0_0;
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;
950         else
951                 nr_neighbor->gnb_id = hdr->header->gnbid->value;
952
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;
976                                                                                 }else{
977                                                                                         nr_neighbor->physCellId_exists = 0;
978                                                                                 }
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){
985                                                                                                         if(node_1_12->rsrq){
986                                                                                                                 nr_neighbor->rsrq = node_1_12->rsrq->value;
987                                                                                                                 nr_neighbor->rsrq_exists = 1;
988                                                                                                         }else{
989                                                                                                                 nr_neighbor->rsrq_exists = 0;
990                                                                                                         }
991                                                                                                         if(node_1_12->rsrp){
992                                                                                                                 nr_neighbor->rsrp = node_1_12->rsrp->value;
993                                                                                                                 nr_neighbor->rsrp_exists = 1;
994                                                                                                         }else{
995                                                                                                                 nr_neighbor->rsrp_exists = 0;
996                                                                                                         }
997                                                                                                         if(node_1_12->sinr){
998                                                                                                                 nr_neighbor->sinr = node_1_12->sinr->value;
999                                                                                                                 nr_neighbor->sinr_exists = 1;
1000                                                                                                         }else{
1001                                                                                                                 nr_neighbor->sinr_exists = 0;
1002                                                                                                         }
1003                                                                                                         rts_fta_process_packet(&cur_packet);
1004                                                                                                 }
1005                                                                                         }
1006                                                                                 }
1007                                                                         }
1008                                                                 }
1009                                                         }
1010                                                 }
1011                                         }
1012                                 }
1013                         }
1014                 }
1015         }
1016 // --------------------------------------------------
1017 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1018
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;
1027         else
1028                 serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value;
1029
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;
1056                                                                                         }else{
1057                                                                                                 serv_cell_beam_csi->physCellId_exists = 0;
1058                                                                                         }
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;
1073                                                                                                                                 }else{
1074                                                                                                                                         serv_cell_beam_csi->rsrq_exists = 0;
1075                                                                                                                                 }
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;
1079                                                                                                                                 }else{
1080                                                                                                                                         serv_cell_beam_csi->rsrp_exists = 0;
1081                                                                                                                                 }
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;
1085                                                                                                                                 }else{
1086                                                                                                                                         serv_cell_beam_csi->sinr_exists = 0;
1087                                                                                                                                 }
1088                                                                                                                                 rts_fta_process_packet(&cur_packet);
1089                                                                                                                         }
1090                                                                                                                 }
1091                                                                                                         }
1092                                                                                                 }
1093                                                                                         }
1094                                                                                 }
1095                                                                         }
1096                                                                 }
1097                                                         }
1098                                                 }
1099                                         }
1100                                 }
1101                         }
1102                 }
1103         }
1104 // --------------------------------------------------
1105 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1106
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;
1115         else
1116                 neighbor_beam_csi->gnb_id = hdr->header->gnbid->value;
1117
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;
1141                                                                                 }else{
1142                                                                                         neighbor_beam_csi->physCellId_exists = 0;
1143                                                                                 }
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;
1158                                                                                                                         }else{
1159                                                                                                                                 neighbor_beam_csi->rsrq_exists = 0;
1160                                                                                                                         }
1161                                                                                                                         if(node_3_14->rsrp){
1162                                                                                                                                 neighbor_beam_csi->rsrp = node_3_14->rsrp->value;
1163                                                                                                                                 neighbor_beam_csi->rsrp_exists = 1;
1164                                                                                                                         }else{
1165                                                                                                                                 neighbor_beam_csi->rsrp_exists = 0;
1166                                                                                                                         }
1167                                                                                                                         if(node_3_14->sinr){
1168                                                                                                                                 neighbor_beam_csi->sinr = node_3_14->sinr->value;
1169                                                                                                                                 neighbor_beam_csi->sinr_exists = 1;
1170                                                                                                                         }else{
1171                                                                                                                                 neighbor_beam_csi->sinr_exists = 0;
1172                                                                                                                         }
1173                                                                                                                         rts_fta_process_packet(&cur_packet);
1174                                                                                                                 }
1175                                                                                                         }
1176                                                                                                 }
1177                                                                                         }
1178                                                                                 }
1179                                                                         }
1180                                                                 }
1181                                                         }
1182                                                 }
1183                                         }
1184                                 }
1185                         }
1186                 }
1187         }
1188 // --------------------------------------------------
1189 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1190
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;
1199         else
1200                 serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value;
1201
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;
1228                                                                                         }else{
1229                                                                                                 serv_cell_beam_ssb->physCellId_exists = 0;
1230                                                                                         }
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;
1245                                                                                                                                 }else{
1246                                                                                                                                         serv_cell_beam_ssb->rsrq_exists = 0;
1247                                                                                                                                 }
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;
1251                                                                                                                                 }else{
1252                                                                                                                                         serv_cell_beam_ssb->rsrp_exists = 0;
1253                                                                                                                                 }
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;
1257                                                                                                                                 }else{
1258                                                                                                                                         serv_cell_beam_ssb->sinr_exists = 0;
1259                                                                                                                                 }
1260                                                                                                                                 rts_fta_process_packet(&cur_packet);
1261                                                                                                                         }
1262                                                                                                                 }
1263                                                                                                         }
1264                                                                                                 }
1265                                                                                         }
1266                                                                                 }
1267                                                                         }
1268                                                                 }
1269                                                         }
1270                                                 }
1271                                         }
1272                                 }
1273                         }
1274                 }
1275         }
1276 // --------------------------------------------------
1277 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1278
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;
1287         else
1288                 neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value;
1289
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;
1313                                                                                 }else{
1314                                                                                         neighbor_beam_ssb->physCellId_exists = 0;
1315                                                                                 }
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;
1330                                                                                                                         }else{
1331                                                                                                                                 neighbor_beam_ssb->rsrq_exists = 0;
1332                                                                                                                         }
1333                                                                                                                         if(node_5_14->rsrp){
1334                                                                                                                                 neighbor_beam_ssb->rsrp = node_5_14->rsrp->value;
1335                                                                                                                                 neighbor_beam_ssb->rsrp_exists = 1;
1336                                                                                                                         }else{
1337                                                                                                                                 neighbor_beam_ssb->rsrp_exists = 0;
1338                                                                                                                         }
1339                                                                                                                         if(node_5_14->sinr){
1340                                                                                                                                 neighbor_beam_ssb->sinr = node_5_14->sinr->value;
1341                                                                                                                                 neighbor_beam_ssb->sinr_exists = 1;
1342                                                                                                                         }else{
1343                                                                                                                                 neighbor_beam_ssb->sinr_exists = 0;
1344                                                                                                                         }
1345                                                                                                                         rts_fta_process_packet(&cur_packet);
1346                                                                                                                 }
1347                                                                                                         }
1348                                                                                                 }
1349                                                                                         }
1350                                                                                 }
1351                                                                         }
1352                                                                 }
1353                                                         }
1354                                                 }
1355                                         }
1356                                 }
1357                         }
1358                 }
1359         }
1360         streaming_protobufs__rrctransfer__free_unpacked(node_0_0,NULL);
1361         return 0;
1362 }
1363
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;
1373
1374 // --------------------------------------------------
1375 // ---  Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1376
1377         sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values);
1378         cur_packet.schema = 701;
1379
1380         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1381         if(hdr==NULL) return -1;
1382
1383         node_0_0 = hdr->sgnbadditionrequestreject;
1384         if(node_0_0==NULL) return -2;
1385         if(hdr->header==NULL) return -3;
1386
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;
1392         else
1393                 sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value;
1394
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;
1399         }else{
1400                 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 0;
1401         }
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;
1406                 }else{
1407                         sgnb_add_req_reject->cause_radio_network = -1;
1408                 }
1409                 if(node_0_1->transport){
1410                         sgnb_add_req_reject->cause_transport = node_0_1->transport->value;
1411                 }else{
1412                         sgnb_add_req_reject->cause_transport = -1;
1413                 }
1414                 if(node_0_1->protocol){
1415                         sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value;
1416                 }else{
1417                         sgnb_add_req_reject->cause_protocol = -1;
1418                 }
1419                 if(node_0_1->misc){
1420                         sgnb_add_req_reject->cause_misc = node_0_1->misc->value;
1421                 }else{
1422                         sgnb_add_req_reject->cause_misc = -1;
1423                 }
1424                 rts_fta_process_packet(&cur_packet);
1425         }
1426         streaming_protobufs__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL);
1427         return 0;
1428 }
1429
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;
1440         gs_uint32_t i_0_2;
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;
1448         gs_uint32_t i_1_2;
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;
1466         gs_uint32_t i_3_6;
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;
1476         gs_uint32_t i_4_5;
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;
1490         gs_uint32_t i_5_5;
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;
1496         gs_uint32_t i_5_10;
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;
1507         gs_uint32_t i_6_5;
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;
1513         gs_uint32_t i_6_10;
1514         StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL;
1515
1516 // --------------------------------------------------
1517 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1518
1519         eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values);
1520         cur_packet.schema = 501;
1521
1522         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1523         if(hdr==NULL) return -1;
1524
1525         node_0_0 = hdr->sgnbadditionrequestacknowledge;
1526         if(node_0_0==NULL) return -2;
1527         if(hdr->header==NULL) return -3;
1528
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;
1534         else
1535                 eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value;
1536
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;
1541         }else{
1542                 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1543         }
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;
1553                                 }else{
1554                                         eRABs_notadmitted_for_ue->cause_transport = -1;
1555                                 }
1556                                 if(node_0_3->cause && node_0_3->cause->protocol){
1557                                         eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value;
1558                                 }else{
1559                                         eRABs_notadmitted_for_ue->cause_protocol = -1;
1560                                 }
1561                                 if(node_0_3->cause && node_0_3->cause->misc){
1562                                         eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value;
1563                                 }else{
1564                                         eRABs_notadmitted_for_ue->cause_misc = -1;
1565                                 }
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;
1568                                 }else{
1569                                         eRABs_notadmitted_for_ue->cause_radio_network = -1;
1570                                 }
1571                                 rts_fta_process_packet(&cur_packet);
1572                         }
1573                 }
1574         }
1575 // --------------------------------------------------
1576 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1577
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;
1586         else
1587                 eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value;
1588
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;
1593         }else{
1594                 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1595         }
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;
1602                         }else{
1603                                 eRABs_acked_for_admit_for_ue->ARP = 0;
1604                         }
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;
1608                         }else{
1609                                 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0;
1610                         }
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;
1614                         }else{
1615                                 eRABs_acked_for_admit_for_ue->mCGresources_exists = 0;
1616                         }
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;
1620                         }else{
1621                                 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0;
1622                         }
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;
1626                         }else{
1627                                 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0;
1628                         }
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;
1632                         }else{
1633                                 eRABs_acked_for_admit_for_ue->sCGresources_exists = 0;
1634                         }
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;
1638                         }else{
1639                                 eRABs_acked_for_admit_for_ue->qCI = 0;
1640                         }
1641                         rts_fta_process_packet(&cur_packet);
1642                 }
1643         }
1644 // --------------------------------------------------
1645 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1646
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;
1655         else
1656                 SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value;
1657
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;
1662         }else{
1663                 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0;
1664         }
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;
1674                                 }else{
1675                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0;
1676                                 }
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;
1680                                 }else{
1681                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0;
1682                                 }
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;
1686                                 }else{
1687                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0;
1688                                 }
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;
1692                                 }else{
1693                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0;
1694                                 }
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;
1698                                 }else{
1699                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0;
1700                                 }
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;
1704                                 }else{
1705                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0;
1706                                 }
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;
1710                                 }else{
1711                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0;
1712                                 }
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;
1716                                 }else{
1717                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0;
1718                                 }
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;
1722                                 }else{
1723                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0;
1724                                 }
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;
1728                                 }else{
1729                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0;
1730                                 }
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;
1734                                 }else{
1735                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0;
1736                                 }
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;
1740                                 }else{
1741                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0;
1742                                 }
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;
1746                                 }else{
1747                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0;
1748                                 }
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;
1752                                 }else{
1753                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0;
1754                                 }
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;
1758                                 }else{
1759                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0;
1760                                 }
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;
1764                                 }else{
1765                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0;
1766                                 }
1767                                 rts_fta_process_packet(&cur_packet);
1768                         }
1769                 }
1770         }
1771 // --------------------------------------------------
1772 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1773
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;
1782         else
1783                 SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value;
1784
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;
1789         }else{
1790                 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1791         }
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;
1803                                         }else{
1804                                                 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0;
1805                                         }
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;
1809                                         }else{
1810                                                 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0;
1811                                         }
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;
1815                                         }else{
1816                                                 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0;
1817                                         }
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;
1821                                         }else{
1822                                                 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0;
1823                                         }
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;
1831                                                         }else{
1832                                                                 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0;
1833                                                         }
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;
1837                                                         }else{
1838                                                                 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0;
1839                                                         }
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);
1843                                                 }
1844                                         }
1845                                 }
1846                         }
1847                 }
1848         }
1849 // --------------------------------------------------
1850 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1851
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;
1860         else
1861                 SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value;
1862
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;
1867         }else{
1868                 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0;
1869         }
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;
1883                                                 }else{
1884                                                         SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0;
1885                                                 }
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;
1889                                                 }else{
1890                                                         SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0;
1891                                                 }
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;
1897                                                         }else{
1898                                                                 SgNB_ack_for_ue_measurements->physCellId_exists = 0;
1899                                                         }
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){
1906                                                                                 if(node_4_9->rsrq){
1907                                                                                         SgNB_ack_for_ue_measurements->rsrq = node_4_9->rsrq->value;
1908                                                                                         SgNB_ack_for_ue_measurements->rsrq_exists = 1;
1909                                                                                 }else{
1910                                                                                         SgNB_ack_for_ue_measurements->rsrq_exists = 0;
1911                                                                                 }
1912                                                                                 if(node_4_9->rsrp){
1913                                                                                         SgNB_ack_for_ue_measurements->rsrp = node_4_9->rsrp->value;
1914                                                                                         SgNB_ack_for_ue_measurements->rsrp_exists = 1;
1915                                                                                 }else{
1916                                                                                         SgNB_ack_for_ue_measurements->rsrp_exists = 0;
1917                                                                                 }
1918                                                                                 if(node_4_9->sinr){
1919                                                                                         SgNB_ack_for_ue_measurements->sinr = node_4_9->sinr->value;
1920                                                                                         SgNB_ack_for_ue_measurements->sinr_exists = 1;
1921                                                                                 }else{
1922                                                                                         SgNB_ack_for_ue_measurements->sinr_exists = 0;
1923                                                                                 }
1924                                                                                 rts_fta_process_packet(&cur_packet);
1925                                                                         }
1926                                                                 }
1927                                                         }
1928                                                 }
1929                                         }
1930                                 }
1931                         }
1932                 }
1933         }
1934 // --------------------------------------------------
1935 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1936
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;
1945         else
1946                 SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value;
1947
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;
1952         }else{
1953                 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0;
1954         }
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;
1968                                                 }else{
1969                                                         SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0;
1970                                                 }
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;
1974                                                 }else{
1975                                                         SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0;
1976                                                 }
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;
1982                                                         }else{
1983                                                                 SgNB_ack_for_ue_beam_csi->physCellId_exists = 0;
1984                                                         }
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;
1999                                                                                                 }else{
2000                                                                                                         SgNB_ack_for_ue_beam_csi->rsrq_exists = 0;
2001                                                                                                 }
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;
2005                                                                                                 }else{
2006                                                                                                         SgNB_ack_for_ue_beam_csi->rsrp_exists = 0;
2007                                                                                                 }
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;
2011                                                                                                 }else{
2012                                                                                                         SgNB_ack_for_ue_beam_csi->sinr_exists = 0;
2013                                                                                                 }
2014                                                                                                 rts_fta_process_packet(&cur_packet);
2015                                                                                         }
2016                                                                                 }
2017                                                                         }
2018                                                                 }
2019                                                         }
2020                                                 }
2021                                         }
2022                                 }
2023                         }
2024                 }
2025         }
2026 // --------------------------------------------------
2027 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2028
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;
2037         else
2038                 SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value;
2039
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;
2044         }else{
2045                 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2046         }
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;
2060                                                 }else{
2061                                                         SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0;
2062                                                 }
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;
2066                                                 }else{
2067                                                         SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0;
2068                                                 }
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;
2074                                                         }else{
2075                                                                 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0;
2076                                                         }
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;
2091                                                                                                 }else{
2092                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0;
2093                                                                                                 }
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;
2097                                                                                                 }else{
2098                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0;
2099                                                                                                 }
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;
2103                                                                                                 }else{
2104                                                                                                         SgNB_ack_for_ue_beam_ssb->sinr_exists = 0;
2105                                                                                                 }
2106                                                                                                 rts_fta_process_packet(&cur_packet);
2107                                                                                         }
2108                                                                                 }
2109                                                                         }
2110                                                                 }
2111                                                         }
2112                                                 }
2113                                         }
2114                                 }
2115                         }
2116                 }
2117         }
2118         streaming_protobufs__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL);
2119         return 0;
2120 }
2121
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;
2133         gs_uint32_t i_0_3;
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;
2150         gs_uint32_t i_2_3;
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;
2162         gs_uint32_t i_3_6;
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;
2177         gs_uint32_t i_4_6;
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;
2192         gs_uint32_t i_5_6;
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;
2207         gs_uint32_t i_6_6;
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;
2222         gs_uint32_t i_7_6;
2223         StreamingProtobufs__MeasResultListNR *node_7_7 = NULL;
2224         StreamingProtobufs__MeasResultNR *node_7_8 = NULL;
2225         gs_uint32_t i_7_8;
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;
2239         gs_uint32_t i_8_6;
2240         StreamingProtobufs__MeasResultListNR *node_8_7 = NULL;
2241         StreamingProtobufs__MeasResultNR *node_8_8 = NULL;
2242         gs_uint32_t i_8_8;
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;
2256         gs_uint32_t i_9_6;
2257         StreamingProtobufs__MeasResultListNR *node_9_7 = NULL;
2258         StreamingProtobufs__MeasResultNR *node_9_8 = NULL;
2259         gs_uint32_t i_9_8;
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;
2273         gs_uint32_t i_10_6;
2274         StreamingProtobufs__MeasResultListNR *node_10_7 = NULL;
2275         StreamingProtobufs__MeasResultNR *node_10_8 = NULL;
2276         gs_uint32_t i_10_8;
2277         StreamingProtobufs__MeasResult *node_10_9 = NULL;
2278         StreamingProtobufs__CellResults *node_10_10 = NULL;
2279         StreamingProtobufs__MeasQuantityResults *node_10_11 = NULL;
2280
2281 // --------------------------------------------------
2282 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2283
2284         sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values);
2285         cur_packet.schema = 10000;
2286
2287         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
2288         if(hdr==NULL) return -1;
2289
2290         node_0_0 = hdr->sgnbadditionrequest;
2291         if(node_0_0==NULL) return -2;
2292         if(hdr->header==NULL) return -3;
2293
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;
2299         else
2300                 sgnb_addreq_gtp_teid->gnb_id = hdr->header->gnbid->value;
2301
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);
2318                                                 }
2319                                         }
2320                                 }
2321                         }
2322                 }
2323         }
2324 // --------------------------------------------------
2325 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2326
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;
2335         else
2336                 sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value;
2337
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;
2344                 }else{
2345                         sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0;
2346                 }
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;
2349                 }else{
2350                         sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
2351                 }
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);
2357                 }
2358         }
2359 // --------------------------------------------------
2360 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2361
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;
2370         else
2371                 sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value;
2372
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;
2384                                         }else{
2385                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0;
2386                                         }
2387                                         if(node_2_4->en_dc_resourceconfiguration){
2388                                                 sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_2_4->en_dc_resourceconfiguration->pdcpatsgnb;
2389                                         }else{
2390                                                 sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1;
2391                                         }
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;
2395                                         }else{
2396                                                 sgnb_addreq_for_ue_bearers->priorityLevel = 0;
2397                                         }
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;
2400                                         }else{
2401                                                 sgnb_addreq_for_ue_bearers->gTP_TEID.data = "";
2402                                                 sgnb_addreq_for_ue_bearers->gTP_TEID.len = 1;
2403                                         }
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;
2406                                         }else{
2407                                                 sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1;
2408                                         }
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;
2411                                         }else{
2412                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0;
2413                                         }
2414                                         if(node_2_4->en_dc_resourceconfiguration){
2415                                                 sgnb_addreq_for_ue_bearers->mCGresources = node_2_4->en_dc_resourceconfiguration->mcgresources;
2416                                         }else{
2417                                                 sgnb_addreq_for_ue_bearers->mCGresources = -1;
2418                                         }
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;
2421                                         }else{
2422                                                 sgnb_addreq_for_ue_bearers->transportLayerAddress.data = "";
2423                                                 sgnb_addreq_for_ue_bearers->transportLayerAddress.len = 1;
2424                                         }
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;
2427                                         }else{
2428                                                 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0;
2429                                         }
2430                                         if(node_2_4->en_dc_resourceconfiguration){
2431                                                 sgnb_addreq_for_ue_bearers->sCGresources = node_2_4->en_dc_resourceconfiguration->scgresources;
2432                                         }else{
2433                                                 sgnb_addreq_for_ue_bearers->sCGresources = -1;
2434                                         }
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;
2437                                         }else{
2438                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0;
2439                                         }
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;
2442                                         }else{
2443                                                 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0;
2444                                         }
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;
2447                                         }else{
2448                                                 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1;
2449                                         }
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;
2453                                         }else{
2454                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0;
2455                                         }
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;
2458                                         }else{
2459                                                 sgnb_addreq_for_ue_bearers->qCI = 0;
2460                                         }
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;
2463                                         }else{
2464                                                 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0;
2465                                         }
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;
2468                                         }else{
2469                                                 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0;
2470                                         }
2471                                         rts_fta_process_packet(&cur_packet);
2472                                 }
2473                         }
2474                 }
2475         }
2476 // --------------------------------------------------
2477 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2478
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;
2487         else
2488                 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2489
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;
2495                 }else{
2496                         sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2497                 }
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;
2513                                                                 }else{
2514                                                                         sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0;
2515                                                                 }
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;
2524                                                                                         }else{
2525                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128;
2526                                                                                         }
2527                                                                                         if(node_3_10->rsrp){
2528                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_3_10->rsrp->value;
2529                                                                                         }else{
2530                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128;
2531                                                                                         }
2532                                                                                         if(node_3_10->sinr){
2533                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_3_10->sinr->value;
2534                                                                                         }else{
2535                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128;
2536                                                                                         }
2537                                                                                         rts_fta_process_packet(&cur_packet);
2538                                                                                 }
2539                                                                         }
2540                                                                 }
2541                                                         }
2542                                                 }
2543                                         }
2544                                 }
2545                         }
2546                 }
2547         }
2548 // --------------------------------------------------
2549 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2550
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;
2559         else
2560                 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2561
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;
2567                 }else{
2568                         sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2569                 }
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;
2585                                                                 }else{
2586                                                                         sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0;
2587                                                                 }
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;
2596                                                                                         }else{
2597                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128;
2598                                                                                         }
2599                                                                                         if(node_4_10->rsrp){
2600                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_4_10->rsrp->value;
2601                                                                                         }else{
2602                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128;
2603                                                                                         }
2604                                                                                         if(node_4_10->sinr){
2605                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_4_10->sinr->value;
2606                                                                                         }else{
2607                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128;
2608                                                                                         }
2609                                                                                         rts_fta_process_packet(&cur_packet);
2610                                                                                 }
2611                                                                         }
2612                                                                 }
2613                                                         }
2614                                                 }
2615                                         }
2616                                 }
2617                         }
2618                 }
2619         }
2620 // --------------------------------------------------
2621 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2622
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;
2631         else
2632                 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2633
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;
2639                 }else{
2640                         sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2641                 }
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;
2657                                                                 }else{
2658                                                                         sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0;
2659                                                                 }
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;
2668                                                                                         }else{
2669                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128;
2670                                                                                         }
2671                                                                                         if(node_5_10->rsrp){
2672                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_5_10->rsrp->value;
2673                                                                                         }else{
2674                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128;
2675                                                                                         }
2676                                                                                         if(node_5_10->sinr){
2677                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_5_10->sinr->value;
2678                                                                                         }else{
2679                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128;
2680                                                                                         }
2681                                                                                         rts_fta_process_packet(&cur_packet);
2682                                                                                 }
2683                                                                         }
2684                                                                 }
2685                                                         }
2686                                                 }
2687                                         }
2688                                 }
2689                         }
2690                 }
2691         }
2692 // --------------------------------------------------
2693 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2694
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;
2703         else
2704                 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2705
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;
2711                 }else{
2712                         sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2713                 }
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;
2729                                                                 }else{
2730                                                                         sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0;
2731                                                                 }
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;
2740                                                                                         }else{
2741                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128;
2742                                                                                         }
2743                                                                                         if(node_6_10->rsrp){
2744                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_6_10->rsrp->value;
2745                                                                                         }else{
2746                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128;
2747                                                                                         }
2748                                                                                         if(node_6_10->sinr){
2749                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_6_10->sinr->value;
2750                                                                                         }else{
2751                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128;
2752                                                                                         }
2753                                                                                         rts_fta_process_packet(&cur_packet);
2754                                                                                 }
2755                                                                         }
2756                                                                 }
2757                                                         }
2758                                                 }
2759                                         }
2760                                 }
2761                         }
2762                 }
2763         }
2764 // --------------------------------------------------
2765 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2766
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;
2775         else
2776                 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2777
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;
2783                 }else{
2784                         sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2785                 }
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;
2803                                                                         }else{
2804                                                                                 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0;
2805                                                                         }
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;
2814                                                                                                 }else{
2815                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128;
2816                                                                                                 }
2817                                                                                                 if(node_7_11->rsrp){
2818                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_7_11->rsrp->value;
2819                                                                                                 }else{
2820                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128;
2821                                                                                                 }
2822                                                                                                 if(node_7_11->sinr){
2823                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_7_11->sinr->value;
2824                                                                                                 }else{
2825                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128;
2826                                                                                                 }
2827                                                                                                 rts_fta_process_packet(&cur_packet);
2828                                                                                         }
2829                                                                                 }
2830                                                                         }
2831                                                                 }
2832                                                         }
2833                                                 }
2834                                         }
2835                                 }
2836                         }
2837                 }
2838         }
2839 // --------------------------------------------------
2840 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2841
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;
2850         else
2851                 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
2852
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;
2858                 }else{
2859                         sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2860                 }
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;
2878                                                                         }else{
2879                                                                                 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0;
2880                                                                         }
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;
2889                                                                                                 }else{
2890                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128;
2891                                                                                                 }
2892                                                                                                 if(node_8_11->rsrp){
2893                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_8_11->rsrp->value;
2894                                                                                                 }else{
2895                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128;
2896                                                                                                 }
2897                                                                                                 if(node_8_11->sinr){
2898                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_8_11->sinr->value;
2899                                                                                                 }else{
2900                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128;
2901                                                                                                 }
2902                                                                                                 rts_fta_process_packet(&cur_packet);
2903                                                                                         }
2904                                                                                 }
2905                                                                         }
2906                                                                 }
2907                                                         }
2908                                                 }
2909                                         }
2910                                 }
2911                         }
2912                 }
2913         }
2914 // --------------------------------------------------
2915 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2916
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;
2925         else
2926                 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2927
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;
2933                 }else{
2934                         sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2935                 }
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;
2953                                                                         }else{
2954                                                                                 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0;
2955                                                                         }
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;
2964                                                                                                 }else{
2965                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128;
2966                                                                                                 }
2967                                                                                                 if(node_9_11->rsrp){
2968                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_9_11->rsrp->value;
2969                                                                                                 }else{
2970                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128;
2971                                                                                                 }
2972                                                                                                 if(node_9_11->sinr){
2973                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_9_11->sinr->value;
2974                                                                                                 }else{
2975                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128;
2976                                                                                                 }
2977                                                                                                 rts_fta_process_packet(&cur_packet);
2978                                                                                         }
2979                                                                                 }
2980                                                                         }
2981                                                                 }
2982                                                         }
2983                                                 }
2984                                         }
2985                                 }
2986                         }
2987                 }
2988         }
2989 // --------------------------------------------------
2990 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2991
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;
3000         else
3001                 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
3002
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;
3008                 }else{
3009                         sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
3010                 }
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;
3028                                                                         }else{
3029                                                                                 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0;
3030                                                                         }
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;
3039                                                                                                 }else{
3040                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128;
3041                                                                                                 }
3042                                                                                                 if(node_10_11->rsrp){
3043                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_10_11->rsrp->value;
3044                                                                                                 }else{
3045                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128;
3046                                                                                                 }
3047                                                                                                 if(node_10_11->sinr){
3048                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_10_11->sinr->value;
3049                                                                                                 }else{
3050                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128;
3051                                                                                                 }
3052                                                                                                 rts_fta_process_packet(&cur_packet);
3053                                                                                         }
3054                                                                                 }
3055                                                                         }
3056                                                                 }
3057                                                         }
3058                                                 }
3059                                         }
3060                                 }
3061                         }
3062                 }
3063         }
3064         streaming_protobufs__sg_nbaddition_request__free_unpacked(node_0_0,NULL);
3065         return 0;
3066 }
3067
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;
3077
3078 // --------------------------------------------------
3079 // ---  Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3080
3081         sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values);
3082         cur_packet.schema = 1301;
3083
3084         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3085         if(hdr==NULL) return -1;
3086
3087         node_0_0 = hdr->sgnbmodificationconfirm;
3088         if(node_0_0==NULL) return -2;
3089         if(hdr->header==NULL) return -3;
3090
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;
3096         else
3097                 sgnb_mod_conf->gnb_id = hdr->header->gnbid->value;
3098
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);
3104         }
3105         streaming_protobufs__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL);
3106         return 0;
3107 }
3108
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;
3118
3119 // --------------------------------------------------
3120 // ---  Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3121
3122         sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values);
3123         cur_packet.schema = 1201;
3124
3125         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3126         if(hdr==NULL) return -1;
3127
3128         node_0_0 = hdr->sgnbmodificationrequest;
3129         if(node_0_0==NULL) return -2;
3130         if(hdr->header==NULL) return -3;
3131
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;
3137         else
3138                 sgnb_mod_req->gnb_id = hdr->header->gnbid->value;
3139
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;
3144                 }else{
3145                         sgnb_mod_req->cause_protocol = -1;
3146                 }
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;
3150                 }else{
3151                         sgnb_mod_req->cause_transport = -1;
3152                 }
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;
3155                 }else{
3156                         sgnb_mod_req->failureType = -1;
3157                 }
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;
3160                 }else{
3161                         sgnb_mod_req->cause_radio_network = -1;
3162                 }
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;
3166                 }else{
3167                         sgnb_mod_req->cause_misc = -1;
3168                 }
3169                 rts_fta_process_packet(&cur_packet);
3170         }
3171         streaming_protobufs__sg_nbmodification_request__free_unpacked(node_0_0,NULL);
3172         return 0;
3173 }
3174
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;
3184
3185 // --------------------------------------------------
3186 // ---  Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3187
3188         sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values);
3189         cur_packet.schema = 1701;
3190
3191         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3192         if(hdr==NULL) return -1;
3193
3194         node_0_0 = hdr->sgnbmodificationrequestacknowledge;
3195         if(node_0_0==NULL) return -2;
3196         if(hdr->header==NULL) return -3;
3197
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;
3203         else
3204                 sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value;
3205
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);
3211         }
3212         streaming_protobufs__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL);
3213         return 0;
3214 }
3215
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;
3225
3226 // --------------------------------------------------
3227 // ---  Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3228
3229         sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values);
3230         cur_packet.schema = 1801;
3231
3232         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3233         if(hdr==NULL) return -1;
3234
3235         node_0_0 = hdr->sgnbmodificationrequestreject;
3236         if(node_0_0==NULL) return -2;
3237         if(hdr->header==NULL) return -3;
3238
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;
3244         else
3245                 sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value;
3246
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;
3251                 }else{
3252                         sgnb_mod_req_reject->cause_protocol = -1;
3253                 }
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;
3257                 }else{
3258                         sgnb_mod_req_reject->cause_transport = -1;
3259                 }
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;
3262                 }else{
3263                         sgnb_mod_req_reject->cause_radio_network = -1;
3264                 }
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;
3268                 }else{
3269                         sgnb_mod_req_reject->cause_misc = -1;
3270                 }
3271                 rts_fta_process_packet(&cur_packet);
3272         }
3273         streaming_protobufs__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL);
3274         return 0;
3275 }
3276
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;
3286
3287 // --------------------------------------------------
3288 // ---  Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3289
3290         sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values);
3291         cur_packet.schema = 1901;
3292
3293         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3294         if(hdr==NULL) return -1;
3295
3296         node_0_0 = hdr->sgnbmodificationrequired;
3297         if(node_0_0==NULL) return -2;
3298         if(hdr->header==NULL) return -3;
3299
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;
3305         else
3306                 sgnb_mod_required->gnb_id = hdr->header->gnbid->value;
3307
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;
3312                 }else{
3313                         sgnb_mod_required->cause_protocol = -1;
3314                 }
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;
3318                 }else{
3319                         sgnb_mod_required->cause_transport = -1;
3320                 }
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;
3323                 }else{
3324                         sgnb_mod_required->cause_radio_network = -1;
3325                 }
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;
3329                 }else{
3330                         sgnb_mod_required->cause_misc = -1;
3331                 }
3332                 rts_fta_process_packet(&cur_packet);
3333         }
3334         streaming_protobufs__sg_nbmodification_required__free_unpacked(node_0_0,NULL);
3335         return 0;
3336 }
3337
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;
3348
3349 // --------------------------------------------------
3350 // ---  Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3351
3352         sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values);
3353         cur_packet.schema = 1401;
3354
3355         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3356         if(hdr==NULL) return -1;
3357
3358         node_0_0 = hdr->sgnbmodificationrefuse;
3359         if(node_0_0==NULL) return -2;
3360         if(hdr->header==NULL) return -3;
3361
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;
3367         else
3368                 sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value;
3369
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;
3378                         }else{
3379                                 sgnb_mod_refuse->cause_radio_network = -1;
3380                         }
3381                         if(node_0_2->transport){
3382                                 sgnb_mod_refuse->cause_transport = node_0_2->transport->value;
3383                         }else{
3384                                 sgnb_mod_refuse->cause_transport = -1;
3385                         }
3386                         if(node_0_2->protocol){
3387                                 sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value;
3388                         }else{
3389                                 sgnb_mod_refuse->cause_protocol = -1;
3390                         }
3391                         if(node_0_2->misc){
3392                                 sgnb_mod_refuse->cause_misc = node_0_2->misc->value;
3393                         }else{
3394                                 sgnb_mod_refuse->cause_misc = -1;
3395                         }
3396                         rts_fta_process_packet(&cur_packet);
3397                 }
3398         }
3399         streaming_protobufs__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL);
3400         return 0;
3401 }
3402
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;
3414         gs_uint32_t i_0_3;
3415         StreamingProtobufs__ERABsSubjectToStatusTransferItem *node_0_4 = NULL;
3416         StreamingProtobufs__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL;
3417         gs_uint32_t i_0_5;
3418         StreamingProtobufs__COUNTvaluePDCPSNlength18 *node_0_6 = NULL;
3419
3420 // --------------------------------------------------
3421 // ---  Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json
3422
3423         sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values);
3424         cur_packet.schema = 1601;
3425
3426         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3427         if(hdr==NULL) return -1;
3428
3429         node_0_0 = hdr->snstatustransfer;
3430         if(node_0_0==NULL) return -2;
3431         if(hdr->header==NULL) return -3;
3432
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;
3438         else
3439                 sn_status_transfer->gnb_id = hdr->header->gnbid->value;
3440
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;
3446                 }else{
3447                         sn_status_transfer->id_SgNB_UE_X2AP_ID = 0;
3448                 }
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);
3462                                                 }
3463                                         }
3464                                 }
3465                         }
3466                 }
3467         }
3468         streaming_protobufs__snstatus_transfer__free_unpacked(node_0_0,NULL);
3469         return 0;
3470 }
3471
3472
3473 int init_cur_packet(){
3474         cur_packet.ptype=PTYPE_STRUCT;
3475         cur_packet.record.packed.values = (void *)(malloc(10000));
3476
3477         if(cur_packet.record.packed.values==NULL){
3478                 print_error("could not malloc a data block for cur_packet in init_cur_packet.");
3479                 exit(10);
3480         }
3481         return 0;
3482 }
3483 //----------------  END Specialized proto parsing -----------
3484
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");
3488         exit(9);
3489     }
3490 }
3491
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){
3494     gs_uint32_t used=0;
3495     gs_uint32_t cur;
3496     fd_set socket_rset;
3497     fd_set socket_eset;
3498     struct timeval socket_timeout;
3499     int retval;
3500     
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;
3508     
3509     if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) {
3510         if (retval==0) {
3511             // caught a timeout
3512             return -1;
3513         }
3514         return -2;
3515     }
3516     
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");
3520             return -2;
3521         }
3522         used+=cur;
3523     }
3524         return 0;
3525 }
3526
3527 //      query gshub and use that info to open a socket
3528 static void init_socket() {
3529         endpoint gshub;
3530         endpoint srcinfo;
3531         struct sockaddr_in server;
3532         
3533         if (get_hub(&gshub)!=0) {
3534                 print_error("ERROR:could not find gshub for data source");
3535                 exit(0);
3536         }
3537     
3538         if (get_streamsource(gshub,name,&srcinfo,1) !=0) {
3539                 print_error("ERROR:could not find data source for stream\n");
3540                 exit(0);
3541         }
3542     
3543         socket_desc = socket(AF_INET , SOCK_STREAM , 0);
3544     if (socket_desc == -1)
3545     {
3546         print_error("ERROR:could not create socket for data stream");
3547                 exit(0);
3548     }
3549         server.sin_addr.s_addr = srcinfo.ip;
3550     server.sin_family = AF_INET;
3551     server.sin_port = srcinfo.port;
3552     
3553         if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
3554     {
3555                 print_error("ERROR: could not open connection to data source");
3556                 exit(0);
3557         }
3558     
3559 }
3560
3561 //      proceed to the next file
3562 static void next_file() {
3563         struct stat s;
3564         if (verbose) {
3565                 fprintf(stderr,"Opening %s\n",name);
3566         }
3567         while (lstat(name,&s)!=0) {
3568                 if (errno!=ENOENT) {
3569                         print_error("dproto::lstat unexpected return value");
3570                         exit(10);
3571                 }
3572                 dproto_replay_check_messages();
3573                 usleep(10000);
3574         }
3575         if  (pd!=0) {
3576                 fclose(pd);
3577                 }
3578     if ((pd=fopen(name,"r"))==0) {
3579         print_error("dproto::open failed ");
3580         exit(10);
3581     }
3582         if (singlefile==0) {
3583                 unlink(name);
3584         }
3585 }
3586
3587 //      Perform initialization when reading from a file
3588 static gs_retval_t dproto_replay_init(gs_sp_t device) {
3589     gs_sp_t  verbosetmp;
3590     gs_sp_t  delaytmp;
3591     gs_sp_t  gshubtmp;
3592     gs_sp_t  tempdel;
3593     gs_sp_t  singlefiletmp;
3594     
3595     if ((name=get_iface_properties(device,"filename"))==0) {
3596                 print_error("dproto_init::No protobuf \"Filename\" defined");
3597                 exit(0);
3598         }
3599     
3600     if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) {
3601         if (strncmp(verbosetmp,"TRUE",4)==0) {
3602             verbose=1;
3603             fprintf(stderr,"VERBOSE ENABLED\n");
3604         } else {
3605             fprintf(stderr,"VERBOSE DISABLED\n");
3606         }
3607     }
3608     if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) {
3609         if (strncmp(singlefiletmp,"TRUE",4)==0) {
3610             singlefile=1;
3611             if (verbose)
3612                 fprintf(stderr,"SINGLEFILE ENABLED\n");
3613         } else {
3614             if (verbose)
3615                 fprintf(stderr,"SINGLEFILE DISABLED\n");
3616         }
3617     }
3618     
3619     if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) {
3620         if (verbose) {
3621             fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay")));
3622         }
3623         startupdelay=atoi(get_iface_properties(device,"startupdelay"));
3624     }
3625     if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) {
3626         if (verbose) {
3627             fprintf(stderr,"GDAT format using gshub\n");
3628         }
3629         gshub=1;
3630     }
3631         init_cur_packet();
3632     
3633     return 0;
3634 }
3635
3636 //      Read one message from a socket
3637 static gs_retval_t dproto_read_socket()
3638 {
3639         gs_uint32_t i;
3640         gs_uint32_t p;
3641         gs_uint32_t x;
3642         gs_uint32_t pkg_len;
3643         gs_int32_t r;
3644         gs_retval_t ret=0;
3645         gs_uint32_t done;
3646         char *pkg_len_s;
3647         char *timestamp_s;
3648     
3649         if((ret=gs_read_buffer(line,28))<0) { return ret;}
3650         pkg_len_s = line+4;
3651         pkg_len = atoi(pkg_len_s);
3652
3653         if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;}
3654
3655         cur_packet.systemTime=time(0);
3656         ret = process_buffer(line, pkg_len);
3657         if(ret < 0){
3658             fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3659         }
3660
3661     return 0;
3662 }
3663     
3664 // read one message from a file
3665 static void dproto_read_tuple(){
3666     gs_uint32_t retlen=0;
3667     gs_uint32_t done=0;
3668     gs_uint32_t pkg_len=0;
3669     gs_uint32_t eof=0;
3670         char *pkg_len_s;
3671         char *timestamp_s;
3672         gs_retval_t ret;
3673
3674     if (pd==0) next_file();
3675
3676         retlen = fread(line, sizeof(char), 28, pd);
3677         if(retlen==0){
3678                 eof=1;
3679         }else{
3680                 pkg_len_s = line+4;
3681                 timestamp_s = line+12;
3682                 pkg_len = atoi(pkg_len_s);
3683
3684                 if(pkg_len >= MAXLINE){
3685 // TODO be more graceful here, but a large pkg_len likely indicates
3686 //              a garbaged file.
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);
3689                         exit(10);
3690                 }
3691
3692                 retlen = fread(line, sizeof(char), pkg_len, pd);
3693                 if(retlen<pkg_len){
3694                         print_error("Error in dproto_read_tuple, line too short.");
3695                         fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
3696                         eof=1;
3697                 }
3698
3699                 if(eof==0){
3700                         cur_packet.systemTime=time(0);
3701                         ret = process_buffer(line, pkg_len);
3702                         if(ret < 0){
3703                 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3704                 }
3705                 }
3706         }
3707         if(eof){
3708             if (singlefile==1) {
3709                 if(verbose) {
3710                 fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
3711                 }
3712                 rts_fta_done();
3713                 if (verbose) {
3714                 fprintf(stderr,"RTS SAYS BYe\n");
3715                 }
3716                 while(1==1) sleep(1);
3717         } else {
3718                 next_file();
3719         }
3720         }
3721 }
3722     
3723 //      Main loop for processing records from a file or socket    
3724 static gs_retval_t dproto_process_file(){
3725     unsigned cnt=0;
3726     static unsigned totalcnt=0;
3727
3728     for(cnt=0;cnt<5/*0000*/;cnt++) {
3729         if (gshub!=0) {
3730             gs_retval_t retval;
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
3735                 if (verbose)
3736                     fprintf(stderr,"Done processing waiting for things to shut down\n");
3737                 rts_fta_done();
3738                 // now just service message queue until we get killed or loose connectivity
3739                 while (0==0) {
3740                     fta_start_service(0); // service all waiting messages
3741                     usleep(1000); // sleep a millisecond
3742                 }
3743             }
3744         } else {
3745             dproto_read_tuple();
3746         }
3747     }
3748     totalcnt=totalcnt+cnt;
3749     if (verbose) {
3750         fprintf(stderr,"Processed %u messages from %s\n",totalcnt, name);
3751     }
3752     return 0;
3753 }
3754     
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[]) {
3757     gs_uint32_t cont;
3758     endpoint mygshub;
3759         
3760     dproto_replay_init(device); // will call init_cur_packet
3761     this_device = strdup(device); // save for error messages.
3762         
3763     /* initalize host_lib */
3764     if (verbose) {
3765         fprintf(stderr,"Init LFTAs for %s\n",device);
3766     }
3767         
3768     if (hostlib_init(LFTA,0,devicenum,mapcnt,map)<0) {
3769         fprintf(stderr,"%s::error:could not initiate host lib for clearinghouse\n", device);
3770         exit(7);
3771     }
3772
3773 //--------------------------------------------
3774 //----  Generated dispatch code 
3775         if(strcmp(device,"CONRELEASE")==0){
3776                 process_buffer = &process_buffer_CONRELEASE;
3777         }
3778         if(strcmp(device,"RATDATAUSAGE")==0){
3779                 process_buffer = &process_buffer_RATDATAUSAGE;
3780         }
3781         if(strcmp(device,"RECONCOMPLETE")==0){
3782                 process_buffer = &process_buffer_RECONCOMPLETE;
3783         }
3784         if(strcmp(device,"RELCONF")==0){
3785                 process_buffer = &process_buffer_RELCONF;
3786         }
3787         if(strcmp(device,"RELREQ")==0){
3788                 process_buffer = &process_buffer_RELREQ;
3789         }
3790         if(strcmp(device,"RELREQACK")==0){
3791                 process_buffer = &process_buffer_RELREQACK;
3792         }
3793         if(strcmp(device,"SGNBRELEASERQD")==0){
3794                 process_buffer = &process_buffer_SGNBRELEASERQD;
3795         }
3796         if(strcmp(device,"RRCXFER")==0){
3797                 process_buffer = &process_buffer_RRCXFER;
3798         }
3799         if(strcmp(device,"ADDREQREJECT")==0){
3800                 process_buffer = &process_buffer_ADDREQREJECT;
3801         }
3802         if(strcmp(device,"SGNB_ADDITION_REQ_ACK")==0){
3803                 process_buffer = &process_buffer_SGNB_ADDITION_REQ_ACK;
3804         }
3805         if(strcmp(device,"SGNB_ADDITION_REQ")==0){
3806                 process_buffer = &process_buffer_SGNB_ADDITION_REQ;
3807         }
3808         if(strcmp(device,"SGNBMODCONF")==0){
3809                 process_buffer = &process_buffer_SGNBMODCONF;
3810         }
3811         if(strcmp(device,"SGNBMODREQ")==0){
3812                 process_buffer = &process_buffer_SGNBMODREQ;
3813         }
3814         if(strcmp(device,"SGNBMODREQACK")==0){
3815                 process_buffer = &process_buffer_SGNBMODREQACK;
3816         }
3817         if(strcmp(device,"SGNBMODREQREJECT")==0){
3818                 process_buffer = &process_buffer_SGNBMODREQREJECT;
3819         }
3820         if(strcmp(device,"SGNBMODREQUIRED")==0){
3821                 process_buffer = &process_buffer_SGNBMODREQUIRED;
3822         }
3823         if(strcmp(device,"SGNBMODREFUSE")==0){
3824                 process_buffer = &process_buffer_SGNBMODREFUSE;
3825         }
3826         if(strcmp(device,"SNSTATUSXFER")==0){
3827                 process_buffer = &process_buffer_SNSTATUSXFER;
3828         }
3829         if(process_buffer == NULL){
3830                 fprintf(stderr,"Error, interface %s not recognized\n",device);
3831                 exit(8);
3832         }
3833 //--------------------------------------------
3834
3835         
3836     fta_init(device); /*xxx probably should get error code back put Ted doesn't give me one*/
3837         
3838     cont=startupdelay+time(0);
3839         
3840     if (verbose) { fprintf(stderr,"Start startup delay"); }
3841         
3842     while (cont>time(NULL)) {
3843         if (fta_start_service(0)<0) {
3844             fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3845             exit(9);
3846         }
3847         usleep(1000); /* sleep for one millisecond */
3848     }
3849         
3850     if (verbose) { fprintf(stderr,"... Done\n"); }
3851         
3852     // open the connection to the data source
3853     if (gshub!=0) { init_socket();}
3854         
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");
3858         exit(0);
3859     }
3860     while(get_startprocessing(mygshub,get_instance_name(),0)!=0) {
3861         usleep(100);
3862         if (fta_start_service(0)<0) {
3863             fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3864             exit(9);
3865         }
3866     }
3867         
3868    /* now we enter an endless loop to process data */
3869     if (verbose) {
3870         fprintf(stderr,"Start processing %s\n",device);
3871     }
3872         
3873     while (1==1) {
3874         if (dproto_process_file()<0) {
3875             fprintf(stderr,"%s::error:in processing packets\n", device);
3876             exit(8);
3877         }
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);
3881             exit(9);
3882         }
3883     }
3884     return 0;
3885 }
3886