Bump up mc-core image release tag
[ric-app/mc.git] / mc-core / mc / local_datasource / rts_proto.c.save
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 <poll.h>
33 #include "errno.h"
34
35 #include "gsconfig.h"
36 #include "gshub.h"
37 #include "gstypes.h"
38 #include "lapp.h"
39 #include "fta.h"
40 #include "stdio.h"
41 #include "stdlib.h"
42 #include "packet.h"
43 #include "schemaparser.h"
44 #include "lfta/rts.h"
45
46 void rts_fta_process_packet(struct packet * p);
47 void rts_fta_done();
48 void fta_init(gs_sp_t device);
49
50 gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; // set at initialization
51
52 #define MAXLINE 1000000
53
54 static int fd=-1;
55 struct pollfd pfd;
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 fifo=0;
62 static gs_uint32_t gshub=0;
63 static int socket_desc=0;
64
65 static gs_uint8_t line[MAXLINE];
66 static gs_uint32_t lineend=0;
67 static unsigned long long timestamp; // extract from input header
68
69 //----------------  Specialized proto parsing -----------
70 #include "x2ap_streaming.pb-c.h"
71 #include "ue_context_release.pb-c.h"
72 #include "lfta/local/dc_release.h"
73 #include "secondary_rat_data_usage_report.pb-c.h"
74 #include "lfta/local/rat_data_usage.h"
75 #include "sgnb_reconfiguration_complete.pb-c.h"
76 #include "lfta/local/reconfig_all.h"
77 #include "lfta/local/reconfig_success.h"
78 #include "lfta/local/reconfig_reject.h"
79 #include "sgnb_release_confirm.pb-c.h"
80 #include "lfta/local/sgnb_release_confirm_from_menb_erabs.h"
81 #include "lfta/local/sgnb_release_confirm_from_menb.h"
82 #include "sgnb_release_request.pb-c.h"
83 #include "lfta/local/release_req.h"
84 #include "sgnb_release_request_acknowledge.pb-c.h"
85 #include "lfta/local/release_req_ack.h"
86 #include "sgnb_release_required.pb-c.h"
87 #include "lfta/local/SgNB_release_rqd.h"
88 #include "rrctransfer.pb-c.h"
89 #include "lfta/local/serv_nr_cell.h"
90 #include "lfta/local/nr_neighbor.h"
91 #include "lfta/local/serv_cell_beam_csi.h"
92 #include "lfta/local/neighbor_beam_csi.h"
93 #include "lfta/local/serv_cell_beam_ssb.h"
94 #include "lfta/local/neighbor_beam_ssb.h"
95 #include "sgnb_addition_request_reject.pb-c.h"
96 #include "lfta/local/sgnb_add_req_reject.h"
97 #include "sgnb_addition_request_acknowledge.pb-c.h"
98 #include "lfta/local/eRABs_notadmitted_for_ue.h"
99 #include "lfta/local/add_req_ack_cellid.h"
100 #include "lfta/local/eRABs_acked_for_admit_for_ue.h"
101 #include "lfta/local/SgNB_ack_for_ue_NRfreqs.h"
102 #include "lfta/local/SgNB_ack_for_add_mod_for_ue.h"
103 #include "lfta/local/SgNB_ack_for_ue_measurements.h"
104 #include "lfta/local/SgNB_ack_for_ue_beam_csi.h"
105 #include "lfta/local/SgNB_ack_for_ue_beam_ssb.h"
106 #include "sgnb_addition_request.pb-c.h"
107 #include "lfta/local/sgnb_addreq_gtp_teid.h"
108 #include "lfta/local/sgnb_addreq_for_ue.h"
109 #include "lfta/local/sgnb_addreq_for_ue_bearers.h"
110 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_ssb.h"
111 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_csi_rs.h"
112 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_ssb.h"
113 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_csi_rs.h"
114 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_ssb.h"
115 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_csi_rs.h"
116 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_ssb.h"
117 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_csi_rs.h"
118 #include "sgnb_modification_confirm.pb-c.h"
119 #include "lfta/local/sgnb_mod_conf.h"
120 #include "sgnb_modification_request.pb-c.h"
121 #include "lfta/local/sgnb_mod_req.h"
122 #include "sgnb_modification_request_acknowledge.pb-c.h"
123 #include "lfta/local/sgnb_mod_req_ack.h"
124 #include "sgnb_modification_request_reject.pb-c.h"
125 #include "lfta/local/sgnb_mod_req_reject.h"
126 #include "sgnb_modification_required.pb-c.h"
127 #include "lfta/local/sgnb_mod_required.h"
128 #include "sgnb_modification_refuse.pb-c.h"
129 #include "lfta/local/sgnb_mod_refuse.h"
130 #include "sn_status_transfer.pb-c.h"
131 #include "lfta/local/sn_status_transfer.h"
132 gs_uint32_t process_buffer_CONRELEASE(gs_uint8_t * buffer, gs_uint32_t buflen){
133         char *empty_string = "";
134 unsigned long long int ts_lo, ts_hi;
135         StreamingProtobufs__X2APStreaming *hdr = NULL;
136 // ------------------------------------------
137 // ---  Variables for .proto ue_context_release.json, path context_release.json
138         struct _dc_release *dc_release = NULL;
139         StreamingProtobufs__UEContextRelease *node_0_0 = NULL;
140
141 // --------------------------------------------------
142 // ---  Specialized processing for .proto ue_context_release.json, path context_release.json
143
144         dc_release = (struct _dc_release *)(cur_packet.record.packed.values);
145         cur_packet.schema = 201;
146
147         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
148         if(hdr==NULL) return -1;
149
150         node_0_0 = hdr->uecontextrelease;
151         if(node_0_0==NULL) return -2;
152         if(hdr->header==NULL) return -3;
153
154         ts_lo = hdr->header->timestamp & 0xffffffff;
155         ts_hi = hdr->header->timestamp >> 32;
156         dc_release->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
157         if(hdr->header->gnbid==NULL)
158                 dc_release->gnb_id = empty_string;
159         else
160                 dc_release->gnb_id = hdr->header->gnbid->value;
161
162         if(node_0_0->id_old_enb_ue_x2ap_id_extension){
163                 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = node_0_0->id_old_enb_ue_x2ap_id_extension->value;
164         }else{
165                 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0;
166         }
167         dc_release->id_New_eNB_UE_X2AP_ID = node_0_0->id_new_enb_ue_x2ap_id;
168         if(node_0_0->id_sgnb_ue_x2ap_id){
169                 dc_release->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
170         }else{
171                 dc_release->id_SgNB_UE_X2AP_ID = 0;
172         }
173         if(node_0_0->id_new_enb_ue_x2ap_id_extension){
174                 dc_release->id_New_eNB_UE_X2AP_ID_Extension = node_0_0->id_new_enb_ue_x2ap_id_extension->value;
175         }else{
176                 dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0;
177         }
178         dc_release->id_Old_eNB_UE_X2AP_ID = node_0_0->id_old_enb_ue_x2ap_id;
179         rts_fta_process_packet(&cur_packet);
180         streaming_protobufs__uecontext_release__free_unpacked(node_0_0,NULL);
181         return 0;
182 }
183
184 gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){
185         char *empty_string = "";
186 unsigned long long int ts_lo, ts_hi;
187         StreamingProtobufs__X2APStreaming *hdr = NULL;
188 // ------------------------------------------
189 // ---  Variables for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
190         struct _rat_data_usage *rat_data_usage = NULL;
191         StreamingProtobufs__SecondaryRATDataUsageReport *node_0_0 = NULL;
192         StreamingProtobufs__SecondaryRATDataUsageReportIEs *node_0_1 = NULL;
193         StreamingProtobufs__SecondaryRATUsageReportList *node_0_2 = NULL;
194         StreamingProtobufs__SecondaryRATUsageReportItemIEs *node_0_3 = NULL;
195         gs_uint32_t i_0_3;
196         StreamingProtobufs__SecondaryRATUsageReportItem *node_0_4 = NULL;
197         StreamingProtobufs__ERABUsageReportList *node_0_5 = NULL;
198         StreamingProtobufs__ERABUsageReportItemIEs *node_0_6 = NULL;
199         gs_uint32_t i_0_6;
200         StreamingProtobufs__ERABUsageReportItem *node_0_7 = NULL;
201
202 // --------------------------------------------------
203 // ---  Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
204
205         rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values);
206         cur_packet.schema = 1501;
207
208         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
209         if(hdr==NULL) return -1;
210
211         node_0_0 = hdr->secondaryratdatausagereport;
212         if(node_0_0==NULL) return -2;
213         if(hdr->header==NULL) return -3;
214
215         ts_lo = hdr->header->timestamp & 0xffffffff;
216         ts_hi = hdr->header->timestamp >> 32;
217         rat_data_usage->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
218         if(hdr->header->gnbid==NULL)
219                 rat_data_usage->gnb_id = empty_string;
220         else
221                 rat_data_usage->gnb_id = hdr->header->gnbid->value;
222
223         node_0_1 = node_0_0->protocolies;
224         if(node_0_0->protocolies){
225                 rat_data_usage->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
226                 rat_data_usage->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
227                 if(node_0_1->id_menb_ue_x2ap_id_extension){
228                         rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
229                 }else{
230                         rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0;
231                 }
232                 node_0_2 = node_0_1->id_secondaryratusagereportlist;
233                 if(node_0_1->id_secondaryratusagereportlist){
234                         for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
235                                 node_0_3 = node_0_2->items[i_0_3];
236                                 node_0_4 = node_0_3->id_secondaryratusagereport_item;
237                                 if(node_0_3->id_secondaryratusagereport_item){
238                                         rat_data_usage->e_RAB_ID = node_0_4->e_rab_id;
239                                         rat_data_usage->secondaryRATType = node_0_4->secondaryrattype;
240                                         node_0_5 = node_0_4->e_rabusagereportlist;
241                                         if(node_0_4->e_rabusagereportlist){
242                                                 for(i_0_6=0;i_0_6<node_0_5->n_items; i_0_6++){
243                                                         node_0_6 = node_0_5->items[i_0_6];
244                                                         node_0_7 = node_0_6->id_e_rabusagereport_item;
245                                                         if(node_0_6->id_e_rabusagereport_item){
246                                                                 rat_data_usage->startTimeStamp = node_0_7->starttimestamp;
247                                                                 rat_data_usage->endTimeStamp = node_0_7->endtimestamp;
248                                                                 rat_data_usage->usageCountDL = node_0_7->usagecountdl;
249                                                                 rts_fta_process_packet(&cur_packet);
250                                                         }
251                                                 }
252                                         }
253                                 }
254                         }
255                 }
256         }
257         streaming_protobufs__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL);
258         return 0;
259 }
260
261 gs_uint32_t process_buffer_RECONCOMPLETE(gs_uint8_t * buffer, gs_uint32_t buflen){
262         char *empty_string = "";
263 unsigned long long int ts_lo, ts_hi;
264         StreamingProtobufs__X2APStreaming *hdr = NULL;
265 // ------------------------------------------
266 // ---  Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
267         struct _reconfig_all *reconfig_all = NULL;
268         StreamingProtobufs__SgNBReconfigurationComplete *node_0_0 = NULL;
269 // ------------------------------------------
270 // ---  Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
271         struct _reconfig_success *reconfig_success = NULL;
272         StreamingProtobufs__SgNBReconfigurationComplete *node_1_0 = NULL;
273         StreamingProtobufs__ResponseInformationSgNBReconfComp *node_1_1 = NULL;
274         StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_1_2 = NULL;
275 // ------------------------------------------
276 // ---  Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
277         struct _reconfig_reject *reconfig_reject = NULL;
278         StreamingProtobufs__SgNBReconfigurationComplete *node_2_0 = NULL;
279         StreamingProtobufs__ResponseInformationSgNBReconfComp *node_2_1 = NULL;
280         StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_2_2 = NULL;
281
282 // --------------------------------------------------
283 // ---  Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
284
285         reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values);
286         cur_packet.schema = 103;
287
288         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
289         if(hdr==NULL) return -1;
290
291         node_0_0 = hdr->sgnbreconfigurationcomplete;
292         if(node_0_0==NULL) return -2;
293         if(hdr->header==NULL) return -3;
294
295         ts_lo = hdr->header->timestamp & 0xffffffff;
296         ts_hi = hdr->header->timestamp >> 32;
297         reconfig_all->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
298         if(hdr->header->gnbid==NULL)
299                 reconfig_all->gnb_id = empty_string;
300         else
301                 reconfig_all->gnb_id = hdr->header->gnbid->value;
302
303         reconfig_all->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
304         reconfig_all->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
305         if(node_0_0->id_menb_ue_x2ap_id_extension){
306                 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
307         }else{
308                 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0;
309         }
310         rts_fta_process_packet(&cur_packet);
311 // --------------------------------------------------
312 // ---  Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
313
314         reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values);
315         cur_packet.schema = 101;
316         node_1_0 = node_0_0;
317         ts_lo = hdr->header->timestamp & 0xffffffff;
318         ts_hi = hdr->header->timestamp >> 32;
319         reconfig_success->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
320         if(hdr->header->gnbid==NULL)
321                 reconfig_success->gnb_id = empty_string;
322         else
323                 reconfig_success->gnb_id = hdr->header->gnbid->value;
324
325         reconfig_success->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
326         reconfig_success->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
327         if(node_1_0->id_menb_ue_x2ap_id_extension){
328                 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
329         }else{
330                 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0;
331         }
332         node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp;
333         if(!(node_1_0->id_responseinformationsgnbreconfcomp)){
334                 rts_fta_process_packet(&cur_packet);
335         }else{
336                 node_1_2 = node_1_1->reject_by_menb_sgnbreconfcomp;
337                 if(!(node_1_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP)){
338                         rts_fta_process_packet(&cur_packet);
339                 }else{
340                         rts_fta_process_packet(&cur_packet);
341                 }
342         }
343 // --------------------------------------------------
344 // ---  Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
345
346         reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values);
347         cur_packet.schema = 102;
348         node_2_0 = node_1_0;
349         ts_lo = hdr->header->timestamp & 0xffffffff;
350         ts_hi = hdr->header->timestamp >> 32;
351         reconfig_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
352         if(hdr->header->gnbid==NULL)
353                 reconfig_reject->gnb_id = empty_string;
354         else
355                 reconfig_reject->gnb_id = hdr->header->gnbid->value;
356
357         reconfig_reject->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
358         reconfig_reject->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
359         if(node_2_0->id_menb_ue_x2ap_id_extension){
360                 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
361         }else{
362                 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0;
363         }
364         node_2_1 = node_2_0->id_responseinformationsgnbreconfcomp;
365         if(node_2_0->id_responseinformationsgnbreconfcomp){
366                 node_2_2 = node_2_1->reject_by_menb_sgnbreconfcomp;
367                 if(node_2_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP){
368                         if(node_2_2->cause && node_2_2->cause->radionetwork){
369                                 reconfig_reject->cause_radio_network = node_2_2->cause->radionetwork->value;
370                         }else{
371                                 reconfig_reject->cause_radio_network = -1;
372                         }
373                         if(node_2_2->cause && node_2_2->cause->transport){
374                                 reconfig_reject->cause_transport = node_2_2->cause->transport->value;
375                         }else{
376                                 reconfig_reject->cause_transport = -1;
377                         }
378                         if(node_2_2->cause && node_2_2->cause->protocol){
379                                 reconfig_reject->cause_protocol = node_2_2->cause->protocol->value;
380                         }else{
381                                 reconfig_reject->cause_protocol = -1;
382                         }
383                         if(node_2_2->cause && node_2_2->cause->misc){
384                                 reconfig_reject->cause_misc = node_2_2->cause->misc->value;
385                         }else{
386                                 reconfig_reject->cause_misc = -1;
387                         }
388                         rts_fta_process_packet(&cur_packet);
389                 }
390         }
391         streaming_protobufs__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL);
392         return 0;
393 }
394
395 gs_uint32_t process_buffer_RELCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
396         char *empty_string = "";
397 unsigned long long int ts_lo, ts_hi;
398         StreamingProtobufs__X2APStreaming *hdr = NULL;
399 // ------------------------------------------
400 // ---  Variables for .proto sgnb_release_confirm.json, path release_confirm.json
401         struct _sgnb_release_confirm_from_menb_erabs *sgnb_release_confirm_from_menb_erabs = NULL;
402         StreamingProtobufs__SgNBReleaseConfirm *node_0_0 = NULL;
403         StreamingProtobufs__SgNBReleaseConfirmIEs *node_0_1 = NULL;
404         StreamingProtobufs__ERABsToBeReleasedSgNBRelConfList *node_0_2 = NULL;
405         StreamingProtobufs__ERABsToBeReleasedSgNBRelConfItem *node_0_3 = NULL;
406         gs_uint32_t i_0_3;
407         StreamingProtobufs__ERABsToBeReleasedSgNBRelConfSgNBPDCPpresent *node_0_4 = NULL;
408         StreamingProtobufs__GTPtunnelEndpoint *node_0_5 = NULL;
409 // ------------------------------------------
410 // ---  Variables for .proto sgnb_release_confirm.json, path release_confirm.json
411         struct _sgnb_release_confirm_from_menb *sgnb_release_confirm_from_menb = NULL;
412         StreamingProtobufs__SgNBReleaseConfirm *node_1_0 = NULL;
413         StreamingProtobufs__SgNBReleaseConfirmIEs *node_1_1 = NULL;
414
415 // --------------------------------------------------
416 // ---  Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
417
418         sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values);
419         cur_packet.schema = 1101;
420
421         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
422         if(hdr==NULL) return -1;
423
424         node_0_0 = hdr->sgnbreleaseconfirm;
425         if(node_0_0==NULL) return -2;
426         if(hdr->header==NULL) return -3;
427
428         ts_lo = hdr->header->timestamp & 0xffffffff;
429         ts_hi = hdr->header->timestamp >> 32;
430         sgnb_release_confirm_from_menb_erabs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
431         if(hdr->header->gnbid==NULL)
432                 sgnb_release_confirm_from_menb_erabs->gnb_id = empty_string;
433         else
434                 sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value;
435
436         node_0_1 = node_0_0->protocolies;
437         if(node_0_0->protocolies){
438                 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
439                 sgnb_release_confirm_from_menb_erabs->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
440                 if(node_0_1->id_menb_ue_x2ap_id_extension){
441                         sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
442                 }else{
443                         sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0;
444                 }
445                 node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelconflist;
446                 if(node_0_1->id_e_rabs_tobereleased_sgnbrelconflist){
447                         for(i_0_3=0;i_0_3<node_0_2->n_id_e_rabs_tobereleased_sgnbrelconf_item; i_0_3++){
448                                 node_0_3 = node_0_2->id_e_rabs_tobereleased_sgnbrelconf_item[i_0_3];
449                                 if(node_0_3->en_dc_resourceconfiguration){
450                                         sgnb_release_confirm_from_menb_erabs->sCGresources = node_0_3->en_dc_resourceconfiguration->scgresources;
451                                 }else{
452                                         sgnb_release_confirm_from_menb_erabs->sCGresources = -1;
453                                 }
454                                 sgnb_release_confirm_from_menb_erabs->e_RAB_ID = node_0_3->e_rab_id;
455                                 if(node_0_3->en_dc_resourceconfiguration){
456                                         sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = node_0_3->en_dc_resourceconfiguration->pdcpatsgnb;
457                                 }else{
458                                         sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1;
459                                 }
460                                 if(node_0_3->en_dc_resourceconfiguration){
461                                         sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources;
462                                 }else{
463                                         sgnb_release_confirm_from_menb_erabs->mCGresources = -1;
464                                 }
465                                 node_0_4 = node_0_3->sgnbpdcppresent;
466                                 if(node_0_3->sgnbpdcppresent){
467                                         node_0_5 = node_0_4->dl_gtptunnelendpoint;
468                                         if(node_0_4->dl_gtptunnelendpoint){
469                                                 sgnb_release_confirm_from_menb_erabs->gTP_TEID = node_0_5->gtp_teid;
470                                                 sgnb_release_confirm_from_menb_erabs->transportLayerAddress = node_0_5->transportlayeraddress;
471                                                 rts_fta_process_packet(&cur_packet);
472                                         }
473                                 }
474                         }
475                 }
476         }
477 // --------------------------------------------------
478 // ---  Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
479
480         sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values);
481         cur_packet.schema = 1102;
482         node_1_0 = node_0_0;
483         ts_lo = hdr->header->timestamp & 0xffffffff;
484         ts_hi = hdr->header->timestamp >> 32;
485         sgnb_release_confirm_from_menb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
486         if(hdr->header->gnbid==NULL)
487                 sgnb_release_confirm_from_menb->gnb_id = empty_string;
488         else
489                 sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value;
490
491         node_1_1 = node_1_0->protocolies;
492         if(node_1_0->protocolies){
493                 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
494                 sgnb_release_confirm_from_menb->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
495                 if(node_1_1->id_menb_ue_x2ap_id_extension){
496                         sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
497                 }else{
498                         sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0;
499                 }
500                 rts_fta_process_packet(&cur_packet);
501         }
502         streaming_protobufs__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL);
503         return 0;
504 }
505
506 gs_uint32_t process_buffer_RELREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
507         char *empty_string = "";
508 unsigned long long int ts_lo, ts_hi;
509         StreamingProtobufs__X2APStreaming *hdr = NULL;
510 // ------------------------------------------
511 // ---  Variables for .proto sgnb_release_request.json, path release_req.json
512         struct _release_req *release_req = NULL;
513         StreamingProtobufs__SgNBReleaseRequest *node_0_0 = NULL;
514         StreamingProtobufs__SgNBReleaseRequestIEs *node_0_1 = NULL;
515
516 // --------------------------------------------------
517 // ---  Specialized processing for .proto sgnb_release_request.json, path release_req.json
518
519         release_req = (struct _release_req *)(cur_packet.record.packed.values);
520         cur_packet.schema = 801;
521
522         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
523         if(hdr==NULL) return -1;
524
525         node_0_0 = hdr->sgnbreleaserequest;
526         if(node_0_0==NULL) return -2;
527         if(hdr->header==NULL) return -3;
528
529         ts_lo = hdr->header->timestamp & 0xffffffff;
530         ts_hi = hdr->header->timestamp >> 32;
531         release_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
532         if(hdr->header->gnbid==NULL)
533                 release_req->gnb_id = empty_string;
534         else
535                 release_req->gnb_id = hdr->header->gnbid->value;
536
537         node_0_1 = node_0_0->protocolies;
538         if(node_0_0->protocolies){
539                 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
540                         release_req->cause_protocol = node_0_1->id_cause->protocol->value;
541                 }else{
542                         release_req->cause_protocol = -1;
543                 }
544                 release_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
545                 if(node_0_1->id_cause && node_0_1->id_cause->transport){
546                         release_req->cause_transport = node_0_1->id_cause->transport->value;
547                 }else{
548                         release_req->cause_transport = -1;
549                 }
550                 if(node_0_1->id_menb_ue_x2ap_id_extension){
551                         release_req->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
552                 }else{
553                         release_req->id_MeNB_UE_X2AP_ID_Extension = 0;
554                 }
555                 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
556                         release_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
557                 }else{
558                         release_req->cause_radio_network = -1;
559                 }
560                 if(node_0_1->id_sgnb_ue_x2ap_id){
561                         release_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
562                 }else{
563                         release_req->id_SgNB_UE_X2AP_ID = 0;
564                 }
565                 if(node_0_1->id_cause && node_0_1->id_cause->misc){
566                         release_req->cause_misc = node_0_1->id_cause->misc->value;
567                 }else{
568                         release_req->cause_misc = -1;
569                 }
570                 rts_fta_process_packet(&cur_packet);
571         }
572         streaming_protobufs__sg_nbrelease_request__free_unpacked(node_0_0,NULL);
573         return 0;
574 }
575
576 gs_uint32_t process_buffer_RELREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
577         char *empty_string = "";
578 unsigned long long int ts_lo, ts_hi;
579         StreamingProtobufs__X2APStreaming *hdr = NULL;
580 // ------------------------------------------
581 // ---  Variables for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
582         struct _release_req_ack *release_req_ack = NULL;
583         StreamingProtobufs__SgNBReleaseRequestAcknowledge *node_0_0 = NULL;
584         StreamingProtobufs__SgNBReleaseRequestAcknowledgeIEs *node_0_1 = NULL;
585
586 // --------------------------------------------------
587 // ---  Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
588
589         release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values);
590         cur_packet.schema = 901;
591
592         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
593         if(hdr==NULL) return -1;
594
595         node_0_0 = hdr->sgnbreleaserequestacknowledge;
596         if(node_0_0==NULL) return -2;
597         if(hdr->header==NULL) return -3;
598
599         ts_lo = hdr->header->timestamp & 0xffffffff;
600         ts_hi = hdr->header->timestamp >> 32;
601         release_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
602         if(hdr->header->gnbid==NULL)
603                 release_req_ack->gnb_id = empty_string;
604         else
605                 release_req_ack->gnb_id = hdr->header->gnbid->value;
606
607         node_0_1 = node_0_0->protocolies;
608         if(node_0_0->protocolies){
609                 release_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
610                 release_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
611                 if(node_0_1->id_menb_ue_x2ap_id_extension){
612                         release_req_ack->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
613                 }else{
614                         release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0;
615                 }
616                 rts_fta_process_packet(&cur_packet);
617         }
618         streaming_protobufs__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL);
619         return 0;
620 }
621
622 gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t buflen){
623         char *empty_string = "";
624 unsigned long long int ts_lo, ts_hi;
625         StreamingProtobufs__X2APStreaming *hdr = NULL;
626 // ------------------------------------------
627 // ---  Variables for .proto sgnb_release_required.json, path release_rqd.json
628         struct _SgNB_release_rqd *SgNB_release_rqd = NULL;
629         StreamingProtobufs__SgNBReleaseRequired *node_0_0 = NULL;
630         StreamingProtobufs__SgNBReleaseRequiredIEs *node_0_1 = NULL;
631
632 // --------------------------------------------------
633 // ---  Specialized processing for .proto sgnb_release_required.json, path release_rqd.json
634
635         SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values);
636         cur_packet.schema = 1001;
637
638         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
639         if(hdr==NULL) return -1;
640
641         node_0_0 = hdr->sgnbreleaserequired;
642         if(node_0_0==NULL) return -2;
643         if(hdr->header==NULL) return -3;
644
645         ts_lo = hdr->header->timestamp & 0xffffffff;
646         ts_hi = hdr->header->timestamp >> 32;
647         SgNB_release_rqd->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
648         if(hdr->header->gnbid==NULL)
649                 SgNB_release_rqd->gnb_id = empty_string;
650         else
651                 SgNB_release_rqd->gnb_id = hdr->header->gnbid->value;
652
653         node_0_1 = node_0_0->protocolies;
654         if(node_0_0->protocolies){
655                 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
656                         SgNB_release_rqd->cause_protocol = node_0_1->id_cause->protocol->value;
657                 }else{
658                         SgNB_release_rqd->cause_protocol = -1;
659                 }
660                 SgNB_release_rqd->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
661                 if(node_0_1->id_cause && node_0_1->id_cause->transport){
662                         SgNB_release_rqd->cause_transport = node_0_1->id_cause->transport->value;
663                 }else{
664                         SgNB_release_rqd->cause_transport = -1;
665                 }
666                 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){
667                         SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id;
668                         SgNB_release_rqd->e_RAB_ID0_exists = 1;
669                 }else{
670                         SgNB_release_rqd->e_RAB_ID0_exists = 0;
671                 }
672                 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){
673                         SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id;
674                         SgNB_release_rqd->e_RAB_ID1_exists = 1;
675                 }else{
676                         SgNB_release_rqd->e_RAB_ID1_exists = 0;
677                 }
678                 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){
679                         SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id;
680                         SgNB_release_rqd->e_RAB_ID2_exists = 1;
681                 }else{
682                         SgNB_release_rqd->e_RAB_ID2_exists = 0;
683                 }
684                 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){
685                         SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id;
686                         SgNB_release_rqd->e_RAB_ID3_exists = 1;
687                 }else{
688                         SgNB_release_rqd->e_RAB_ID3_exists = 0;
689                 }
690                 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){
691                         SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id;
692                         SgNB_release_rqd->e_RAB_ID4_exists = 1;
693                 }else{
694                         SgNB_release_rqd->e_RAB_ID4_exists = 0;
695                 }
696                 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){
697                         SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id;
698                         SgNB_release_rqd->e_RAB_ID5_exists = 1;
699                 }else{
700                         SgNB_release_rqd->e_RAB_ID5_exists = 0;
701                 }
702                 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){
703                         SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id;
704                         SgNB_release_rqd->e_RAB_ID6_exists = 1;
705                 }else{
706                         SgNB_release_rqd->e_RAB_ID6_exists = 0;
707                 }
708                 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){
709                         SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id;
710                         SgNB_release_rqd->e_RAB_ID7_exists = 1;
711                 }else{
712                         SgNB_release_rqd->e_RAB_ID7_exists = 0;
713                 }
714                 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
715                         SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value;
716                 }else{
717                         SgNB_release_rqd->cause_radio_network = -1;
718                 }
719                 SgNB_release_rqd->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
720                 if(node_0_1->id_cause && node_0_1->id_cause->misc){
721                         SgNB_release_rqd->cause_misc = node_0_1->id_cause->misc->value;
722                 }else{
723                         SgNB_release_rqd->cause_misc = -1;
724                 }
725                 rts_fta_process_packet(&cur_packet);
726         }
727         streaming_protobufs__sg_nbrelease_required__free_unpacked(node_0_0,NULL);
728         return 0;
729 }
730
731 gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
732         char *empty_string = "";
733 unsigned long long int ts_lo, ts_hi;
734         StreamingProtobufs__X2APStreaming *hdr = NULL;
735 // ------------------------------------------
736 // ---  Variables for .proto rrctransfer.json, path rrc_metrics.json
737         struct _serv_nr_cell *serv_nr_cell = NULL;
738         StreamingProtobufs__RRCTransfer *node_0_0 = NULL;
739         StreamingProtobufs__RRCTransferIEs *node_0_1 = NULL;
740         StreamingProtobufs__UENRMeasurement *node_0_2 = NULL;
741         StreamingProtobufs__RRCContainer *node_0_3 = NULL;
742         StreamingProtobufs__ULDCCHMessageType *node_0_4 = NULL;
743         StreamingProtobufs__MeasurementReport *node_0_5 = NULL;
744         StreamingProtobufs__MeasurementReportIEs *node_0_6 = NULL;
745         StreamingProtobufs__MeasResults *node_0_7 = NULL;
746         StreamingProtobufs__MeasResultServMOList *node_0_8 = NULL;
747         StreamingProtobufs__MeasResultServMO *node_0_9 = NULL;
748         gs_uint32_t i_0_9;
749         StreamingProtobufs__MeasResultNR *node_0_10 = NULL;
750         StreamingProtobufs__MeasResult *node_0_11 = NULL;
751         StreamingProtobufs__CellResults *node_0_12 = NULL;
752         StreamingProtobufs__MeasQuantityResults *node_0_13 = NULL;
753 // ------------------------------------------
754 // ---  Variables for .proto rrctransfer.json, path rrc_metrics.json
755         struct _nr_neighbor *nr_neighbor = NULL;
756         StreamingProtobufs__RRCTransfer *node_1_0 = NULL;
757         StreamingProtobufs__RRCTransferIEs *node_1_1 = NULL;
758         StreamingProtobufs__UENRMeasurement *node_1_2 = NULL;
759         StreamingProtobufs__RRCContainer *node_1_3 = NULL;
760         StreamingProtobufs__ULDCCHMessageType *node_1_4 = NULL;
761         StreamingProtobufs__MeasurementReport *node_1_5 = NULL;
762         StreamingProtobufs__MeasurementReportIEs *node_1_6 = NULL;
763         StreamingProtobufs__MeasResults *node_1_7 = NULL;
764         StreamingProtobufs__MeasResultListNR *node_1_8 = NULL;
765         StreamingProtobufs__MeasResultNR *node_1_9 = NULL;
766         gs_uint32_t i_1_9;
767         StreamingProtobufs__MeasResult *node_1_10 = NULL;
768         StreamingProtobufs__CellResults *node_1_11 = NULL;
769         StreamingProtobufs__MeasQuantityResults *node_1_12 = NULL;
770 // ------------------------------------------
771 // ---  Variables for .proto rrctransfer.json, path rrc_metrics.json
772         struct _serv_cell_beam_csi *serv_cell_beam_csi = NULL;
773         StreamingProtobufs__RRCTransfer *node_2_0 = NULL;
774         StreamingProtobufs__RRCTransferIEs *node_2_1 = NULL;
775         StreamingProtobufs__UENRMeasurement *node_2_2 = NULL;
776         StreamingProtobufs__RRCContainer *node_2_3 = NULL;
777         StreamingProtobufs__ULDCCHMessageType *node_2_4 = NULL;
778         StreamingProtobufs__MeasurementReport *node_2_5 = NULL;
779         StreamingProtobufs__MeasurementReportIEs *node_2_6 = NULL;
780         StreamingProtobufs__MeasResults *node_2_7 = NULL;
781         StreamingProtobufs__MeasResultServMOList *node_2_8 = NULL;
782         StreamingProtobufs__MeasResultServMO *node_2_9 = NULL;
783         gs_uint32_t i_2_9;
784         StreamingProtobufs__MeasResultNR *node_2_10 = NULL;
785         StreamingProtobufs__MeasResult *node_2_11 = NULL;
786         StreamingProtobufs__RsIndexResults *node_2_12 = NULL;
787         StreamingProtobufs__ResultsPerCSIRSIndexList *node_2_13 = NULL;
788         StreamingProtobufs__ResultsPerCSIRSIndex *node_2_14 = NULL;
789         gs_uint32_t i_2_14;
790         StreamingProtobufs__MeasQuantityResults *node_2_15 = NULL;
791 // ------------------------------------------
792 // ---  Variables for .proto rrctransfer.json, path rrc_metrics.json
793         struct _neighbor_beam_csi *neighbor_beam_csi = NULL;
794         StreamingProtobufs__RRCTransfer *node_3_0 = NULL;
795         StreamingProtobufs__RRCTransferIEs *node_3_1 = NULL;
796         StreamingProtobufs__UENRMeasurement *node_3_2 = NULL;
797         StreamingProtobufs__RRCContainer *node_3_3 = NULL;
798         StreamingProtobufs__ULDCCHMessageType *node_3_4 = NULL;
799         StreamingProtobufs__MeasurementReport *node_3_5 = NULL;
800         StreamingProtobufs__MeasurementReportIEs *node_3_6 = NULL;
801         StreamingProtobufs__MeasResults *node_3_7 = NULL;
802         StreamingProtobufs__MeasResultListNR *node_3_8 = NULL;
803         StreamingProtobufs__MeasResultNR *node_3_9 = NULL;
804         gs_uint32_t i_3_9;
805         StreamingProtobufs__MeasResult *node_3_10 = NULL;
806         StreamingProtobufs__RsIndexResults *node_3_11 = NULL;
807         StreamingProtobufs__ResultsPerCSIRSIndexList *node_3_12 = NULL;
808         StreamingProtobufs__ResultsPerCSIRSIndex *node_3_13 = NULL;
809         gs_uint32_t i_3_13;
810         StreamingProtobufs__MeasQuantityResults *node_3_14 = NULL;
811 // ------------------------------------------
812 // ---  Variables for .proto rrctransfer.json, path rrc_metrics.json
813         struct _serv_cell_beam_ssb *serv_cell_beam_ssb = NULL;
814         StreamingProtobufs__RRCTransfer *node_4_0 = NULL;
815         StreamingProtobufs__RRCTransferIEs *node_4_1 = NULL;
816         StreamingProtobufs__UENRMeasurement *node_4_2 = NULL;
817         StreamingProtobufs__RRCContainer *node_4_3 = NULL;
818         StreamingProtobufs__ULDCCHMessageType *node_4_4 = NULL;
819         StreamingProtobufs__MeasurementReport *node_4_5 = NULL;
820         StreamingProtobufs__MeasurementReportIEs *node_4_6 = NULL;
821         StreamingProtobufs__MeasResults *node_4_7 = NULL;
822         StreamingProtobufs__MeasResultServMOList *node_4_8 = NULL;
823         StreamingProtobufs__MeasResultServMO *node_4_9 = NULL;
824         gs_uint32_t i_4_9;
825         StreamingProtobufs__MeasResultNR *node_4_10 = NULL;
826         StreamingProtobufs__MeasResult *node_4_11 = NULL;
827         StreamingProtobufs__RsIndexResults *node_4_12 = NULL;
828         StreamingProtobufs__ResultsPerSSBIndexList *node_4_13 = NULL;
829         StreamingProtobufs__ResultsPerSSBIndex *node_4_14 = NULL;
830         gs_uint32_t i_4_14;
831         StreamingProtobufs__MeasQuantityResults *node_4_15 = NULL;
832 // ------------------------------------------
833 // ---  Variables for .proto rrctransfer.json, path rrc_metrics.json
834         struct _neighbor_beam_ssb *neighbor_beam_ssb = NULL;
835         StreamingProtobufs__RRCTransfer *node_5_0 = NULL;
836         StreamingProtobufs__RRCTransferIEs *node_5_1 = NULL;
837         StreamingProtobufs__UENRMeasurement *node_5_2 = NULL;
838         StreamingProtobufs__RRCContainer *node_5_3 = NULL;
839         StreamingProtobufs__ULDCCHMessageType *node_5_4 = NULL;
840         StreamingProtobufs__MeasurementReport *node_5_5 = NULL;
841         StreamingProtobufs__MeasurementReportIEs *node_5_6 = NULL;
842         StreamingProtobufs__MeasResults *node_5_7 = NULL;
843         StreamingProtobufs__MeasResultListNR *node_5_8 = NULL;
844         StreamingProtobufs__MeasResultNR *node_5_9 = NULL;
845         gs_uint32_t i_5_9;
846         StreamingProtobufs__MeasResult *node_5_10 = NULL;
847         StreamingProtobufs__RsIndexResults *node_5_11 = NULL;
848         StreamingProtobufs__ResultsPerSSBIndexList *node_5_12 = NULL;
849         StreamingProtobufs__ResultsPerSSBIndex *node_5_13 = NULL;
850         gs_uint32_t i_5_13;
851         StreamingProtobufs__MeasQuantityResults *node_5_14 = NULL;
852
853 // --------------------------------------------------
854 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
855
856         serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values);
857         cur_packet.schema = 1;
858
859         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
860         if(hdr==NULL) return -1;
861
862         node_0_0 = hdr->rrctransfer;
863         if(node_0_0==NULL) return -2;
864         if(hdr->header==NULL) return -3;
865
866         ts_lo = hdr->header->timestamp & 0xffffffff;
867         ts_hi = hdr->header->timestamp >> 32;
868         serv_nr_cell->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
869         if(hdr->header->gnbid==NULL)
870                 serv_nr_cell->gnb_id = empty_string;
871         else
872                 serv_nr_cell->gnb_id = hdr->header->gnbid->value;
873
874         node_0_1 = node_0_0->rrctransfer_ies;
875         if(node_0_0->rrctransfer_ies){
876                 serv_nr_cell->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
877                 serv_nr_cell->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
878                 node_0_2 = node_0_1->id_uenrmeasurement;
879                 if(node_0_1->id_uenrmeasurement){
880                         node_0_3 = node_0_2->uenrmeasurements;
881                         if(node_0_2->uenrmeasurements){
882                                 node_0_4 = node_0_3->ul_dcch_message;
883                                 if(node_0_3->ul_dcch_message){
884                                         node_0_5 = node_0_4->measurementreport;
885                                         if(node_0_4->measurementreport){
886                                                 node_0_6 = node_0_5->measurementreport;
887                                                 if(node_0_5->measurementreport){
888                                                         node_0_7 = node_0_6->measresults;
889                                                         if(node_0_6->measresults){
890                                                                 node_0_8 = node_0_7->measresultservingmolist;
891                                                                 if(node_0_7->measresultservingmolist){
892                                                                         for(i_0_9=0;i_0_9<node_0_8->n_items; i_0_9++){
893                                                                                 node_0_9 = node_0_8->items[i_0_9];
894                                                                                 serv_nr_cell->servCellID = node_0_9->servcellid;
895                                                                                 node_0_10 = node_0_9->measresultservingcell;
896                                                                                 if(node_0_9->measresultservingcell){
897                                                                                         if(node_0_10->physcellid){
898                                                                                                 serv_nr_cell->physCellId = node_0_10->physcellid->value;
899                                                                                                 serv_nr_cell->physCellId_exists = 1;
900                                                                                         }else{
901                                                                                                 serv_nr_cell->physCellId_exists = 0;
902                                                                                         }
903                                                                                         node_0_11 = node_0_10->measresult;
904                                                                                         if(node_0_10->measresult){
905                                                                                                 node_0_12 = node_0_11->cellresults;
906                                                                                                 if(node_0_11->cellresults){
907                                                                                                         node_0_13 = node_0_12->resultsssb_cell;
908                                                                                                         if(node_0_12->resultsssb_cell){
909                                                                                                                 if(node_0_13->rsrq){
910                                                                                                                         serv_nr_cell->rsrq = node_0_13->rsrq->value;
911                                                                                                                         serv_nr_cell->rsrq_exists = 1;
912                                                                                                                 }else{
913                                                                                                                         serv_nr_cell->rsrq_exists = 0;
914                                                                                                                 }
915                                                                                                                 if(node_0_13->rsrp){
916                                                                                                                         serv_nr_cell->rsrp = node_0_13->rsrp->value;
917                                                                                                                         serv_nr_cell->rsrp_exists = 1;
918                                                                                                                 }else{
919                                                                                                                         serv_nr_cell->rsrp_exists = 0;
920                                                                                                                 }
921                                                                                                                 if(node_0_13->sinr){
922                                                                                                                         serv_nr_cell->sinr = node_0_13->sinr->value;
923                                                                                                                         serv_nr_cell->sinr_exists = 1;
924                                                                                                                 }else{
925                                                                                                                         serv_nr_cell->sinr_exists = 0;
926                                                                                                                 }
927                                                                                                                 rts_fta_process_packet(&cur_packet);
928                                                                                                         }
929                                                                                                 }
930                                                                                         }
931                                                                                 }
932                                                                         }
933                                                                 }
934                                                         }
935                                                 }
936                                         }
937                                 }
938                         }
939                 }
940         }
941 // --------------------------------------------------
942 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
943
944         nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values);
945         cur_packet.schema = 4;
946         node_1_0 = node_0_0;
947         ts_lo = hdr->header->timestamp & 0xffffffff;
948         ts_hi = hdr->header->timestamp >> 32;
949         nr_neighbor->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
950         if(hdr->header->gnbid==NULL)
951                 nr_neighbor->gnb_id = empty_string;
952         else
953                 nr_neighbor->gnb_id = hdr->header->gnbid->value;
954
955         node_1_1 = node_1_0->rrctransfer_ies;
956         if(node_1_0->rrctransfer_ies){
957                 nr_neighbor->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
958                 nr_neighbor->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
959                 node_1_2 = node_1_1->id_uenrmeasurement;
960                 if(node_1_1->id_uenrmeasurement){
961                         node_1_3 = node_1_2->uenrmeasurements;
962                         if(node_1_2->uenrmeasurements){
963                                 node_1_4 = node_1_3->ul_dcch_message;
964                                 if(node_1_3->ul_dcch_message){
965                                         node_1_5 = node_1_4->measurementreport;
966                                         if(node_1_4->measurementreport){
967                                                 node_1_6 = node_1_5->measurementreport;
968                                                 if(node_1_5->measurementreport){
969                                                         node_1_7 = node_1_6->measresults;
970                                                         if(node_1_6->measresults){
971                                                                 node_1_8 = node_1_7->measresultlistnr;
972                                                                 if(node_1_7->measresultlistnr){
973                                                                         for(i_1_9=0;i_1_9<node_1_8->n_items; i_1_9++){
974                                                                                 node_1_9 = node_1_8->items[i_1_9];
975                                                                                 if(node_1_9->physcellid){
976                                                                                         nr_neighbor->physCellId = node_1_9->physcellid->value;
977                                                                                         nr_neighbor->physCellId_exists = 1;
978                                                                                 }else{
979                                                                                         nr_neighbor->physCellId_exists = 0;
980                                                                                 }
981                                                                                 node_1_10 = node_1_9->measresult;
982                                                                                 if(node_1_9->measresult){
983                                                                                         node_1_11 = node_1_10->cellresults;
984                                                                                         if(node_1_10->cellresults){
985                                                                                                 node_1_12 = node_1_11->resultsssb_cell;
986                                                                                                 if(node_1_11->resultsssb_cell){
987                                                                                                         if(node_1_12->rsrq){
988                                                                                                                 nr_neighbor->rsrq = node_1_12->rsrq->value;
989                                                                                                                 nr_neighbor->rsrq_exists = 1;
990                                                                                                         }else{
991                                                                                                                 nr_neighbor->rsrq_exists = 0;
992                                                                                                         }
993                                                                                                         if(node_1_12->rsrp){
994                                                                                                                 nr_neighbor->rsrp = node_1_12->rsrp->value;
995                                                                                                                 nr_neighbor->rsrp_exists = 1;
996                                                                                                         }else{
997                                                                                                                 nr_neighbor->rsrp_exists = 0;
998                                                                                                         }
999                                                                                                         if(node_1_12->sinr){
1000                                                                                                                 nr_neighbor->sinr = node_1_12->sinr->value;
1001                                                                                                                 nr_neighbor->sinr_exists = 1;
1002                                                                                                         }else{
1003                                                                                                                 nr_neighbor->sinr_exists = 0;
1004                                                                                                         }
1005                                                                                                         rts_fta_process_packet(&cur_packet);
1006                                                                                                 }
1007                                                                                         }
1008                                                                                 }
1009                                                                         }
1010                                                                 }
1011                                                         }
1012                                                 }
1013                                         }
1014                                 }
1015                         }
1016                 }
1017         }
1018 // --------------------------------------------------
1019 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1020
1021         serv_cell_beam_csi = (struct _serv_cell_beam_csi *)(cur_packet.record.packed.values);
1022         cur_packet.schema = 2;
1023         node_2_0 = node_1_0;
1024         ts_lo = hdr->header->timestamp & 0xffffffff;
1025         ts_hi = hdr->header->timestamp >> 32;
1026         serv_cell_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1027         if(hdr->header->gnbid==NULL)
1028                 serv_cell_beam_csi->gnb_id = empty_string;
1029         else
1030                 serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value;
1031
1032         node_2_1 = node_2_0->rrctransfer_ies;
1033         if(node_2_0->rrctransfer_ies){
1034                 serv_cell_beam_csi->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
1035                 serv_cell_beam_csi->id_SgNB_UE_X2AP_ID = node_2_1->id_sgnb_ue_x2ap_id;
1036                 node_2_2 = node_2_1->id_uenrmeasurement;
1037                 if(node_2_1->id_uenrmeasurement){
1038                         node_2_3 = node_2_2->uenrmeasurements;
1039                         if(node_2_2->uenrmeasurements){
1040                                 node_2_4 = node_2_3->ul_dcch_message;
1041                                 if(node_2_3->ul_dcch_message){
1042                                         node_2_5 = node_2_4->measurementreport;
1043                                         if(node_2_4->measurementreport){
1044                                                 node_2_6 = node_2_5->measurementreport;
1045                                                 if(node_2_5->measurementreport){
1046                                                         node_2_7 = node_2_6->measresults;
1047                                                         if(node_2_6->measresults){
1048                                                                 node_2_8 = node_2_7->measresultservingmolist;
1049                                                                 if(node_2_7->measresultservingmolist){
1050                                                                         for(i_2_9=0;i_2_9<node_2_8->n_items; i_2_9++){
1051                                                                                 node_2_9 = node_2_8->items[i_2_9];
1052                                                                                 serv_cell_beam_csi->servCellID = node_2_9->servcellid;
1053                                                                                 node_2_10 = node_2_9->measresultservingcell;
1054                                                                                 if(node_2_9->measresultservingcell){
1055                                                                                         if(node_2_10->physcellid){
1056                                                                                                 serv_cell_beam_csi->physCellId = node_2_10->physcellid->value;
1057                                                                                                 serv_cell_beam_csi->physCellId_exists = 1;
1058                                                                                         }else{
1059                                                                                                 serv_cell_beam_csi->physCellId_exists = 0;
1060                                                                                         }
1061                                                                                         node_2_11 = node_2_10->measresult;
1062                                                                                         if(node_2_10->measresult){
1063                                                                                                 node_2_12 = node_2_11->rsindexresults;
1064                                                                                                 if(node_2_11->rsindexresults){
1065                                                                                                         node_2_13 = node_2_12->resultscsi_rs_indexes;
1066                                                                                                         if(node_2_12->resultscsi_rs_indexes){
1067                                                                                                                 for(i_2_14=0;i_2_14<node_2_13->n_items; i_2_14++){
1068                                                                                                                         node_2_14 = node_2_13->items[i_2_14];
1069                                                                                                                         serv_cell_beam_csi->csi_rs_index = node_2_14->csi_rs_index;
1070                                                                                                                         node_2_15 = node_2_14->csi_rs_results;
1071                                                                                                                         if(node_2_14->csi_rs_results){
1072                                                                                                                                 if(node_2_15->rsrq){
1073                                                                                                                                         serv_cell_beam_csi->rsrq = node_2_15->rsrq->value;
1074                                                                                                                                         serv_cell_beam_csi->rsrq_exists = 1;
1075                                                                                                                                 }else{
1076                                                                                                                                         serv_cell_beam_csi->rsrq_exists = 0;
1077                                                                                                                                 }
1078                                                                                                                                 if(node_2_15->rsrp){
1079                                                                                                                                         serv_cell_beam_csi->rsrp = node_2_15->rsrp->value;
1080                                                                                                                                         serv_cell_beam_csi->rsrp_exists = 1;
1081                                                                                                                                 }else{
1082                                                                                                                                         serv_cell_beam_csi->rsrp_exists = 0;
1083                                                                                                                                 }
1084                                                                                                                                 if(node_2_15->sinr){
1085                                                                                                                                         serv_cell_beam_csi->sinr = node_2_15->sinr->value;
1086                                                                                                                                         serv_cell_beam_csi->sinr_exists = 1;
1087                                                                                                                                 }else{
1088                                                                                                                                         serv_cell_beam_csi->sinr_exists = 0;
1089                                                                                                                                 }
1090                                                                                                                                 rts_fta_process_packet(&cur_packet);
1091                                                                                                                         }
1092                                                                                                                 }
1093                                                                                                         }
1094                                                                                                 }
1095                                                                                         }
1096                                                                                 }
1097                                                                         }
1098                                                                 }
1099                                                         }
1100                                                 }
1101                                         }
1102                                 }
1103                         }
1104                 }
1105         }
1106 // --------------------------------------------------
1107 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1108
1109         neighbor_beam_csi = (struct _neighbor_beam_csi *)(cur_packet.record.packed.values);
1110         cur_packet.schema = 5;
1111         node_3_0 = node_2_0;
1112         ts_lo = hdr->header->timestamp & 0xffffffff;
1113         ts_hi = hdr->header->timestamp >> 32;
1114         neighbor_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1115         if(hdr->header->gnbid==NULL)
1116                 neighbor_beam_csi->gnb_id = empty_string;
1117         else
1118                 neighbor_beam_csi->gnb_id = hdr->header->gnbid->value;
1119
1120         node_3_1 = node_3_0->rrctransfer_ies;
1121         if(node_3_0->rrctransfer_ies){
1122                 neighbor_beam_csi->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
1123                 neighbor_beam_csi->id_SgNB_UE_X2AP_ID = node_3_1->id_sgnb_ue_x2ap_id;
1124                 node_3_2 = node_3_1->id_uenrmeasurement;
1125                 if(node_3_1->id_uenrmeasurement){
1126                         node_3_3 = node_3_2->uenrmeasurements;
1127                         if(node_3_2->uenrmeasurements){
1128                                 node_3_4 = node_3_3->ul_dcch_message;
1129                                 if(node_3_3->ul_dcch_message){
1130                                         node_3_5 = node_3_4->measurementreport;
1131                                         if(node_3_4->measurementreport){
1132                                                 node_3_6 = node_3_5->measurementreport;
1133                                                 if(node_3_5->measurementreport){
1134                                                         node_3_7 = node_3_6->measresults;
1135                                                         if(node_3_6->measresults){
1136                                                                 node_3_8 = node_3_7->measresultlistnr;
1137                                                                 if(node_3_7->measresultlistnr){
1138                                                                         for(i_3_9=0;i_3_9<node_3_8->n_items; i_3_9++){
1139                                                                                 node_3_9 = node_3_8->items[i_3_9];
1140                                                                                 if(node_3_9->physcellid){
1141                                                                                         neighbor_beam_csi->physCellId = node_3_9->physcellid->value;
1142                                                                                         neighbor_beam_csi->physCellId_exists = 1;
1143                                                                                 }else{
1144                                                                                         neighbor_beam_csi->physCellId_exists = 0;
1145                                                                                 }
1146                                                                                 node_3_10 = node_3_9->measresult;
1147                                                                                 if(node_3_9->measresult){
1148                                                                                         node_3_11 = node_3_10->rsindexresults;
1149                                                                                         if(node_3_10->rsindexresults){
1150                                                                                                 node_3_12 = node_3_11->resultscsi_rs_indexes;
1151                                                                                                 if(node_3_11->resultscsi_rs_indexes){
1152                                                                                                         for(i_3_13=0;i_3_13<node_3_12->n_items; i_3_13++){
1153                                                                                                                 node_3_13 = node_3_12->items[i_3_13];
1154                                                                                                                 neighbor_beam_csi->csi_rs_index = node_3_13->csi_rs_index;
1155                                                                                                                 node_3_14 = node_3_13->csi_rs_results;
1156                                                                                                                 if(node_3_13->csi_rs_results){
1157                                                                                                                         if(node_3_14->rsrq){
1158                                                                                                                                 neighbor_beam_csi->rsrq = node_3_14->rsrq->value;
1159                                                                                                                                 neighbor_beam_csi->rsrq_exists = 1;
1160                                                                                                                         }else{
1161                                                                                                                                 neighbor_beam_csi->rsrq_exists = 0;
1162                                                                                                                         }
1163                                                                                                                         if(node_3_14->rsrp){
1164                                                                                                                                 neighbor_beam_csi->rsrp = node_3_14->rsrp->value;
1165                                                                                                                                 neighbor_beam_csi->rsrp_exists = 1;
1166                                                                                                                         }else{
1167                                                                                                                                 neighbor_beam_csi->rsrp_exists = 0;
1168                                                                                                                         }
1169                                                                                                                         if(node_3_14->sinr){
1170                                                                                                                                 neighbor_beam_csi->sinr = node_3_14->sinr->value;
1171                                                                                                                                 neighbor_beam_csi->sinr_exists = 1;
1172                                                                                                                         }else{
1173                                                                                                                                 neighbor_beam_csi->sinr_exists = 0;
1174                                                                                                                         }
1175                                                                                                                         rts_fta_process_packet(&cur_packet);
1176                                                                                                                 }
1177                                                                                                         }
1178                                                                                                 }
1179                                                                                         }
1180                                                                                 }
1181                                                                         }
1182                                                                 }
1183                                                         }
1184                                                 }
1185                                         }
1186                                 }
1187                         }
1188                 }
1189         }
1190 // --------------------------------------------------
1191 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1192
1193         serv_cell_beam_ssb = (struct _serv_cell_beam_ssb *)(cur_packet.record.packed.values);
1194         cur_packet.schema = 3;
1195         node_4_0 = node_3_0;
1196         ts_lo = hdr->header->timestamp & 0xffffffff;
1197         ts_hi = hdr->header->timestamp >> 32;
1198         serv_cell_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1199         if(hdr->header->gnbid==NULL)
1200                 serv_cell_beam_ssb->gnb_id = empty_string;
1201         else
1202                 serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value;
1203
1204         node_4_1 = node_4_0->rrctransfer_ies;
1205         if(node_4_0->rrctransfer_ies){
1206                 serv_cell_beam_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
1207                 serv_cell_beam_ssb->id_SgNB_UE_X2AP_ID = node_4_1->id_sgnb_ue_x2ap_id;
1208                 node_4_2 = node_4_1->id_uenrmeasurement;
1209                 if(node_4_1->id_uenrmeasurement){
1210                         node_4_3 = node_4_2->uenrmeasurements;
1211                         if(node_4_2->uenrmeasurements){
1212                                 node_4_4 = node_4_3->ul_dcch_message;
1213                                 if(node_4_3->ul_dcch_message){
1214                                         node_4_5 = node_4_4->measurementreport;
1215                                         if(node_4_4->measurementreport){
1216                                                 node_4_6 = node_4_5->measurementreport;
1217                                                 if(node_4_5->measurementreport){
1218                                                         node_4_7 = node_4_6->measresults;
1219                                                         if(node_4_6->measresults){
1220                                                                 node_4_8 = node_4_7->measresultservingmolist;
1221                                                                 if(node_4_7->measresultservingmolist){
1222                                                                         for(i_4_9=0;i_4_9<node_4_8->n_items; i_4_9++){
1223                                                                                 node_4_9 = node_4_8->items[i_4_9];
1224                                                                                 serv_cell_beam_ssb->servCellID = node_4_9->servcellid;
1225                                                                                 node_4_10 = node_4_9->measresultservingcell;
1226                                                                                 if(node_4_9->measresultservingcell){
1227                                                                                         if(node_4_10->physcellid){
1228                                                                                                 serv_cell_beam_ssb->physCellId = node_4_10->physcellid->value;
1229                                                                                                 serv_cell_beam_ssb->physCellId_exists = 1;
1230                                                                                         }else{
1231                                                                                                 serv_cell_beam_ssb->physCellId_exists = 0;
1232                                                                                         }
1233                                                                                         node_4_11 = node_4_10->measresult;
1234                                                                                         if(node_4_10->measresult){
1235                                                                                                 node_4_12 = node_4_11->rsindexresults;
1236                                                                                                 if(node_4_11->rsindexresults){
1237                                                                                                         node_4_13 = node_4_12->resultsssb_indexes;
1238                                                                                                         if(node_4_12->resultsssb_indexes){
1239                                                                                                                 for(i_4_14=0;i_4_14<node_4_13->n_items; i_4_14++){
1240                                                                                                                         node_4_14 = node_4_13->items[i_4_14];
1241                                                                                                                         serv_cell_beam_ssb->ssb_Index = node_4_14->ssb_index;
1242                                                                                                                         node_4_15 = node_4_14->ssb_results;
1243                                                                                                                         if(node_4_14->ssb_results){
1244                                                                                                                                 if(node_4_15->rsrq){
1245                                                                                                                                         serv_cell_beam_ssb->rsrq = node_4_15->rsrq->value;
1246                                                                                                                                         serv_cell_beam_ssb->rsrq_exists = 1;
1247                                                                                                                                 }else{
1248                                                                                                                                         serv_cell_beam_ssb->rsrq_exists = 0;
1249                                                                                                                                 }
1250                                                                                                                                 if(node_4_15->rsrp){
1251                                                                                                                                         serv_cell_beam_ssb->rsrp = node_4_15->rsrp->value;
1252                                                                                                                                         serv_cell_beam_ssb->rsrp_exists = 1;
1253                                                                                                                                 }else{
1254                                                                                                                                         serv_cell_beam_ssb->rsrp_exists = 0;
1255                                                                                                                                 }
1256                                                                                                                                 if(node_4_15->sinr){
1257                                                                                                                                         serv_cell_beam_ssb->sinr = node_4_15->sinr->value;
1258                                                                                                                                         serv_cell_beam_ssb->sinr_exists = 1;
1259                                                                                                                                 }else{
1260                                                                                                                                         serv_cell_beam_ssb->sinr_exists = 0;
1261                                                                                                                                 }
1262                                                                                                                                 rts_fta_process_packet(&cur_packet);
1263                                                                                                                         }
1264                                                                                                                 }
1265                                                                                                         }
1266                                                                                                 }
1267                                                                                         }
1268                                                                                 }
1269                                                                         }
1270                                                                 }
1271                                                         }
1272                                                 }
1273                                         }
1274                                 }
1275                         }
1276                 }
1277         }
1278 // --------------------------------------------------
1279 // ---  Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1280
1281         neighbor_beam_ssb = (struct _neighbor_beam_ssb *)(cur_packet.record.packed.values);
1282         cur_packet.schema = 6;
1283         node_5_0 = node_4_0;
1284         ts_lo = hdr->header->timestamp & 0xffffffff;
1285         ts_hi = hdr->header->timestamp >> 32;
1286         neighbor_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1287         if(hdr->header->gnbid==NULL)
1288                 neighbor_beam_ssb->gnb_id = empty_string;
1289         else
1290                 neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value;
1291
1292         node_5_1 = node_5_0->rrctransfer_ies;
1293         if(node_5_0->rrctransfer_ies){
1294                 neighbor_beam_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
1295                 neighbor_beam_ssb->id_SgNB_UE_X2AP_ID = node_5_1->id_sgnb_ue_x2ap_id;
1296                 node_5_2 = node_5_1->id_uenrmeasurement;
1297                 if(node_5_1->id_uenrmeasurement){
1298                         node_5_3 = node_5_2->uenrmeasurements;
1299                         if(node_5_2->uenrmeasurements){
1300                                 node_5_4 = node_5_3->ul_dcch_message;
1301                                 if(node_5_3->ul_dcch_message){
1302                                         node_5_5 = node_5_4->measurementreport;
1303                                         if(node_5_4->measurementreport){
1304                                                 node_5_6 = node_5_5->measurementreport;
1305                                                 if(node_5_5->measurementreport){
1306                                                         node_5_7 = node_5_6->measresults;
1307                                                         if(node_5_6->measresults){
1308                                                                 node_5_8 = node_5_7->measresultlistnr;
1309                                                                 if(node_5_7->measresultlistnr){
1310                                                                         for(i_5_9=0;i_5_9<node_5_8->n_items; i_5_9++){
1311                                                                                 node_5_9 = node_5_8->items[i_5_9];
1312                                                                                 if(node_5_9->physcellid){
1313                                                                                         neighbor_beam_ssb->physCellId = node_5_9->physcellid->value;
1314                                                                                         neighbor_beam_ssb->physCellId_exists = 1;
1315                                                                                 }else{
1316                                                                                         neighbor_beam_ssb->physCellId_exists = 0;
1317                                                                                 }
1318                                                                                 node_5_10 = node_5_9->measresult;
1319                                                                                 if(node_5_9->measresult){
1320                                                                                         node_5_11 = node_5_10->rsindexresults;
1321                                                                                         if(node_5_10->rsindexresults){
1322                                                                                                 node_5_12 = node_5_11->resultsssb_indexes;
1323                                                                                                 if(node_5_11->resultsssb_indexes){
1324                                                                                                         for(i_5_13=0;i_5_13<node_5_12->n_items; i_5_13++){
1325                                                                                                                 node_5_13 = node_5_12->items[i_5_13];
1326                                                                                                                 neighbor_beam_ssb->ssb_Index = node_5_13->ssb_index;
1327                                                                                                                 node_5_14 = node_5_13->ssb_results;
1328                                                                                                                 if(node_5_13->ssb_results){
1329                                                                                                                         if(node_5_14->rsrq){
1330                                                                                                                                 neighbor_beam_ssb->rsrq = node_5_14->rsrq->value;
1331                                                                                                                                 neighbor_beam_ssb->rsrq_exists = 1;
1332                                                                                                                         }else{
1333                                                                                                                                 neighbor_beam_ssb->rsrq_exists = 0;
1334                                                                                                                         }
1335                                                                                                                         if(node_5_14->rsrp){
1336                                                                                                                                 neighbor_beam_ssb->rsrp = node_5_14->rsrp->value;
1337                                                                                                                                 neighbor_beam_ssb->rsrp_exists = 1;
1338                                                                                                                         }else{
1339                                                                                                                                 neighbor_beam_ssb->rsrp_exists = 0;
1340                                                                                                                         }
1341                                                                                                                         if(node_5_14->sinr){
1342                                                                                                                                 neighbor_beam_ssb->sinr = node_5_14->sinr->value;
1343                                                                                                                                 neighbor_beam_ssb->sinr_exists = 1;
1344                                                                                                                         }else{
1345                                                                                                                                 neighbor_beam_ssb->sinr_exists = 0;
1346                                                                                                                         }
1347                                                                                                                         rts_fta_process_packet(&cur_packet);
1348                                                                                                                 }
1349                                                                                                         }
1350                                                                                                 }
1351                                                                                         }
1352                                                                                 }
1353                                                                         }
1354                                                                 }
1355                                                         }
1356                                                 }
1357                                         }
1358                                 }
1359                         }
1360                 }
1361         }
1362         streaming_protobufs__rrctransfer__free_unpacked(node_0_0,NULL);
1363         return 0;
1364 }
1365
1366 gs_uint32_t process_buffer_ADDREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
1367         char *empty_string = "";
1368 unsigned long long int ts_lo, ts_hi;
1369         StreamingProtobufs__X2APStreaming *hdr = NULL;
1370 // ------------------------------------------
1371 // ---  Variables for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1372         struct _sgnb_add_req_reject *sgnb_add_req_reject = NULL;
1373         StreamingProtobufs__SgNBAdditionRequestReject *node_0_0 = NULL;
1374         StreamingProtobufs__Cause *node_0_1 = NULL;
1375
1376 // --------------------------------------------------
1377 // ---  Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1378
1379         sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values);
1380         cur_packet.schema = 701;
1381
1382         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1383         if(hdr==NULL) return -1;
1384
1385         node_0_0 = hdr->sgnbadditionrequestreject;
1386         if(node_0_0==NULL) return -2;
1387         if(hdr->header==NULL) return -3;
1388
1389         ts_lo = hdr->header->timestamp & 0xffffffff;
1390         ts_hi = hdr->header->timestamp >> 32;
1391         sgnb_add_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1392         if(hdr->header->gnbid==NULL)
1393                 sgnb_add_req_reject->gnb_id = empty_string;
1394         else
1395                 sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value;
1396
1397         sgnb_add_req_reject->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1398         if(node_0_0->id_sgnb_ue_x2ap_id){
1399                 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
1400                 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 1;
1401         }else{
1402                 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 0;
1403         }
1404         node_0_1 = node_0_0->id_cause;
1405         if(node_0_0->id_cause){
1406                 if(node_0_1->radionetwork){
1407                         sgnb_add_req_reject->cause_radio_network = node_0_1->radionetwork->value;
1408                 }else{
1409                         sgnb_add_req_reject->cause_radio_network = -1;
1410                 }
1411                 if(node_0_1->transport){
1412                         sgnb_add_req_reject->cause_transport = node_0_1->transport->value;
1413                 }else{
1414                         sgnb_add_req_reject->cause_transport = -1;
1415                 }
1416                 if(node_0_1->protocol){
1417                         sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value;
1418                 }else{
1419                         sgnb_add_req_reject->cause_protocol = -1;
1420                 }
1421                 if(node_0_1->misc){
1422                         sgnb_add_req_reject->cause_misc = node_0_1->misc->value;
1423                 }else{
1424                         sgnb_add_req_reject->cause_misc = -1;
1425                 }
1426                 rts_fta_process_packet(&cur_packet);
1427         }
1428         streaming_protobufs__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL);
1429         return 0;
1430 }
1431
1432 gs_uint32_t process_buffer_SGNB_ADDITION_REQ_ACK(gs_uint8_t * buffer, gs_uint32_t buflen){
1433         char *empty_string = "";
1434 unsigned long long int ts_lo, ts_hi;
1435         StreamingProtobufs__X2APStreaming *hdr = NULL;
1436 // ------------------------------------------
1437 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1438         struct _eRABs_notadmitted_for_ue *eRABs_notadmitted_for_ue = NULL;
1439         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_0_0 = NULL;
1440         StreamingProtobufs__ERABList *node_0_1 = NULL;
1441         StreamingProtobufs__ERABItemIEs *node_0_2 = NULL;
1442         gs_uint32_t i_0_2;
1443         StreamingProtobufs__ERABItem *node_0_3 = NULL;
1444 // ------------------------------------------
1445 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1446         struct _add_req_ack_cellid *add_req_ack_cellid = NULL;
1447         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_1_0 = NULL;
1448         StreamingProtobufs__CGConfig *node_1_1 = NULL;
1449         StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_1_2 = NULL;
1450         StreamingProtobufs__CGConfigIEs *node_1_3 = NULL;
1451         StreamingProtobufs__RRCReconfiguration *node_1_4 = NULL;
1452         StreamingProtobufs__RRCReconfigurationIEs *node_1_5 = NULL;
1453         StreamingProtobufs__CellGroupConfig *node_1_6 = NULL;
1454         StreamingProtobufs__SpCellConfig *node_1_7 = NULL;
1455         StreamingProtobufs__ReconfigurationWithSync *node_1_8 = NULL;
1456         StreamingProtobufs__ServingCellConfigCommon *node_1_9 = NULL;
1457 // ------------------------------------------
1458 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1459         struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL;
1460         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_2_0 = NULL;
1461         StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_2_1 = NULL;
1462         StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_2_2 = NULL;
1463         gs_uint32_t i_2_2;
1464 // ------------------------------------------
1465 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1466         struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL;
1467         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_3_0 = NULL;
1468         StreamingProtobufs__CGConfig *node_3_1 = NULL;
1469         StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL;
1470         StreamingProtobufs__CGConfigIEs *node_3_3 = NULL;
1471 // ------------------------------------------
1472 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1473         struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL;
1474         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_4_0 = NULL;
1475         StreamingProtobufs__CGConfig *node_4_1 = NULL;
1476         StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL;
1477         StreamingProtobufs__CGConfigIEs *node_4_3 = NULL;
1478         StreamingProtobufs__RadioBearerConfig *node_4_4 = NULL;
1479         StreamingProtobufs__DRBToAddModList *node_4_5 = NULL;
1480         StreamingProtobufs__DRBToAddMod *node_4_6 = NULL;
1481         gs_uint32_t i_4_6;
1482 // ------------------------------------------
1483 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1484         struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL;
1485         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_5_0 = NULL;
1486         StreamingProtobufs__CGConfig *node_5_1 = NULL;
1487         StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL;
1488         StreamingProtobufs__CGConfigIEs *node_5_3 = NULL;
1489         StreamingProtobufs__MeasResultList2NR *node_5_4 = NULL;
1490         StreamingProtobufs__MeasResult2NR *node_5_5 = NULL;
1491         gs_uint32_t i_5_5;
1492         StreamingProtobufs__MeasResultNR *node_5_6 = NULL;
1493         StreamingProtobufs__MeasResult *node_5_7 = NULL;
1494         StreamingProtobufs__CellResults *node_5_8 = NULL;
1495         StreamingProtobufs__MeasQuantityResults *node_5_9 = NULL;
1496 // ------------------------------------------
1497 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1498         struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL;
1499         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_6_0 = NULL;
1500         StreamingProtobufs__CGConfig *node_6_1 = NULL;
1501         StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL;
1502         StreamingProtobufs__CGConfigIEs *node_6_3 = NULL;
1503         StreamingProtobufs__MeasResultList2NR *node_6_4 = NULL;
1504         StreamingProtobufs__MeasResult2NR *node_6_5 = NULL;
1505         gs_uint32_t i_6_5;
1506         StreamingProtobufs__MeasResultNR *node_6_6 = NULL;
1507         StreamingProtobufs__MeasResult *node_6_7 = NULL;
1508         StreamingProtobufs__RsIndexResults *node_6_8 = NULL;
1509         StreamingProtobufs__ResultsPerCSIRSIndexList *node_6_9 = NULL;
1510         StreamingProtobufs__ResultsPerCSIRSIndex *node_6_10 = NULL;
1511         gs_uint32_t i_6_10;
1512         StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL;
1513 // ------------------------------------------
1514 // ---  Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1515         struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL;
1516         StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_7_0 = NULL;
1517         StreamingProtobufs__CGConfig *node_7_1 = NULL;
1518         StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_7_2 = NULL;
1519         StreamingProtobufs__CGConfigIEs *node_7_3 = NULL;
1520         StreamingProtobufs__MeasResultList2NR *node_7_4 = NULL;
1521         StreamingProtobufs__MeasResult2NR *node_7_5 = NULL;
1522         gs_uint32_t i_7_5;
1523         StreamingProtobufs__MeasResultNR *node_7_6 = NULL;
1524         StreamingProtobufs__MeasResult *node_7_7 = NULL;
1525         StreamingProtobufs__RsIndexResults *node_7_8 = NULL;
1526         StreamingProtobufs__ResultsPerSSBIndexList *node_7_9 = NULL;
1527         StreamingProtobufs__ResultsPerSSBIndex *node_7_10 = NULL;
1528         gs_uint32_t i_7_10;
1529         StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
1530
1531 // --------------------------------------------------
1532 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1533
1534         eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values);
1535         cur_packet.schema = 501;
1536
1537         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1538         if(hdr==NULL) return -1;
1539
1540         node_0_0 = hdr->sgnbadditionrequestacknowledge;
1541         if(node_0_0==NULL) return -2;
1542         if(hdr->header==NULL) return -3;
1543
1544         ts_lo = hdr->header->timestamp & 0xffffffff;
1545         ts_hi = hdr->header->timestamp >> 32;
1546         eRABs_notadmitted_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1547         if(hdr->header->gnbid==NULL)
1548                 eRABs_notadmitted_for_ue->gnb_id = empty_string;
1549         else
1550                 eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value;
1551
1552         eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1553         eRABs_notadmitted_for_ue->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
1554         if(node_0_0->id_menb_ue_x2ap_id_extension){
1555                 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
1556         }else{
1557                 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1558         }
1559         node_0_1 = node_0_0->id_e_rabs_notadmitted_list;
1560         if(node_0_0->id_e_rabs_notadmitted_list){
1561                 for(i_0_2=0;i_0_2<node_0_1->n_items; i_0_2++){
1562                         node_0_2 = node_0_1->items[i_0_2];
1563                         node_0_3 = node_0_2->id_e_rab_item;
1564                         if(node_0_2->id_e_rab_item){
1565                                 eRABs_notadmitted_for_ue->e_RAB_ID = node_0_3->e_rab_id;
1566                                 if(node_0_3->cause && node_0_3->cause->transport){
1567                                         eRABs_notadmitted_for_ue->cause_transport = node_0_3->cause->transport->value;
1568                                 }else{
1569                                         eRABs_notadmitted_for_ue->cause_transport = -1;
1570                                 }
1571                                 if(node_0_3->cause && node_0_3->cause->protocol){
1572                                         eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value;
1573                                 }else{
1574                                         eRABs_notadmitted_for_ue->cause_protocol = -1;
1575                                 }
1576                                 if(node_0_3->cause && node_0_3->cause->misc){
1577                                         eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value;
1578                                 }else{
1579                                         eRABs_notadmitted_for_ue->cause_misc = -1;
1580                                 }
1581                                 if(node_0_3->cause && node_0_3->cause->radionetwork){
1582                                         eRABs_notadmitted_for_ue->cause_radio_network = node_0_3->cause->radionetwork->value;
1583                                 }else{
1584                                         eRABs_notadmitted_for_ue->cause_radio_network = -1;
1585                                 }
1586                                 rts_fta_process_packet(&cur_packet);
1587                         }
1588                 }
1589         }
1590 // --------------------------------------------------
1591 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1592
1593         add_req_ack_cellid = (struct _add_req_ack_cellid *)(cur_packet.record.packed.values);
1594         cur_packet.schema = 10000;
1595         node_1_0 = node_0_0;
1596         ts_lo = hdr->header->timestamp & 0xffffffff;
1597         ts_hi = hdr->header->timestamp >> 32;
1598         add_req_ack_cellid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1599         if(hdr->header->gnbid==NULL)
1600                 add_req_ack_cellid->gnb_id = empty_string;
1601         else
1602                 add_req_ack_cellid->gnb_id = hdr->header->gnbid->value;
1603
1604         add_req_ack_cellid->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
1605         add_req_ack_cellid->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
1606         if(node_1_0->id_menb_ue_x2ap_id_extension){
1607                 add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
1608         }else{
1609                 add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = 0;
1610         }
1611         node_1_1 = node_1_0->id_sgnbtomenbcontainer;
1612         if(node_1_0->id_sgnbtomenbcontainer){
1613                 node_1_2 = node_1_1->criticalextensionschoice1;
1614                 if(node_1_1->criticalextensionschoice1){
1615                         node_1_3 = node_1_2->protocolies;
1616                         if(node_1_2->protocolies){
1617                                 node_1_4 = node_1_3->scg_cellgroupconfig;
1618                                 if(node_1_3->scg_cellgroupconfig){
1619                                         node_1_5 = node_1_4->rrcreconfiguration;
1620                                         if(node_1_4->rrcreconfiguration){
1621                                                 node_1_6 = node_1_5->secondarycellgroup;
1622                                                 if(node_1_5->secondarycellgroup){
1623                                                         node_1_7 = node_1_6->spcellconfig;
1624                                                         if(node_1_6->spcellconfig){
1625                                                                 node_1_8 = node_1_7->reconfigurationwithsync;
1626                                                                 if(node_1_7->reconfigurationwithsync){
1627                                                                         node_1_9 = node_1_8->spcellconfigcommon;
1628                                                                         if(node_1_8->spcellconfigcommon){
1629                                                                                 if(node_1_9->physcellid){
1630                                                                                         add_req_ack_cellid->physCellId = node_1_9->physcellid->value;
1631                                                                                         add_req_ack_cellid->physCellId_exists = 1;
1632                                                                                 }else{
1633                                                                                         add_req_ack_cellid->physCellId_exists = 0;
1634                                                                                 }
1635                                                                                 rts_fta_process_packet(&cur_packet);
1636                                                                         }
1637                                                                 }
1638                                                         }
1639                                                 }
1640                                         }
1641                                 }
1642                         }
1643                 }
1644         }
1645 // --------------------------------------------------
1646 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1647
1648         eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values);
1649         cur_packet.schema = 502;
1650         node_2_0 = node_1_0;
1651         ts_lo = hdr->header->timestamp & 0xffffffff;
1652         ts_hi = hdr->header->timestamp >> 32;
1653         eRABs_acked_for_admit_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1654         if(hdr->header->gnbid==NULL)
1655                 eRABs_acked_for_admit_for_ue->gnb_id = empty_string;
1656         else
1657                 eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value;
1658
1659         eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
1660         eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
1661         if(node_2_0->id_menb_ue_x2ap_id_extension){
1662                 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
1663         }else{
1664                 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1665         }
1666         node_2_1 = node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist;
1667         if(node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){
1668                 for(i_2_2=0;i_2_2<node_2_1->n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_2_2++){
1669                         node_2_2 = node_2_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_2_2];
1670                         if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority){
1671                                 eRABs_acked_for_admit_for_ue->ARP = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
1672                         }else{
1673                                 eRABs_acked_for_admit_for_ue->ARP = 0;
1674                         }
1675                         if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1676                                 eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid;
1677                                 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1;
1678                         }else{
1679                                 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0;
1680                         }
1681                         if(node_2_2->en_dc_resourceconfiguration){
1682                                 eRABs_acked_for_admit_for_ue->mCGresources = node_2_2->en_dc_resourceconfiguration->mcgresources;
1683                                 eRABs_acked_for_admit_for_ue->mCGresources_exists = 1;
1684                         }else{
1685                                 eRABs_acked_for_admit_for_ue->mCGresources_exists = 0;
1686                         }
1687                         if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1688                                 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress;
1689                                 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1;
1690                         }else{
1691                                 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0;
1692                         }
1693                         if(node_2_2->en_dc_resourceconfiguration){
1694                                 eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_2_2->en_dc_resourceconfiguration->pdcpatsgnb;
1695                                 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1;
1696                         }else{
1697                                 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0;
1698                         }
1699                         if(node_2_2->en_dc_resourceconfiguration){
1700                                 eRABs_acked_for_admit_for_ue->sCGresources = node_2_2->en_dc_resourceconfiguration->scgresources;
1701                                 eRABs_acked_for_admit_for_ue->sCGresources_exists = 1;
1702                         }else{
1703                                 eRABs_acked_for_admit_for_ue->sCGresources_exists = 0;
1704                         }
1705                         eRABs_acked_for_admit_for_ue->e_RAB_ID = node_2_2->e_rab_id;
1706                         if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){
1707                                 eRABs_acked_for_admit_for_ue->qCI = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci;
1708                         }else{
1709                                 eRABs_acked_for_admit_for_ue->qCI = 0;
1710                         }
1711                         rts_fta_process_packet(&cur_packet);
1712                 }
1713         }
1714 // --------------------------------------------------
1715 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1716
1717         SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values);
1718         cur_packet.schema = 503;
1719         node_3_0 = node_2_0;
1720         ts_lo = hdr->header->timestamp & 0xffffffff;
1721         ts_hi = hdr->header->timestamp >> 32;
1722         SgNB_ack_for_ue_NRfreqs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1723         if(hdr->header->gnbid==NULL)
1724                 SgNB_ack_for_ue_NRfreqs->gnb_id = empty_string;
1725         else
1726                 SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value;
1727
1728         SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id;
1729         SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id;
1730         if(node_3_0->id_menb_ue_x2ap_id_extension){
1731                 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value;
1732         }else{
1733                 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0;
1734         }
1735         node_3_1 = node_3_0->id_sgnbtomenbcontainer;
1736         if(node_3_0->id_sgnbtomenbcontainer){
1737                 node_3_2 = node_3_1->criticalextensionschoice1;
1738                 if(node_3_1->criticalextensionschoice1){
1739                         node_3_3 = node_3_2->protocolies;
1740                         if(node_3_2->protocolies){
1741                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 0 && node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){
1742                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value;
1743                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1;
1744                                 }else{
1745                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0;
1746                                 }
1747                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 1 && node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){
1748                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value;
1749                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1;
1750                                 }else{
1751                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0;
1752                                 }
1753                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 2 && node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){
1754                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value;
1755                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1;
1756                                 }else{
1757                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0;
1758                                 }
1759                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 3 && node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){
1760                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value;
1761                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1;
1762                                 }else{
1763                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0;
1764                                 }
1765                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 4 && node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){
1766                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value;
1767                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1;
1768                                 }else{
1769                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0;
1770                                 }
1771                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 5 && node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){
1772                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value;
1773                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1;
1774                                 }else{
1775                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0;
1776                                 }
1777                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 6 && node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){
1778                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value;
1779                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1;
1780                                 }else{
1781                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0;
1782                                 }
1783                                 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 7 && node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){
1784                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value;
1785                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1;
1786                                 }else{
1787                                         SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0;
1788                                 }
1789                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 0){
1790                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_3_3->candidateservingfreqlistnr->items[0];
1791                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1;
1792                                 }else{
1793                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0;
1794                                 }
1795                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 1){
1796                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_3_3->candidateservingfreqlistnr->items[1];
1797                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1;
1798                                 }else{
1799                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0;
1800                                 }
1801                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 2){
1802                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_3_3->candidateservingfreqlistnr->items[2];
1803                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1;
1804                                 }else{
1805                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0;
1806                                 }
1807                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 3){
1808                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_3_3->candidateservingfreqlistnr->items[3];
1809                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1;
1810                                 }else{
1811                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0;
1812                                 }
1813                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 4){
1814                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_3_3->candidateservingfreqlistnr->items[4];
1815                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1;
1816                                 }else{
1817                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0;
1818                                 }
1819                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 5){
1820                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_3_3->candidateservingfreqlistnr->items[5];
1821                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1;
1822                                 }else{
1823                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0;
1824                                 }
1825                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 6){
1826                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_3_3->candidateservingfreqlistnr->items[6];
1827                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1;
1828                                 }else{
1829                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0;
1830                                 }
1831                                 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 7){
1832                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_3_3->candidateservingfreqlistnr->items[7];
1833                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1;
1834                                 }else{
1835                                         SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0;
1836                                 }
1837                                 rts_fta_process_packet(&cur_packet);
1838                         }
1839                 }
1840         }
1841 // --------------------------------------------------
1842 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1843
1844         SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values);
1845         cur_packet.schema = 504;
1846         node_4_0 = node_3_0;
1847         ts_lo = hdr->header->timestamp & 0xffffffff;
1848         ts_hi = hdr->header->timestamp >> 32;
1849         SgNB_ack_for_add_mod_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1850         if(hdr->header->gnbid==NULL)
1851                 SgNB_ack_for_add_mod_for_ue->gnb_id = empty_string;
1852         else
1853                 SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value;
1854
1855         SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id;
1856         SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id;
1857         if(node_4_0->id_menb_ue_x2ap_id_extension){
1858                 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value;
1859         }else{
1860                 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1861         }
1862         node_4_1 = node_4_0->id_sgnbtomenbcontainer;
1863         if(node_4_0->id_sgnbtomenbcontainer){
1864                 node_4_2 = node_4_1->criticalextensionschoice1;
1865                 if(node_4_1->criticalextensionschoice1){
1866                         node_4_3 = node_4_2->protocolies;
1867                         if(node_4_2->protocolies){
1868                                 node_4_4 = node_4_3->scg_rb_config;
1869                                 if(node_4_3->scg_rb_config){
1870                                         if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 0){
1871                                                 SgNB_ack_for_add_mod_for_ue->toRelease0 = node_4_4->drb_toreleaselist->items[0];
1872                                                 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1;
1873                                         }else{
1874                                                 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0;
1875                                         }
1876                                         if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 1){
1877                                                 SgNB_ack_for_add_mod_for_ue->toRelease1 = node_4_4->drb_toreleaselist->items[1];
1878                                                 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1;
1879                                         }else{
1880                                                 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0;
1881                                         }
1882                                         if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 2){
1883                                                 SgNB_ack_for_add_mod_for_ue->toRelease2 = node_4_4->drb_toreleaselist->items[2];
1884                                                 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1;
1885                                         }else{
1886                                                 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0;
1887                                         }
1888                                         if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 3){
1889                                                 SgNB_ack_for_add_mod_for_ue->toRelease3 = node_4_4->drb_toreleaselist->items[3];
1890                                                 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1;
1891                                         }else{
1892                                                 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0;
1893                                         }
1894                                         node_4_5 = node_4_4->drb_toaddmodlist;
1895                                         if(node_4_4->drb_toaddmodlist){
1896                                                 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
1897                                                         node_4_6 = node_4_5->items[i_4_6];
1898                                                         if(node_4_6->recoverpdcp){
1899                                                                 SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_4_6->recoverpdcp->value;
1900                                                                 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1;
1901                                                         }else{
1902                                                                 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0;
1903                                                         }
1904                                                         if(node_4_6->reestablishpdcp){
1905                                                                 SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_4_6->reestablishpdcp->value;
1906                                                                 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1;
1907                                                         }else{
1908                                                                 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0;
1909                                                         }
1910                                                         SgNB_ack_for_add_mod_for_ue->drb_Identity = node_4_6->drb_identity;
1911                                                         SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_4_6->eps_beareridentity;
1912                                                         rts_fta_process_packet(&cur_packet);
1913                                                 }
1914                                         }
1915                                 }
1916                         }
1917                 }
1918         }
1919 // --------------------------------------------------
1920 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1921
1922         SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values);
1923         cur_packet.schema = 505;
1924         node_5_0 = node_4_0;
1925         ts_lo = hdr->header->timestamp & 0xffffffff;
1926         ts_hi = hdr->header->timestamp >> 32;
1927         SgNB_ack_for_ue_measurements->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1928         if(hdr->header->gnbid==NULL)
1929                 SgNB_ack_for_ue_measurements->gnb_id = empty_string;
1930         else
1931                 SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value;
1932
1933         SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id;
1934         SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id;
1935         if(node_5_0->id_menb_ue_x2ap_id_extension){
1936                 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value;
1937         }else{
1938                 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0;
1939         }
1940         node_5_1 = node_5_0->id_sgnbtomenbcontainer;
1941         if(node_5_0->id_sgnbtomenbcontainer){
1942                 node_5_2 = node_5_1->criticalextensionschoice1;
1943                 if(node_5_1->criticalextensionschoice1){
1944                         node_5_3 = node_5_2->protocolies;
1945                         if(node_5_2->protocolies){
1946                                 node_5_4 = node_5_3->candidatecellinfolistsn;
1947                                 if(node_5_3->candidatecellinfolistsn){
1948                                         for(i_5_5=0;i_5_5<node_5_4->n_items; i_5_5++){
1949                                                 node_5_5 = node_5_4->items[i_5_5];
1950                                                 if(node_5_5->ssbfrequency){
1951                                                         SgNB_ack_for_ue_measurements->ssbFrequency = node_5_5->ssbfrequency->value;
1952                                                         SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1;
1953                                                 }else{
1954                                                         SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0;
1955                                                 }
1956                                                 if(node_5_5->reffreqcsi_rs){
1957                                                         SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value;
1958                                                         SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1;
1959                                                 }else{
1960                                                         SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0;
1961                                                 }
1962                                                 node_5_6 = node_5_5->measresultservingcell;
1963                                                 if(node_5_5->measresultservingcell){
1964                                                         if(node_5_6->physcellid){
1965                                                                 SgNB_ack_for_ue_measurements->physCellId = node_5_6->physcellid->value;
1966                                                                 SgNB_ack_for_ue_measurements->physCellId_exists = 1;
1967                                                         }else{
1968                                                                 SgNB_ack_for_ue_measurements->physCellId_exists = 0;
1969                                                         }
1970                                                         node_5_7 = node_5_6->measresult;
1971                                                         if(node_5_6->measresult){
1972                                                                 node_5_8 = node_5_7->cellresults;
1973                                                                 if(node_5_7->cellresults){
1974                                                                         node_5_9 = node_5_8->resultscsi_rs_cell;
1975                                                                         if(node_5_8->resultscsi_rs_cell){
1976                                                                                 if(node_5_9->rsrq){
1977                                                                                         SgNB_ack_for_ue_measurements->rsrq = node_5_9->rsrq->value;
1978                                                                                         SgNB_ack_for_ue_measurements->rsrq_exists = 1;
1979                                                                                 }else{
1980                                                                                         SgNB_ack_for_ue_measurements->rsrq_exists = 0;
1981                                                                                 }
1982                                                                                 if(node_5_9->rsrp){
1983                                                                                         SgNB_ack_for_ue_measurements->rsrp = node_5_9->rsrp->value;
1984                                                                                         SgNB_ack_for_ue_measurements->rsrp_exists = 1;
1985                                                                                 }else{
1986                                                                                         SgNB_ack_for_ue_measurements->rsrp_exists = 0;
1987                                                                                 }
1988                                                                                 if(node_5_9->sinr){
1989                                                                                         SgNB_ack_for_ue_measurements->sinr = node_5_9->sinr->value;
1990                                                                                         SgNB_ack_for_ue_measurements->sinr_exists = 1;
1991                                                                                 }else{
1992                                                                                         SgNB_ack_for_ue_measurements->sinr_exists = 0;
1993                                                                                 }
1994                                                                                 rts_fta_process_packet(&cur_packet);
1995                                                                         }
1996                                                                 }
1997                                                         }
1998                                                 }
1999                                         }
2000                                 }
2001                         }
2002                 }
2003         }
2004 // --------------------------------------------------
2005 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2006
2007         SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values);
2008         cur_packet.schema = 506;
2009         node_6_0 = node_5_0;
2010         ts_lo = hdr->header->timestamp & 0xffffffff;
2011         ts_hi = hdr->header->timestamp >> 32;
2012         SgNB_ack_for_ue_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2013         if(hdr->header->gnbid==NULL)
2014                 SgNB_ack_for_ue_beam_csi->gnb_id = empty_string;
2015         else
2016                 SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value;
2017
2018         SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id;
2019         SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id;
2020         if(node_6_0->id_menb_ue_x2ap_id_extension){
2021                 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value;
2022         }else{
2023                 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0;
2024         }
2025         node_6_1 = node_6_0->id_sgnbtomenbcontainer;
2026         if(node_6_0->id_sgnbtomenbcontainer){
2027                 node_6_2 = node_6_1->criticalextensionschoice1;
2028                 if(node_6_1->criticalextensionschoice1){
2029                         node_6_3 = node_6_2->protocolies;
2030                         if(node_6_2->protocolies){
2031                                 node_6_4 = node_6_3->candidatecellinfolistsn;
2032                                 if(node_6_3->candidatecellinfolistsn){
2033                                         for(i_6_5=0;i_6_5<node_6_4->n_items; i_6_5++){
2034                                                 node_6_5 = node_6_4->items[i_6_5];
2035                                                 if(node_6_5->ssbfrequency){
2036                                                         SgNB_ack_for_ue_beam_csi->ssbFrequency = node_6_5->ssbfrequency->value;
2037                                                         SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1;
2038                                                 }else{
2039                                                         SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0;
2040                                                 }
2041                                                 if(node_6_5->reffreqcsi_rs){
2042                                                         SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value;
2043                                                         SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1;
2044                                                 }else{
2045                                                         SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0;
2046                                                 }
2047                                                 node_6_6 = node_6_5->measresultservingcell;
2048                                                 if(node_6_5->measresultservingcell){
2049                                                         if(node_6_6->physcellid){
2050                                                                 SgNB_ack_for_ue_beam_csi->physCellId = node_6_6->physcellid->value;
2051                                                                 SgNB_ack_for_ue_beam_csi->physCellId_exists = 1;
2052                                                         }else{
2053                                                                 SgNB_ack_for_ue_beam_csi->physCellId_exists = 0;
2054                                                         }
2055                                                         node_6_7 = node_6_6->measresult;
2056                                                         if(node_6_6->measresult){
2057                                                                 node_6_8 = node_6_7->rsindexresults;
2058                                                                 if(node_6_7->rsindexresults){
2059                                                                         node_6_9 = node_6_8->resultscsi_rs_indexes;
2060                                                                         if(node_6_8->resultscsi_rs_indexes){
2061                                                                                 for(i_6_10=0;i_6_10<node_6_9->n_items; i_6_10++){
2062                                                                                         node_6_10 = node_6_9->items[i_6_10];
2063                                                                                         SgNB_ack_for_ue_beam_csi->csi_rs_index = node_6_10->csi_rs_index;
2064                                                                                         node_6_11 = node_6_10->csi_rs_results;
2065                                                                                         if(node_6_10->csi_rs_results){
2066                                                                                                 if(node_6_11->rsrq){
2067                                                                                                         SgNB_ack_for_ue_beam_csi->rsrq = node_6_11->rsrq->value;
2068                                                                                                         SgNB_ack_for_ue_beam_csi->rsrq_exists = 1;
2069                                                                                                 }else{
2070                                                                                                         SgNB_ack_for_ue_beam_csi->rsrq_exists = 0;
2071                                                                                                 }
2072                                                                                                 if(node_6_11->rsrp){
2073                                                                                                         SgNB_ack_for_ue_beam_csi->rsrp = node_6_11->rsrp->value;
2074                                                                                                         SgNB_ack_for_ue_beam_csi->rsrp_exists = 1;
2075                                                                                                 }else{
2076                                                                                                         SgNB_ack_for_ue_beam_csi->rsrp_exists = 0;
2077                                                                                                 }
2078                                                                                                 if(node_6_11->sinr){
2079                                                                                                         SgNB_ack_for_ue_beam_csi->sinr = node_6_11->sinr->value;
2080                                                                                                         SgNB_ack_for_ue_beam_csi->sinr_exists = 1;
2081                                                                                                 }else{
2082                                                                                                         SgNB_ack_for_ue_beam_csi->sinr_exists = 0;
2083                                                                                                 }
2084                                                                                                 rts_fta_process_packet(&cur_packet);
2085                                                                                         }
2086                                                                                 }
2087                                                                         }
2088                                                                 }
2089                                                         }
2090                                                 }
2091                                         }
2092                                 }
2093                         }
2094                 }
2095         }
2096 // --------------------------------------------------
2097 // ---  Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2098
2099         SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values);
2100         cur_packet.schema = 507;
2101         node_7_0 = node_6_0;
2102         ts_lo = hdr->header->timestamp & 0xffffffff;
2103         ts_hi = hdr->header->timestamp >> 32;
2104         SgNB_ack_for_ue_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2105         if(hdr->header->gnbid==NULL)
2106                 SgNB_ack_for_ue_beam_ssb->gnb_id = empty_string;
2107         else
2108                 SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value;
2109
2110         SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_7_0->id_menb_ue_x2ap_id;
2111         SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_7_0->id_sgnb_ue_x2ap_id;
2112         if(node_7_0->id_menb_ue_x2ap_id_extension){
2113                 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_0->id_menb_ue_x2ap_id_extension->value;
2114         }else{
2115                 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2116         }
2117         node_7_1 = node_7_0->id_sgnbtomenbcontainer;
2118         if(node_7_0->id_sgnbtomenbcontainer){
2119                 node_7_2 = node_7_1->criticalextensionschoice1;
2120                 if(node_7_1->criticalextensionschoice1){
2121                         node_7_3 = node_7_2->protocolies;
2122                         if(node_7_2->protocolies){
2123                                 node_7_4 = node_7_3->candidatecellinfolistsn;
2124                                 if(node_7_3->candidatecellinfolistsn){
2125                                         for(i_7_5=0;i_7_5<node_7_4->n_items; i_7_5++){
2126                                                 node_7_5 = node_7_4->items[i_7_5];
2127                                                 if(node_7_5->ssbfrequency){
2128                                                         SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_7_5->ssbfrequency->value;
2129                                                         SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1;
2130                                                 }else{
2131                                                         SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0;
2132                                                 }
2133                                                 if(node_7_5->reffreqcsi_rs){
2134                                                         SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_7_5->reffreqcsi_rs->value;
2135                                                         SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1;
2136                                                 }else{
2137                                                         SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0;
2138                                                 }
2139                                                 node_7_6 = node_7_5->measresultservingcell;
2140                                                 if(node_7_5->measresultservingcell){
2141                                                         if(node_7_6->physcellid){
2142                                                                 SgNB_ack_for_ue_beam_ssb->physCellId = node_7_6->physcellid->value;
2143                                                                 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1;
2144                                                         }else{
2145                                                                 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0;
2146                                                         }
2147                                                         node_7_7 = node_7_6->measresult;
2148                                                         if(node_7_6->measresult){
2149                                                                 node_7_8 = node_7_7->rsindexresults;
2150                                                                 if(node_7_7->rsindexresults){
2151                                                                         node_7_9 = node_7_8->resultsssb_indexes;
2152                                                                         if(node_7_8->resultsssb_indexes){
2153                                                                                 for(i_7_10=0;i_7_10<node_7_9->n_items; i_7_10++){
2154                                                                                         node_7_10 = node_7_9->items[i_7_10];
2155                                                                                         SgNB_ack_for_ue_beam_ssb->ssb_Index = node_7_10->ssb_index;
2156                                                                                         node_7_11 = node_7_10->ssb_results;
2157                                                                                         if(node_7_10->ssb_results){
2158                                                                                                 if(node_7_11->rsrq){
2159                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrq = node_7_11->rsrq->value;
2160                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1;
2161                                                                                                 }else{
2162                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0;
2163                                                                                                 }
2164                                                                                                 if(node_7_11->rsrp){
2165                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrp = node_7_11->rsrp->value;
2166                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1;
2167                                                                                                 }else{
2168                                                                                                         SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0;
2169                                                                                                 }
2170                                                                                                 if(node_7_11->sinr){
2171                                                                                                         SgNB_ack_for_ue_beam_ssb->sinr = node_7_11->sinr->value;
2172                                                                                                         SgNB_ack_for_ue_beam_ssb->sinr_exists = 1;
2173                                                                                                 }else{
2174                                                                                                         SgNB_ack_for_ue_beam_ssb->sinr_exists = 0;
2175                                                                                                 }
2176                                                                                                 rts_fta_process_packet(&cur_packet);
2177                                                                                         }
2178                                                                                 }
2179                                                                         }
2180                                                                 }
2181                                                         }
2182                                                 }
2183                                         }
2184                                 }
2185                         }
2186                 }
2187         }
2188         streaming_protobufs__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL);
2189         return 0;
2190 }
2191
2192 gs_uint32_t process_buffer_SGNB_ADDITION_REQ(gs_uint8_t * buffer, gs_uint32_t buflen){
2193         char *empty_string = "";
2194 unsigned long long int ts_lo, ts_hi;
2195         StreamingProtobufs__X2APStreaming *hdr = NULL;
2196 // ------------------------------------------
2197 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2198         struct _sgnb_addreq_gtp_teid *sgnb_addreq_gtp_teid = NULL;
2199         StreamingProtobufs__SgNBAdditionRequest *node_0_0 = NULL;
2200         StreamingProtobufs__SgNBAdditionRequestIEs *node_0_1 = NULL;
2201         StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_0_2 = NULL;
2202         StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_0_3 = NULL;
2203         gs_uint32_t i_0_3;
2204         StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_0_4 = NULL;
2205         StreamingProtobufs__ERABsToBeAddedSgNBAddReqSgNBPDCPpresent *node_0_5 = NULL;
2206         StreamingProtobufs__GTPtunnelEndpoint *node_0_6 = NULL;
2207 // ------------------------------------------
2208 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2209         struct _sgnb_addreq_for_ue *sgnb_addreq_for_ue = NULL;
2210         StreamingProtobufs__SgNBAdditionRequest *node_1_0 = NULL;
2211         StreamingProtobufs__SgNBAdditionRequestIEs *node_1_1 = NULL;
2212         StreamingProtobufs__ECGI *node_1_2 = NULL;
2213 // ------------------------------------------
2214 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2215         struct _sgnb_addreq_for_ue_bearers *sgnb_addreq_for_ue_bearers = NULL;
2216         StreamingProtobufs__SgNBAdditionRequest *node_2_0 = NULL;
2217         StreamingProtobufs__SgNBAdditionRequestIEs *node_2_1 = NULL;
2218         StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_2_2 = NULL;
2219         StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_2_3 = NULL;
2220         gs_uint32_t i_2_3;
2221         StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_2_4 = NULL;
2222 // ------------------------------------------
2223 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2224         struct _sgnb_addreq_for_ue_sn_serv_ssb *sgnb_addreq_for_ue_sn_serv_ssb = NULL;
2225         StreamingProtobufs__SgNBAdditionRequest *node_3_0 = NULL;
2226         StreamingProtobufs__SgNBAdditionRequestIEs *node_3_1 = NULL;
2227         StreamingProtobufs__CGConfigInfo *node_3_2 = NULL;
2228         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_3_3 = NULL;
2229         StreamingProtobufs__CGConfigInfoIEs *node_3_4 = NULL;
2230         StreamingProtobufs__MeasResultList2NR *node_3_5 = NULL;
2231         StreamingProtobufs__MeasResult2NR *node_3_6 = NULL;
2232         gs_uint32_t i_3_6;
2233         StreamingProtobufs__MeasResultNR *node_3_7 = NULL;
2234         StreamingProtobufs__MeasResult *node_3_8 = NULL;
2235         StreamingProtobufs__CellResults *node_3_9 = NULL;
2236         StreamingProtobufs__MeasQuantityResults *node_3_10 = NULL;
2237 // ------------------------------------------
2238 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2239         struct _sgnb_addreq_for_ue_sn_serv_csi_rs *sgnb_addreq_for_ue_sn_serv_csi_rs = NULL;
2240         StreamingProtobufs__SgNBAdditionRequest *node_4_0 = NULL;
2241         StreamingProtobufs__SgNBAdditionRequestIEs *node_4_1 = NULL;
2242         StreamingProtobufs__CGConfigInfo *node_4_2 = NULL;
2243         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_4_3 = NULL;
2244         StreamingProtobufs__CGConfigInfoIEs *node_4_4 = NULL;
2245         StreamingProtobufs__MeasResultList2NR *node_4_5 = NULL;
2246         StreamingProtobufs__MeasResult2NR *node_4_6 = NULL;
2247         gs_uint32_t i_4_6;
2248         StreamingProtobufs__MeasResultNR *node_4_7 = NULL;
2249         StreamingProtobufs__MeasResult *node_4_8 = NULL;
2250         StreamingProtobufs__CellResults *node_4_9 = NULL;
2251         StreamingProtobufs__MeasQuantityResults *node_4_10 = NULL;
2252 // ------------------------------------------
2253 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2254         struct _sgnb_addreq_for_ue_mn_serv_ssb *sgnb_addreq_for_ue_mn_serv_ssb = NULL;
2255         StreamingProtobufs__SgNBAdditionRequest *node_5_0 = NULL;
2256         StreamingProtobufs__SgNBAdditionRequestIEs *node_5_1 = NULL;
2257         StreamingProtobufs__CGConfigInfo *node_5_2 = NULL;
2258         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_5_3 = NULL;
2259         StreamingProtobufs__CGConfigInfoIEs *node_5_4 = NULL;
2260         StreamingProtobufs__MeasResultList2NR *node_5_5 = NULL;
2261         StreamingProtobufs__MeasResult2NR *node_5_6 = NULL;
2262         gs_uint32_t i_5_6;
2263         StreamingProtobufs__MeasResultNR *node_5_7 = NULL;
2264         StreamingProtobufs__MeasResult *node_5_8 = NULL;
2265         StreamingProtobufs__CellResults *node_5_9 = NULL;
2266         StreamingProtobufs__MeasQuantityResults *node_5_10 = NULL;
2267 // ------------------------------------------
2268 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2269         struct _sgnb_addreq_for_ue_mn_serv_csi_rs *sgnb_addreq_for_ue_mn_serv_csi_rs = NULL;
2270         StreamingProtobufs__SgNBAdditionRequest *node_6_0 = NULL;
2271         StreamingProtobufs__SgNBAdditionRequestIEs *node_6_1 = NULL;
2272         StreamingProtobufs__CGConfigInfo *node_6_2 = NULL;
2273         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_6_3 = NULL;
2274         StreamingProtobufs__CGConfigInfoIEs *node_6_4 = NULL;
2275         StreamingProtobufs__MeasResultList2NR *node_6_5 = NULL;
2276         StreamingProtobufs__MeasResult2NR *node_6_6 = NULL;
2277         gs_uint32_t i_6_6;
2278         StreamingProtobufs__MeasResultNR *node_6_7 = NULL;
2279         StreamingProtobufs__MeasResult *node_6_8 = NULL;
2280         StreamingProtobufs__CellResults *node_6_9 = NULL;
2281         StreamingProtobufs__MeasQuantityResults *node_6_10 = NULL;
2282 // ------------------------------------------
2283 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2284         struct _sgnb_addreq_for_ue_sn_neigh_ssb *sgnb_addreq_for_ue_sn_neigh_ssb = NULL;
2285         StreamingProtobufs__SgNBAdditionRequest *node_7_0 = NULL;
2286         StreamingProtobufs__SgNBAdditionRequestIEs *node_7_1 = NULL;
2287         StreamingProtobufs__CGConfigInfo *node_7_2 = NULL;
2288         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_7_3 = NULL;
2289         StreamingProtobufs__CGConfigInfoIEs *node_7_4 = NULL;
2290         StreamingProtobufs__MeasResultList2NR *node_7_5 = NULL;
2291         StreamingProtobufs__MeasResult2NR *node_7_6 = NULL;
2292         gs_uint32_t i_7_6;
2293         StreamingProtobufs__MeasResultListNR *node_7_7 = NULL;
2294         StreamingProtobufs__MeasResultNR *node_7_8 = NULL;
2295         gs_uint32_t i_7_8;
2296         StreamingProtobufs__MeasResult *node_7_9 = NULL;
2297         StreamingProtobufs__CellResults *node_7_10 = NULL;
2298         StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
2299 // ------------------------------------------
2300 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2301         struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *sgnb_addreq_for_ue_sn_neigh_csi_rs = NULL;
2302         StreamingProtobufs__SgNBAdditionRequest *node_8_0 = NULL;
2303         StreamingProtobufs__SgNBAdditionRequestIEs *node_8_1 = NULL;
2304         StreamingProtobufs__CGConfigInfo *node_8_2 = NULL;
2305         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_8_3 = NULL;
2306         StreamingProtobufs__CGConfigInfoIEs *node_8_4 = NULL;
2307         StreamingProtobufs__MeasResultList2NR *node_8_5 = NULL;
2308         StreamingProtobufs__MeasResult2NR *node_8_6 = NULL;
2309         gs_uint32_t i_8_6;
2310         StreamingProtobufs__MeasResultListNR *node_8_7 = NULL;
2311         StreamingProtobufs__MeasResultNR *node_8_8 = NULL;
2312         gs_uint32_t i_8_8;
2313         StreamingProtobufs__MeasResult *node_8_9 = NULL;
2314         StreamingProtobufs__CellResults *node_8_10 = NULL;
2315         StreamingProtobufs__MeasQuantityResults *node_8_11 = NULL;
2316 // ------------------------------------------
2317 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2318         struct _sgnb_addreq_for_ue_mn_neigh_ssb *sgnb_addreq_for_ue_mn_neigh_ssb = NULL;
2319         StreamingProtobufs__SgNBAdditionRequest *node_9_0 = NULL;
2320         StreamingProtobufs__SgNBAdditionRequestIEs *node_9_1 = NULL;
2321         StreamingProtobufs__CGConfigInfo *node_9_2 = NULL;
2322         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_9_3 = NULL;
2323         StreamingProtobufs__CGConfigInfoIEs *node_9_4 = NULL;
2324         StreamingProtobufs__MeasResultList2NR *node_9_5 = NULL;
2325         StreamingProtobufs__MeasResult2NR *node_9_6 = NULL;
2326         gs_uint32_t i_9_6;
2327         StreamingProtobufs__MeasResultListNR *node_9_7 = NULL;
2328         StreamingProtobufs__MeasResultNR *node_9_8 = NULL;
2329         gs_uint32_t i_9_8;
2330         StreamingProtobufs__MeasResult *node_9_9 = NULL;
2331         StreamingProtobufs__CellResults *node_9_10 = NULL;
2332         StreamingProtobufs__MeasQuantityResults *node_9_11 = NULL;
2333 // ------------------------------------------
2334 // ---  Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2335         struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *sgnb_addreq_for_ue_mn_neigh_csi_rs = NULL;
2336         StreamingProtobufs__SgNBAdditionRequest *node_10_0 = NULL;
2337         StreamingProtobufs__SgNBAdditionRequestIEs *node_10_1 = NULL;
2338         StreamingProtobufs__CGConfigInfo *node_10_2 = NULL;
2339         StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_10_3 = NULL;
2340         StreamingProtobufs__CGConfigInfoIEs *node_10_4 = NULL;
2341         StreamingProtobufs__MeasResultList2NR *node_10_5 = NULL;
2342         StreamingProtobufs__MeasResult2NR *node_10_6 = NULL;
2343         gs_uint32_t i_10_6;
2344         StreamingProtobufs__MeasResultListNR *node_10_7 = NULL;
2345         StreamingProtobufs__MeasResultNR *node_10_8 = NULL;
2346         gs_uint32_t i_10_8;
2347         StreamingProtobufs__MeasResult *node_10_9 = NULL;
2348         StreamingProtobufs__CellResults *node_10_10 = NULL;
2349         StreamingProtobufs__MeasQuantityResults *node_10_11 = NULL;
2350
2351 // --------------------------------------------------
2352 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2353
2354         sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values);
2355         cur_packet.schema = 10001;
2356
2357         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
2358         if(hdr==NULL) return -1;
2359
2360         node_0_0 = hdr->sgnbadditionrequest;
2361         if(node_0_0==NULL) return -2;
2362         if(hdr->header==NULL) return -3;
2363
2364         ts_lo = hdr->header->timestamp & 0xffffffff;
2365         ts_hi = hdr->header->timestamp >> 32;
2366         sgnb_addreq_gtp_teid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2367         if(hdr->header->gnbid==NULL)
2368                 sgnb_addreq_gtp_teid->gnb_id = empty_string;
2369         else
2370                 sgnb_addreq_gtp_teid->gnb_id = hdr->header->gnbid->value;
2371
2372         node_0_1 = node_0_0->protocolies;
2373         if(node_0_0->protocolies){
2374                 sgnb_addreq_gtp_teid->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
2375                 node_0_2 = node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2376                 if(node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2377                         for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
2378                                 node_0_3 = node_0_2->items[i_0_3];
2379                                 node_0_4 = node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2380                                 if(node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2381                                         node_0_5 = node_0_4->sgnbpdcppresent;
2382                                         if(node_0_4->sgnbpdcppresent){
2383                                                 node_0_6 = node_0_5->s1_ul_gtptunnelendpoint;
2384                                                 if(node_0_5->s1_ul_gtptunnelendpoint){
2385                                                         sgnb_addreq_gtp_teid->gTP_TEID = node_0_6->gtp_teid;
2386                                                         sgnb_addreq_gtp_teid->transportLayerAddress = node_0_6->transportlayeraddress;
2387                                                         rts_fta_process_packet(&cur_packet);
2388                                                 }
2389                                         }
2390                                 }
2391                         }
2392                 }
2393         }
2394 // --------------------------------------------------
2395 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2396
2397         sgnb_addreq_for_ue = (struct _sgnb_addreq_for_ue *)(cur_packet.record.packed.values);
2398         cur_packet.schema = 401;
2399         node_1_0 = node_0_0;
2400         ts_lo = hdr->header->timestamp & 0xffffffff;
2401         ts_hi = hdr->header->timestamp >> 32;
2402         sgnb_addreq_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2403         if(hdr->header->gnbid==NULL)
2404                 sgnb_addreq_for_ue->gnb_id = empty_string;
2405         else
2406                 sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value;
2407
2408         node_1_1 = node_1_0->protocolies;
2409         if(node_1_0->protocolies){
2410                 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
2411                 if(node_1_1->id_sgnbueaggregatemaximumbitrate){
2412                         sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink = node_1_1->id_sgnbueaggregatemaximumbitrate->ueaggregatemaximumbitratedownlink;
2413                         sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 1;
2414                 }else{
2415                         sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0;
2416                 }
2417                 if(node_1_1->id_menb_ue_x2ap_id_extension){
2418                         sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
2419                 }else{
2420                         sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
2421                 }
2422                 node_1_2 = node_1_1->id_menbcell_id;
2423                 if(node_1_1->id_menbcell_id){
2424                         sgnb_addreq_for_ue->eUTRANcellIdentifier = node_1_2->eutrancellidentifier;
2425                         sgnb_addreq_for_ue->pLMN_Identity = node_1_2->plmn_identity;
2426                         rts_fta_process_packet(&cur_packet);
2427                 }
2428         }
2429 // --------------------------------------------------
2430 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2431
2432         sgnb_addreq_for_ue_bearers = (struct _sgnb_addreq_for_ue_bearers *)(cur_packet.record.packed.values);
2433         cur_packet.schema = 402;
2434         node_2_0 = node_1_0;
2435         ts_lo = hdr->header->timestamp & 0xffffffff;
2436         ts_hi = hdr->header->timestamp >> 32;
2437         sgnb_addreq_for_ue_bearers->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2438         if(hdr->header->gnbid==NULL)
2439                 sgnb_addreq_for_ue_bearers->gnb_id = empty_string;
2440         else
2441                 sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value;
2442
2443         node_2_1 = node_2_0->protocolies;
2444         if(node_2_0->protocolies){
2445                 sgnb_addreq_for_ue_bearers->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
2446                 node_2_2 = node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2447                 if(node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2448                         for(i_2_3=0;i_2_3<node_2_2->n_items; i_2_3++){
2449                                 node_2_3 = node_2_2->items[i_2_3];
2450                                 node_2_4 = node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2451                                 if(node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2452                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2453                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitratedl;
2454                                         }else{
2455                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0;
2456                                         }
2457                                         if(node_2_4->en_dc_resourceconfiguration){
2458                                                 sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_2_4->en_dc_resourceconfiguration->pdcpatsgnb;
2459                                         }else{
2460                                                 sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1;
2461                                         }
2462                                         sgnb_addreq_for_ue_bearers->drb_ID = node_2_4->drb_id;
2463                                         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){
2464                                                 sgnb_addreq_for_ue_bearers->priorityLevel = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
2465                                         }else{
2466                                                 sgnb_addreq_for_ue_bearers->priorityLevel = 0;
2467                                         }
2468                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2469                                                 sgnb_addreq_for_ue_bearers->gTP_TEID = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->gtp_teid;
2470                                         }else{
2471                                                 sgnb_addreq_for_ue_bearers->gTP_TEID.data = "";
2472                                                 sgnb_addreq_for_ue_bearers->gTP_TEID.len = 1;
2473                                         }
2474                                         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){
2475                                                 sgnb_addreq_for_ue_bearers->pre_emptionCapability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability->value;
2476                                         }else{
2477                                                 sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1;
2478                                         }
2479                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2480                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitrateul;
2481                                         }else{
2482                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0;
2483                                         }
2484                                         if(node_2_4->en_dc_resourceconfiguration){
2485                                                 sgnb_addreq_for_ue_bearers->mCGresources = node_2_4->en_dc_resourceconfiguration->mcgresources;
2486                                         }else{
2487                                                 sgnb_addreq_for_ue_bearers->mCGresources = -1;
2488                                         }
2489                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2490                                                 sgnb_addreq_for_ue_bearers->transportLayerAddress = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->transportlayeraddress;
2491                                         }else{
2492                                                 sgnb_addreq_for_ue_bearers->transportLayerAddress.data = "";
2493                                                 sgnb_addreq_for_ue_bearers->transportLayerAddress.len = 1;
2494                                         }
2495                                         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){
2496                                                 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitrateul;
2497                                         }else{
2498                                                 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0;
2499                                         }
2500                                         if(node_2_4->en_dc_resourceconfiguration){
2501                                                 sgnb_addreq_for_ue_bearers->sCGresources = node_2_4->en_dc_resourceconfiguration->scgresources;
2502                                         }else{
2503                                                 sgnb_addreq_for_ue_bearers->sCGresources = -1;
2504                                         }
2505                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2506                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitrateul;
2507                                         }else{
2508                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0;
2509                                         }
2510                                         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){
2511                                                 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitrateul;
2512                                         }else{
2513                                                 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0;
2514                                         }
2515                                         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){
2516                                                 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability->value;
2517                                         }else{
2518                                                 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1;
2519                                         }
2520                                         sgnb_addreq_for_ue_bearers->e_RAB_ID = node_2_4->e_rab_id;
2521                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2522                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitratedl;
2523                                         }else{
2524                                                 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0;
2525                                         }
2526                                         if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters){
2527                                                 sgnb_addreq_for_ue_bearers->qCI = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->qci;
2528                                         }else{
2529                                                 sgnb_addreq_for_ue_bearers->qCI = 0;
2530                                         }
2531                                         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){
2532                                                 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitratedl;
2533                                         }else{
2534                                                 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0;
2535                                         }
2536                                         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){
2537                                                 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitratedl;
2538                                         }else{
2539                                                 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0;
2540                                         }
2541                                         rts_fta_process_packet(&cur_packet);
2542                                 }
2543                         }
2544                 }
2545         }
2546 // --------------------------------------------------
2547 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2548
2549         sgnb_addreq_for_ue_sn_serv_ssb = (struct _sgnb_addreq_for_ue_sn_serv_ssb *)(cur_packet.record.packed.values);
2550         cur_packet.schema = 403;
2551         node_3_0 = node_2_0;
2552         ts_lo = hdr->header->timestamp & 0xffffffff;
2553         ts_hi = hdr->header->timestamp >> 32;
2554         sgnb_addreq_for_ue_sn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2555         if(hdr->header->gnbid==NULL)
2556                 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = empty_string;
2557         else
2558                 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2559
2560         node_3_1 = node_3_0->protocolies;
2561         if(node_3_0->protocolies){
2562                 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
2563                 if(node_3_1->id_menb_ue_x2ap_id_extension){
2564                         sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_3_1->id_menb_ue_x2ap_id_extension->value;
2565                 }else{
2566                         sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2567                 }
2568                 node_3_2 = node_3_1->id_menbtosgnbcontainer;
2569                 if(node_3_1->id_menbtosgnbcontainer){
2570                         node_3_3 = node_3_2->criticalextensionschoice1;
2571                         if(node_3_2->criticalextensionschoice1){
2572                                 node_3_4 = node_3_3->protocolies;
2573                                 if(node_3_3->protocolies){
2574                                         node_3_5 = node_3_4->candidatecellinfolistsn;
2575                                         if(node_3_4->candidatecellinfolistsn){
2576                                                 for(i_3_6=0;i_3_6<node_3_5->n_items; i_3_6++){
2577                                                         node_3_6 = node_3_5->items[i_3_6];
2578                                                         node_3_7 = node_3_6->measresultservingcell;
2579                                                         if(node_3_6->measresultservingcell){
2580                                                                 if(node_3_7->physcellid){
2581                                                                         sgnb_addreq_for_ue_sn_serv_ssb->physCellId = node_3_7->physcellid->value;
2582                                                                         sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 1;
2583                                                                 }else{
2584                                                                         sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0;
2585                                                                 }
2586                                                                 node_3_8 = node_3_7->measresult;
2587                                                                 if(node_3_7->measresult){
2588                                                                         node_3_9 = node_3_8->cellresults;
2589                                                                         if(node_3_8->cellresults){
2590                                                                                 node_3_10 = node_3_9->resultsssb_cell;
2591                                                                                 if(node_3_9->resultsssb_cell){
2592                                                                                         if(node_3_10->rsrq){
2593                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = node_3_10->rsrq->value;
2594                                                                                         }else{
2595                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128;
2596                                                                                         }
2597                                                                                         if(node_3_10->rsrp){
2598                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_3_10->rsrp->value;
2599                                                                                         }else{
2600                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128;
2601                                                                                         }
2602                                                                                         if(node_3_10->sinr){
2603                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_3_10->sinr->value;
2604                                                                                         }else{
2605                                                                                                 sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128;
2606                                                                                         }
2607                                                                                         rts_fta_process_packet(&cur_packet);
2608                                                                                 }
2609                                                                         }
2610                                                                 }
2611                                                         }
2612                                                 }
2613                                         }
2614                                 }
2615                         }
2616                 }
2617         }
2618 // --------------------------------------------------
2619 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2620
2621         sgnb_addreq_for_ue_sn_serv_csi_rs = (struct _sgnb_addreq_for_ue_sn_serv_csi_rs *)(cur_packet.record.packed.values);
2622         cur_packet.schema = 404;
2623         node_4_0 = node_3_0;
2624         ts_lo = hdr->header->timestamp & 0xffffffff;
2625         ts_hi = hdr->header->timestamp >> 32;
2626         sgnb_addreq_for_ue_sn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2627         if(hdr->header->gnbid==NULL)
2628                 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = empty_string;
2629         else
2630                 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2631
2632         node_4_1 = node_4_0->protocolies;
2633         if(node_4_0->protocolies){
2634                 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
2635                 if(node_4_1->id_menb_ue_x2ap_id_extension){
2636                         sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_4_1->id_menb_ue_x2ap_id_extension->value;
2637                 }else{
2638                         sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2639                 }
2640                 node_4_2 = node_4_1->id_menbtosgnbcontainer;
2641                 if(node_4_1->id_menbtosgnbcontainer){
2642                         node_4_3 = node_4_2->criticalextensionschoice1;
2643                         if(node_4_2->criticalextensionschoice1){
2644                                 node_4_4 = node_4_3->protocolies;
2645                                 if(node_4_3->protocolies){
2646                                         node_4_5 = node_4_4->candidatecellinfolistsn;
2647                                         if(node_4_4->candidatecellinfolistsn){
2648                                                 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
2649                                                         node_4_6 = node_4_5->items[i_4_6];
2650                                                         node_4_7 = node_4_6->measresultservingcell;
2651                                                         if(node_4_6->measresultservingcell){
2652                                                                 if(node_4_7->physcellid){
2653                                                                         sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId = node_4_7->physcellid->value;
2654                                                                         sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 1;
2655                                                                 }else{
2656                                                                         sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0;
2657                                                                 }
2658                                                                 node_4_8 = node_4_7->measresult;
2659                                                                 if(node_4_7->measresult){
2660                                                                         node_4_9 = node_4_8->cellresults;
2661                                                                         if(node_4_8->cellresults){
2662                                                                                 node_4_10 = node_4_9->resultscsi_rs_cell;
2663                                                                                 if(node_4_9->resultscsi_rs_cell){
2664                                                                                         if(node_4_10->rsrq){
2665                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = node_4_10->rsrq->value;
2666                                                                                         }else{
2667                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128;
2668                                                                                         }
2669                                                                                         if(node_4_10->rsrp){
2670                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_4_10->rsrp->value;
2671                                                                                         }else{
2672                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128;
2673                                                                                         }
2674                                                                                         if(node_4_10->sinr){
2675                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_4_10->sinr->value;
2676                                                                                         }else{
2677                                                                                                 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128;
2678                                                                                         }
2679                                                                                         rts_fta_process_packet(&cur_packet);
2680                                                                                 }
2681                                                                         }
2682                                                                 }
2683                                                         }
2684                                                 }
2685                                         }
2686                                 }
2687                         }
2688                 }
2689         }
2690 // --------------------------------------------------
2691 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2692
2693         sgnb_addreq_for_ue_mn_serv_ssb = (struct _sgnb_addreq_for_ue_mn_serv_ssb *)(cur_packet.record.packed.values);
2694         cur_packet.schema = 405;
2695         node_5_0 = node_4_0;
2696         ts_lo = hdr->header->timestamp & 0xffffffff;
2697         ts_hi = hdr->header->timestamp >> 32;
2698         sgnb_addreq_for_ue_mn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2699         if(hdr->header->gnbid==NULL)
2700                 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = empty_string;
2701         else
2702                 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2703
2704         node_5_1 = node_5_0->protocolies;
2705         if(node_5_0->protocolies){
2706                 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
2707                 if(node_5_1->id_menb_ue_x2ap_id_extension){
2708                         sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_5_1->id_menb_ue_x2ap_id_extension->value;
2709                 }else{
2710                         sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2711                 }
2712                 node_5_2 = node_5_1->id_menbtosgnbcontainer;
2713                 if(node_5_1->id_menbtosgnbcontainer){
2714                         node_5_3 = node_5_2->criticalextensionschoice1;
2715                         if(node_5_2->criticalextensionschoice1){
2716                                 node_5_4 = node_5_3->protocolies;
2717                                 if(node_5_3->protocolies){
2718                                         node_5_5 = node_5_4->candidatecellinfolistmn;
2719                                         if(node_5_4->candidatecellinfolistmn){
2720                                                 for(i_5_6=0;i_5_6<node_5_5->n_items; i_5_6++){
2721                                                         node_5_6 = node_5_5->items[i_5_6];
2722                                                         node_5_7 = node_5_6->measresultservingcell;
2723                                                         if(node_5_6->measresultservingcell){
2724                                                                 if(node_5_7->physcellid){
2725                                                                         sgnb_addreq_for_ue_mn_serv_ssb->physCellId = node_5_7->physcellid->value;
2726                                                                         sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 1;
2727                                                                 }else{
2728                                                                         sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0;
2729                                                                 }
2730                                                                 node_5_8 = node_5_7->measresult;
2731                                                                 if(node_5_7->measresult){
2732                                                                         node_5_9 = node_5_8->cellresults;
2733                                                                         if(node_5_8->cellresults){
2734                                                                                 node_5_10 = node_5_9->resultsssb_cell;
2735                                                                                 if(node_5_9->resultsssb_cell){
2736                                                                                         if(node_5_10->rsrq){
2737                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = node_5_10->rsrq->value;
2738                                                                                         }else{
2739                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128;
2740                                                                                         }
2741                                                                                         if(node_5_10->rsrp){
2742                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_5_10->rsrp->value;
2743                                                                                         }else{
2744                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128;
2745                                                                                         }
2746                                                                                         if(node_5_10->sinr){
2747                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_5_10->sinr->value;
2748                                                                                         }else{
2749                                                                                                 sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128;
2750                                                                                         }
2751                                                                                         rts_fta_process_packet(&cur_packet);
2752                                                                                 }
2753                                                                         }
2754                                                                 }
2755                                                         }
2756                                                 }
2757                                         }
2758                                 }
2759                         }
2760                 }
2761         }
2762 // --------------------------------------------------
2763 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2764
2765         sgnb_addreq_for_ue_mn_serv_csi_rs = (struct _sgnb_addreq_for_ue_mn_serv_csi_rs *)(cur_packet.record.packed.values);
2766         cur_packet.schema = 406;
2767         node_6_0 = node_5_0;
2768         ts_lo = hdr->header->timestamp & 0xffffffff;
2769         ts_hi = hdr->header->timestamp >> 32;
2770         sgnb_addreq_for_ue_mn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2771         if(hdr->header->gnbid==NULL)
2772                 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = empty_string;
2773         else
2774                 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2775
2776         node_6_1 = node_6_0->protocolies;
2777         if(node_6_0->protocolies){
2778                 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_6_1->id_menb_ue_x2ap_id;
2779                 if(node_6_1->id_menb_ue_x2ap_id_extension){
2780                         sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_6_1->id_menb_ue_x2ap_id_extension->value;
2781                 }else{
2782                         sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2783                 }
2784                 node_6_2 = node_6_1->id_menbtosgnbcontainer;
2785                 if(node_6_1->id_menbtosgnbcontainer){
2786                         node_6_3 = node_6_2->criticalextensionschoice1;
2787                         if(node_6_2->criticalextensionschoice1){
2788                                 node_6_4 = node_6_3->protocolies;
2789                                 if(node_6_3->protocolies){
2790                                         node_6_5 = node_6_4->candidatecellinfolistmn;
2791                                         if(node_6_4->candidatecellinfolistmn){
2792                                                 for(i_6_6=0;i_6_6<node_6_5->n_items; i_6_6++){
2793                                                         node_6_6 = node_6_5->items[i_6_6];
2794                                                         node_6_7 = node_6_6->measresultservingcell;
2795                                                         if(node_6_6->measresultservingcell){
2796                                                                 if(node_6_7->physcellid){
2797                                                                         sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId = node_6_7->physcellid->value;
2798                                                                         sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 1;
2799                                                                 }else{
2800                                                                         sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0;
2801                                                                 }
2802                                                                 node_6_8 = node_6_7->measresult;
2803                                                                 if(node_6_7->measresult){
2804                                                                         node_6_9 = node_6_8->cellresults;
2805                                                                         if(node_6_8->cellresults){
2806                                                                                 node_6_10 = node_6_9->resultscsi_rs_cell;
2807                                                                                 if(node_6_9->resultscsi_rs_cell){
2808                                                                                         if(node_6_10->rsrq){
2809                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = node_6_10->rsrq->value;
2810                                                                                         }else{
2811                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128;
2812                                                                                         }
2813                                                                                         if(node_6_10->rsrp){
2814                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_6_10->rsrp->value;
2815                                                                                         }else{
2816                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128;
2817                                                                                         }
2818                                                                                         if(node_6_10->sinr){
2819                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_6_10->sinr->value;
2820                                                                                         }else{
2821                                                                                                 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128;
2822                                                                                         }
2823                                                                                         rts_fta_process_packet(&cur_packet);
2824                                                                                 }
2825                                                                         }
2826                                                                 }
2827                                                         }
2828                                                 }
2829                                         }
2830                                 }
2831                         }
2832                 }
2833         }
2834 // --------------------------------------------------
2835 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2836
2837         sgnb_addreq_for_ue_sn_neigh_ssb = (struct _sgnb_addreq_for_ue_sn_neigh_ssb *)(cur_packet.record.packed.values);
2838         cur_packet.schema = 408;
2839         node_7_0 = node_6_0;
2840         ts_lo = hdr->header->timestamp & 0xffffffff;
2841         ts_hi = hdr->header->timestamp >> 32;
2842         sgnb_addreq_for_ue_sn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2843         if(hdr->header->gnbid==NULL)
2844                 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = empty_string;
2845         else
2846                 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2847
2848         node_7_1 = node_7_0->protocolies;
2849         if(node_7_0->protocolies){
2850                 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_7_1->id_menb_ue_x2ap_id;
2851                 if(node_7_1->id_menb_ue_x2ap_id_extension){
2852                         sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_1->id_menb_ue_x2ap_id_extension->value;
2853                 }else{
2854                         sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2855                 }
2856                 node_7_2 = node_7_1->id_menbtosgnbcontainer;
2857                 if(node_7_1->id_menbtosgnbcontainer){
2858                         node_7_3 = node_7_2->criticalextensionschoice1;
2859                         if(node_7_2->criticalextensionschoice1){
2860                                 node_7_4 = node_7_3->protocolies;
2861                                 if(node_7_3->protocolies){
2862                                         node_7_5 = node_7_4->candidatecellinfolistsn;
2863                                         if(node_7_4->candidatecellinfolistsn){
2864                                                 for(i_7_6=0;i_7_6<node_7_5->n_items; i_7_6++){
2865                                                         node_7_6 = node_7_5->items[i_7_6];
2866                                                         node_7_7 = node_7_6->measresultneighcelllistnr;
2867                                                         if(node_7_6->measresultneighcelllistnr){
2868                                                                 for(i_7_8=0;i_7_8<node_7_7->n_items; i_7_8++){
2869                                                                         node_7_8 = node_7_7->items[i_7_8];
2870                                                                         if(node_7_8->physcellid){
2871                                                                                 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId = node_7_8->physcellid->value;
2872                                                                                 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 1;
2873                                                                         }else{
2874                                                                                 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0;
2875                                                                         }
2876                                                                         node_7_9 = node_7_8->measresult;
2877                                                                         if(node_7_8->measresult){
2878                                                                                 node_7_10 = node_7_9->cellresults;
2879                                                                                 if(node_7_9->cellresults){
2880                                                                                         node_7_11 = node_7_10->resultsssb_cell;
2881                                                                                         if(node_7_10->resultsssb_cell){
2882                                                                                                 if(node_7_11->rsrq){
2883                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = node_7_11->rsrq->value;
2884                                                                                                 }else{
2885                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128;
2886                                                                                                 }
2887                                                                                                 if(node_7_11->rsrp){
2888                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_7_11->rsrp->value;
2889                                                                                                 }else{
2890                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128;
2891                                                                                                 }
2892                                                                                                 if(node_7_11->sinr){
2893                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_7_11->sinr->value;
2894                                                                                                 }else{
2895                                                                                                         sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128;
2896                                                                                                 }
2897                                                                                                 rts_fta_process_packet(&cur_packet);
2898                                                                                         }
2899                                                                                 }
2900                                                                         }
2901                                                                 }
2902                                                         }
2903                                                 }
2904                                         }
2905                                 }
2906                         }
2907                 }
2908         }
2909 // --------------------------------------------------
2910 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2911
2912         sgnb_addreq_for_ue_sn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *)(cur_packet.record.packed.values);
2913         cur_packet.schema = 409;
2914         node_8_0 = node_7_0;
2915         ts_lo = hdr->header->timestamp & 0xffffffff;
2916         ts_hi = hdr->header->timestamp >> 32;
2917         sgnb_addreq_for_ue_sn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2918         if(hdr->header->gnbid==NULL)
2919                 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = empty_string;
2920         else
2921                 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
2922
2923         node_8_1 = node_8_0->protocolies;
2924         if(node_8_0->protocolies){
2925                 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_8_1->id_menb_ue_x2ap_id;
2926                 if(node_8_1->id_menb_ue_x2ap_id_extension){
2927                         sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_8_1->id_menb_ue_x2ap_id_extension->value;
2928                 }else{
2929                         sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2930                 }
2931                 node_8_2 = node_8_1->id_menbtosgnbcontainer;
2932                 if(node_8_1->id_menbtosgnbcontainer){
2933                         node_8_3 = node_8_2->criticalextensionschoice1;
2934                         if(node_8_2->criticalextensionschoice1){
2935                                 node_8_4 = node_8_3->protocolies;
2936                                 if(node_8_3->protocolies){
2937                                         node_8_5 = node_8_4->candidatecellinfolistsn;
2938                                         if(node_8_4->candidatecellinfolistsn){
2939                                                 for(i_8_6=0;i_8_6<node_8_5->n_items; i_8_6++){
2940                                                         node_8_6 = node_8_5->items[i_8_6];
2941                                                         node_8_7 = node_8_6->measresultneighcelllistnr;
2942                                                         if(node_8_6->measresultneighcelllistnr){
2943                                                                 for(i_8_8=0;i_8_8<node_8_7->n_items; i_8_8++){
2944                                                                         node_8_8 = node_8_7->items[i_8_8];
2945                                                                         if(node_8_8->physcellid){
2946                                                                                 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId = node_8_8->physcellid->value;
2947                                                                                 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 1;
2948                                                                         }else{
2949                                                                                 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0;
2950                                                                         }
2951                                                                         node_8_9 = node_8_8->measresult;
2952                                                                         if(node_8_8->measresult){
2953                                                                                 node_8_10 = node_8_9->cellresults;
2954                                                                                 if(node_8_9->cellresults){
2955                                                                                         node_8_11 = node_8_10->resultscsi_rs_cell;
2956                                                                                         if(node_8_10->resultscsi_rs_cell){
2957                                                                                                 if(node_8_11->rsrq){
2958                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = node_8_11->rsrq->value;
2959                                                                                                 }else{
2960                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128;
2961                                                                                                 }
2962                                                                                                 if(node_8_11->rsrp){
2963                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_8_11->rsrp->value;
2964                                                                                                 }else{
2965                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128;
2966                                                                                                 }
2967                                                                                                 if(node_8_11->sinr){
2968                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_8_11->sinr->value;
2969                                                                                                 }else{
2970                                                                                                         sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128;
2971                                                                                                 }
2972                                                                                                 rts_fta_process_packet(&cur_packet);
2973                                                                                         }
2974                                                                                 }
2975                                                                         }
2976                                                                 }
2977                                                         }
2978                                                 }
2979                                         }
2980                                 }
2981                         }
2982                 }
2983         }
2984 // --------------------------------------------------
2985 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2986
2987         sgnb_addreq_for_ue_mn_neigh_ssb = (struct _sgnb_addreq_for_ue_mn_neigh_ssb *)(cur_packet.record.packed.values);
2988         cur_packet.schema = 410;
2989         node_9_0 = node_8_0;
2990         ts_lo = hdr->header->timestamp & 0xffffffff;
2991         ts_hi = hdr->header->timestamp >> 32;
2992         sgnb_addreq_for_ue_mn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2993         if(hdr->header->gnbid==NULL)
2994                 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = empty_string;
2995         else
2996                 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2997
2998         node_9_1 = node_9_0->protocolies;
2999         if(node_9_0->protocolies){
3000                 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_9_1->id_menb_ue_x2ap_id;
3001                 if(node_9_1->id_menb_ue_x2ap_id_extension){
3002                         sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_9_1->id_menb_ue_x2ap_id_extension->value;
3003                 }else{
3004                         sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
3005                 }
3006                 node_9_2 = node_9_1->id_menbtosgnbcontainer;
3007                 if(node_9_1->id_menbtosgnbcontainer){
3008                         node_9_3 = node_9_2->criticalextensionschoice1;
3009                         if(node_9_2->criticalextensionschoice1){
3010                                 node_9_4 = node_9_3->protocolies;
3011                                 if(node_9_3->protocolies){
3012                                         node_9_5 = node_9_4->candidatecellinfolistmn;
3013                                         if(node_9_4->candidatecellinfolistmn){
3014                                                 for(i_9_6=0;i_9_6<node_9_5->n_items; i_9_6++){
3015                                                         node_9_6 = node_9_5->items[i_9_6];
3016                                                         node_9_7 = node_9_6->measresultneighcelllistnr;
3017                                                         if(node_9_6->measresultneighcelllistnr){
3018                                                                 for(i_9_8=0;i_9_8<node_9_7->n_items; i_9_8++){
3019                                                                         node_9_8 = node_9_7->items[i_9_8];
3020                                                                         if(node_9_8->physcellid){
3021                                                                                 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId = node_9_8->physcellid->value;
3022                                                                                 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 1;
3023                                                                         }else{
3024                                                                                 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0;
3025                                                                         }
3026                                                                         node_9_9 = node_9_8->measresult;
3027                                                                         if(node_9_8->measresult){
3028                                                                                 node_9_10 = node_9_9->cellresults;
3029                                                                                 if(node_9_9->cellresults){
3030                                                                                         node_9_11 = node_9_10->resultsssb_cell;
3031                                                                                         if(node_9_10->resultsssb_cell){
3032                                                                                                 if(node_9_11->rsrq){
3033                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = node_9_11->rsrq->value;
3034                                                                                                 }else{
3035                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128;
3036                                                                                                 }
3037                                                                                                 if(node_9_11->rsrp){
3038                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_9_11->rsrp->value;
3039                                                                                                 }else{
3040                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128;
3041                                                                                                 }
3042                                                                                                 if(node_9_11->sinr){
3043                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_9_11->sinr->value;
3044                                                                                                 }else{
3045                                                                                                         sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128;
3046                                                                                                 }
3047                                                                                                 rts_fta_process_packet(&cur_packet);
3048                                                                                         }
3049                                                                                 }
3050                                                                         }
3051                                                                 }
3052                                                         }
3053                                                 }
3054                                         }
3055                                 }
3056                         }
3057                 }
3058         }
3059 // --------------------------------------------------
3060 // ---  Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
3061
3062         sgnb_addreq_for_ue_mn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *)(cur_packet.record.packed.values);
3063         cur_packet.schema = 411;
3064         node_10_0 = node_9_0;
3065         ts_lo = hdr->header->timestamp & 0xffffffff;
3066         ts_hi = hdr->header->timestamp >> 32;
3067         sgnb_addreq_for_ue_mn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3068         if(hdr->header->gnbid==NULL)
3069                 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = empty_string;
3070         else
3071                 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
3072
3073         node_10_1 = node_10_0->protocolies;
3074         if(node_10_0->protocolies){
3075                 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_10_1->id_menb_ue_x2ap_id;
3076                 if(node_10_1->id_menb_ue_x2ap_id_extension){
3077                         sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_10_1->id_menb_ue_x2ap_id_extension->value;
3078                 }else{
3079                         sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
3080                 }
3081                 node_10_2 = node_10_1->id_menbtosgnbcontainer;
3082                 if(node_10_1->id_menbtosgnbcontainer){
3083                         node_10_3 = node_10_2->criticalextensionschoice1;
3084                         if(node_10_2->criticalextensionschoice1){
3085                                 node_10_4 = node_10_3->protocolies;
3086                                 if(node_10_3->protocolies){
3087                                         node_10_5 = node_10_4->candidatecellinfolistmn;
3088                                         if(node_10_4->candidatecellinfolistmn){
3089                                                 for(i_10_6=0;i_10_6<node_10_5->n_items; i_10_6++){
3090                                                         node_10_6 = node_10_5->items[i_10_6];
3091                                                         node_10_7 = node_10_6->measresultneighcelllistnr;
3092                                                         if(node_10_6->measresultneighcelllistnr){
3093                                                                 for(i_10_8=0;i_10_8<node_10_7->n_items; i_10_8++){
3094                                                                         node_10_8 = node_10_7->items[i_10_8];
3095                                                                         if(node_10_8->physcellid){
3096                                                                                 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId = node_10_8->physcellid->value;
3097                                                                                 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 1;
3098                                                                         }else{
3099                                                                                 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0;
3100                                                                         }
3101                                                                         node_10_9 = node_10_8->measresult;
3102                                                                         if(node_10_8->measresult){
3103                                                                                 node_10_10 = node_10_9->cellresults;
3104                                                                                 if(node_10_9->cellresults){
3105                                                                                         node_10_11 = node_10_10->resultscsi_rs_cell;
3106                                                                                         if(node_10_10->resultscsi_rs_cell){
3107                                                                                                 if(node_10_11->rsrq){
3108                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = node_10_11->rsrq->value;
3109                                                                                                 }else{
3110                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128;
3111                                                                                                 }
3112                                                                                                 if(node_10_11->rsrp){
3113                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_10_11->rsrp->value;
3114                                                                                                 }else{
3115                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128;
3116                                                                                                 }
3117                                                                                                 if(node_10_11->sinr){
3118                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_10_11->sinr->value;
3119                                                                                                 }else{
3120                                                                                                         sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128;
3121                                                                                                 }
3122                                                                                                 rts_fta_process_packet(&cur_packet);
3123                                                                                         }
3124                                                                                 }
3125                                                                         }
3126                                                                 }
3127                                                         }
3128                                                 }
3129                                         }
3130                                 }
3131                         }
3132                 }
3133         }
3134         streaming_protobufs__sg_nbaddition_request__free_unpacked(node_0_0,NULL);
3135         return 0;
3136 }
3137
3138 gs_uint32_t process_buffer_SGNBMODCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
3139         char *empty_string = "";
3140 unsigned long long int ts_lo, ts_hi;
3141         StreamingProtobufs__X2APStreaming *hdr = NULL;
3142 // ------------------------------------------
3143 // ---  Variables for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3144         struct _sgnb_mod_conf *sgnb_mod_conf = NULL;
3145         StreamingProtobufs__SgNBModificationConfirm *node_0_0 = NULL;
3146         StreamingProtobufs__SgNBModificationConfirmIEs *node_0_1 = NULL;
3147
3148 // --------------------------------------------------
3149 // ---  Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3150
3151         sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values);
3152         cur_packet.schema = 1301;
3153
3154         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3155         if(hdr==NULL) return -1;
3156
3157         node_0_0 = hdr->sgnbmodificationconfirm;
3158         if(node_0_0==NULL) return -2;
3159         if(hdr->header==NULL) return -3;
3160
3161         ts_lo = hdr->header->timestamp & 0xffffffff;
3162         ts_hi = hdr->header->timestamp >> 32;
3163         sgnb_mod_conf->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3164         if(hdr->header->gnbid==NULL)
3165                 sgnb_mod_conf->gnb_id = empty_string;
3166         else
3167                 sgnb_mod_conf->gnb_id = hdr->header->gnbid->value;
3168
3169         node_0_1 = node_0_0->protocolies;
3170         if(node_0_0->protocolies){
3171                 sgnb_mod_conf->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3172                 sgnb_mod_conf->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3173                 rts_fta_process_packet(&cur_packet);
3174         }
3175         streaming_protobufs__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL);
3176         return 0;
3177 }
3178
3179 gs_uint32_t process_buffer_SGNBMODREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
3180         char *empty_string = "";
3181 unsigned long long int ts_lo, ts_hi;
3182         StreamingProtobufs__X2APStreaming *hdr = NULL;
3183 // ------------------------------------------
3184 // ---  Variables for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3185         struct _sgnb_mod_req *sgnb_mod_req = NULL;
3186         StreamingProtobufs__SgNBModificationRequest *node_0_0 = NULL;
3187         StreamingProtobufs__SgNBModificationRequestIEs *node_0_1 = NULL;
3188
3189 // --------------------------------------------------
3190 // ---  Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3191
3192         sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values);
3193         cur_packet.schema = 1201;
3194
3195         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3196         if(hdr==NULL) return -1;
3197
3198         node_0_0 = hdr->sgnbmodificationrequest;
3199         if(node_0_0==NULL) return -2;
3200         if(hdr->header==NULL) return -3;
3201
3202         ts_lo = hdr->header->timestamp & 0xffffffff;
3203         ts_hi = hdr->header->timestamp >> 32;
3204         sgnb_mod_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3205         if(hdr->header->gnbid==NULL)
3206                 sgnb_mod_req->gnb_id = empty_string;
3207         else
3208                 sgnb_mod_req->gnb_id = hdr->header->gnbid->value;
3209
3210         node_0_1 = node_0_0->protocolies;
3211         if(node_0_0->protocolies){
3212                 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3213                         sgnb_mod_req->cause_protocol = node_0_1->id_cause->protocol->value;
3214                 }else{
3215                         sgnb_mod_req->cause_protocol = -1;
3216                 }
3217                 sgnb_mod_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3218                 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3219                         sgnb_mod_req->cause_transport = node_0_1->id_cause->transport->value;
3220                 }else{
3221                         sgnb_mod_req->cause_transport = -1;
3222                 }
3223                 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){
3224                         sgnb_mod_req->failureType = node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo->failuretype;
3225                 }else{
3226                         sgnb_mod_req->failureType = -1;
3227                 }
3228                 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3229                         sgnb_mod_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3230                 }else{
3231                         sgnb_mod_req->cause_radio_network = -1;
3232                 }
3233                 sgnb_mod_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3234                 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3235                         sgnb_mod_req->cause_misc = node_0_1->id_cause->misc->value;
3236                 }else{
3237                         sgnb_mod_req->cause_misc = -1;
3238                 }
3239                 rts_fta_process_packet(&cur_packet);
3240         }
3241         streaming_protobufs__sg_nbmodification_request__free_unpacked(node_0_0,NULL);
3242         return 0;
3243 }
3244
3245 gs_uint32_t process_buffer_SGNBMODREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
3246         char *empty_string = "";
3247 unsigned long long int ts_lo, ts_hi;
3248         StreamingProtobufs__X2APStreaming *hdr = NULL;
3249 // ------------------------------------------
3250 // ---  Variables for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3251         struct _sgnb_mod_req_ack *sgnb_mod_req_ack = NULL;
3252         StreamingProtobufs__SgNBModificationRequestAcknowledge *node_0_0 = NULL;
3253         StreamingProtobufs__SgNBModificationRequestAcknowledgeIEs *node_0_1 = NULL;
3254
3255 // --------------------------------------------------
3256 // ---  Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3257
3258         sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values);
3259         cur_packet.schema = 1701;
3260
3261         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3262         if(hdr==NULL) return -1;
3263
3264         node_0_0 = hdr->sgnbmodificationrequestacknowledge;
3265         if(node_0_0==NULL) return -2;
3266         if(hdr->header==NULL) return -3;
3267
3268         ts_lo = hdr->header->timestamp & 0xffffffff;
3269         ts_hi = hdr->header->timestamp >> 32;
3270         sgnb_mod_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3271         if(hdr->header->gnbid==NULL)
3272                 sgnb_mod_req_ack->gnb_id = empty_string;
3273         else
3274                 sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value;
3275
3276         node_0_1 = node_0_0->protocolies;
3277         if(node_0_0->protocolies){
3278                 sgnb_mod_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3279                 sgnb_mod_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3280                 rts_fta_process_packet(&cur_packet);
3281         }
3282         streaming_protobufs__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL);
3283         return 0;
3284 }
3285
3286 gs_uint32_t process_buffer_SGNBMODREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
3287         char *empty_string = "";
3288 unsigned long long int ts_lo, ts_hi;
3289         StreamingProtobufs__X2APStreaming *hdr = NULL;
3290 // ------------------------------------------
3291 // ---  Variables for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3292         struct _sgnb_mod_req_reject *sgnb_mod_req_reject = NULL;
3293         StreamingProtobufs__SgNBModificationRequestReject *node_0_0 = NULL;
3294         StreamingProtobufs__SgNBModificationRequestRejectIEs *node_0_1 = NULL;
3295
3296 // --------------------------------------------------
3297 // ---  Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3298
3299         sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values);
3300         cur_packet.schema = 1801;
3301
3302         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3303         if(hdr==NULL) return -1;
3304
3305         node_0_0 = hdr->sgnbmodificationrequestreject;
3306         if(node_0_0==NULL) return -2;
3307         if(hdr->header==NULL) return -3;
3308
3309         ts_lo = hdr->header->timestamp & 0xffffffff;
3310         ts_hi = hdr->header->timestamp >> 32;
3311         sgnb_mod_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3312         if(hdr->header->gnbid==NULL)
3313                 sgnb_mod_req_reject->gnb_id = empty_string;
3314         else
3315                 sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value;
3316
3317         node_0_1 = node_0_0->protocolies;
3318         if(node_0_0->protocolies){
3319                 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3320                         sgnb_mod_req_reject->cause_protocol = node_0_1->id_cause->protocol->value;
3321                 }else{
3322                         sgnb_mod_req_reject->cause_protocol = -1;
3323                 }
3324                 sgnb_mod_req_reject->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3325                 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3326                         sgnb_mod_req_reject->cause_transport = node_0_1->id_cause->transport->value;
3327                 }else{
3328                         sgnb_mod_req_reject->cause_transport = -1;
3329                 }
3330                 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3331                         sgnb_mod_req_reject->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3332                 }else{
3333                         sgnb_mod_req_reject->cause_radio_network = -1;
3334                 }
3335                 sgnb_mod_req_reject->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3336                 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3337                         sgnb_mod_req_reject->cause_misc = node_0_1->id_cause->misc->value;
3338                 }else{
3339                         sgnb_mod_req_reject->cause_misc = -1;
3340                 }
3341                 rts_fta_process_packet(&cur_packet);
3342         }
3343         streaming_protobufs__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL);
3344         return 0;
3345 }
3346
3347 gs_uint32_t process_buffer_SGNBMODREQUIRED(gs_uint8_t * buffer, gs_uint32_t buflen){
3348         char *empty_string = "";
3349 unsigned long long int ts_lo, ts_hi;
3350         StreamingProtobufs__X2APStreaming *hdr = NULL;
3351 // ------------------------------------------
3352 // ---  Variables for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3353         struct _sgnb_mod_required *sgnb_mod_required = NULL;
3354         StreamingProtobufs__SgNBModificationRequired *node_0_0 = NULL;
3355         StreamingProtobufs__SgNBModificationRequiredIEs *node_0_1 = NULL;
3356
3357 // --------------------------------------------------
3358 // ---  Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3359
3360         sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values);
3361         cur_packet.schema = 1901;
3362
3363         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3364         if(hdr==NULL) return -1;
3365
3366         node_0_0 = hdr->sgnbmodificationrequired;
3367         if(node_0_0==NULL) return -2;
3368         if(hdr->header==NULL) return -3;
3369
3370         ts_lo = hdr->header->timestamp & 0xffffffff;
3371         ts_hi = hdr->header->timestamp >> 32;
3372         sgnb_mod_required->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3373         if(hdr->header->gnbid==NULL)
3374                 sgnb_mod_required->gnb_id = empty_string;
3375         else
3376                 sgnb_mod_required->gnb_id = hdr->header->gnbid->value;
3377
3378         node_0_1 = node_0_0->protocolies;
3379         if(node_0_0->protocolies){
3380                 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3381                         sgnb_mod_required->cause_protocol = node_0_1->id_cause->protocol->value;
3382                 }else{
3383                         sgnb_mod_required->cause_protocol = -1;
3384                 }
3385                 sgnb_mod_required->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3386                 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3387                         sgnb_mod_required->cause_transport = node_0_1->id_cause->transport->value;
3388                 }else{
3389                         sgnb_mod_required->cause_transport = -1;
3390                 }
3391                 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3392                         sgnb_mod_required->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3393                 }else{
3394                         sgnb_mod_required->cause_radio_network = -1;
3395                 }
3396                 sgnb_mod_required->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3397                 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3398                         sgnb_mod_required->cause_misc = node_0_1->id_cause->misc->value;
3399                 }else{
3400                         sgnb_mod_required->cause_misc = -1;
3401                 }
3402                 rts_fta_process_packet(&cur_packet);
3403         }
3404         streaming_protobufs__sg_nbmodification_required__free_unpacked(node_0_0,NULL);
3405         return 0;
3406 }
3407
3408 gs_uint32_t process_buffer_SGNBMODREFUSE(gs_uint8_t * buffer, gs_uint32_t buflen){
3409         char *empty_string = "";
3410 unsigned long long int ts_lo, ts_hi;
3411         StreamingProtobufs__X2APStreaming *hdr = NULL;
3412 // ------------------------------------------
3413 // ---  Variables for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3414         struct _sgnb_mod_refuse *sgnb_mod_refuse = NULL;
3415         StreamingProtobufs__SgNBModificationRefuse *node_0_0 = NULL;
3416         StreamingProtobufs__SgNBModificationRefuseIEs *node_0_1 = NULL;
3417         StreamingProtobufs__Cause *node_0_2 = NULL;
3418
3419 // --------------------------------------------------
3420 // ---  Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3421
3422         sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values);
3423         cur_packet.schema = 1401;
3424
3425         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3426         if(hdr==NULL) return -1;
3427
3428         node_0_0 = hdr->sgnbmodificationrefuse;
3429         if(node_0_0==NULL) return -2;
3430         if(hdr->header==NULL) return -3;
3431
3432         ts_lo = hdr->header->timestamp & 0xffffffff;
3433         ts_hi = hdr->header->timestamp >> 32;
3434         sgnb_mod_refuse->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3435         if(hdr->header->gnbid==NULL)
3436                 sgnb_mod_refuse->gnb_id = empty_string;
3437         else
3438                 sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value;
3439
3440         node_0_1 = node_0_0->protocolies;
3441         if(node_0_0->protocolies){
3442                 sgnb_mod_refuse->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3443                 sgnb_mod_refuse->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3444                 node_0_2 = node_0_1->id_cause;
3445                 if(node_0_1->id_cause){
3446                         if(node_0_2->radionetwork){
3447                                 sgnb_mod_refuse->cause_radio_network = node_0_2->radionetwork->value;
3448                         }else{
3449                                 sgnb_mod_refuse->cause_radio_network = -1;
3450                         }
3451                         if(node_0_2->transport){
3452                                 sgnb_mod_refuse->cause_transport = node_0_2->transport->value;
3453                         }else{
3454                                 sgnb_mod_refuse->cause_transport = -1;
3455                         }
3456                         if(node_0_2->protocol){
3457                                 sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value;
3458                         }else{
3459                                 sgnb_mod_refuse->cause_protocol = -1;
3460                         }
3461                         if(node_0_2->misc){
3462                                 sgnb_mod_refuse->cause_misc = node_0_2->misc->value;
3463                         }else{
3464                                 sgnb_mod_refuse->cause_misc = -1;
3465                         }
3466                         rts_fta_process_packet(&cur_packet);
3467                 }
3468         }
3469         streaming_protobufs__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL);
3470         return 0;
3471 }
3472
3473 gs_uint32_t process_buffer_SNSTATUSXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
3474         char *empty_string = "";
3475 unsigned long long int ts_lo, ts_hi;
3476         StreamingProtobufs__X2APStreaming *hdr = NULL;
3477 // ------------------------------------------
3478 // ---  Variables for .proto sn_status_transfer.json, path snstatusxfer.json
3479         struct _sn_status_transfer *sn_status_transfer = NULL;
3480         StreamingProtobufs__SNStatusTransfer *node_0_0 = NULL;
3481         StreamingProtobufs__SNStatusTransferIEs *node_0_1 = NULL;
3482         StreamingProtobufs__ERABsSubjectToStatusTransferList *node_0_2 = NULL;
3483         StreamingProtobufs__ERABsSubjectToStatusTransferItemIEs *node_0_3 = NULL;
3484         gs_uint32_t i_0_3;
3485         StreamingProtobufs__ERABsSubjectToStatusTransferItem *node_0_4 = NULL;
3486         StreamingProtobufs__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL;
3487         gs_uint32_t i_0_5;
3488         StreamingProtobufs__COUNTvaluePDCPSNlength18 *node_0_6 = NULL;
3489
3490 // --------------------------------------------------
3491 // ---  Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json
3492
3493         sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values);
3494         cur_packet.schema = 1601;
3495
3496         hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3497         if(hdr==NULL) return -1;
3498
3499         node_0_0 = hdr->snstatustransfer;
3500         if(node_0_0==NULL) return -2;
3501         if(hdr->header==NULL) return -3;
3502
3503         ts_lo = hdr->header->timestamp & 0xffffffff;
3504         ts_hi = hdr->header->timestamp >> 32;
3505         sn_status_transfer->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3506         if(hdr->header->gnbid==NULL)
3507                 sn_status_transfer->gnb_id = empty_string;
3508         else
3509                 sn_status_transfer->gnb_id = hdr->header->gnbid->value;
3510
3511         node_0_1 = node_0_0->protocolies;
3512         if(node_0_0->protocolies){
3513                 sn_status_transfer->id_Old_eNB_UE_X2AP_ID = node_0_1->id_old_enb_ue_x2ap_id;
3514                 if(node_0_1->id_sgnb_ue_x2ap_id){
3515                         sn_status_transfer->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
3516                 }else{
3517                         sn_status_transfer->id_SgNB_UE_X2AP_ID = 0;
3518                 }
3519                 node_0_2 = node_0_1->id_e_rabs_subjecttostatustransfer_list;
3520                 if(node_0_1->id_e_rabs_subjecttostatustransfer_list){
3521                         for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
3522                                 node_0_3 = node_0_2->items[i_0_3];
3523                                 node_0_4 = node_0_3->id_e_rabs_subjecttostatustransfer_item;
3524                                 if(node_0_3->id_e_rabs_subjecttostatustransfer_item){
3525                                         sn_status_transfer->e_RAB_ID = node_0_4->e_rab_id;
3526                                         for(i_0_5=0;i_0_5<node_0_4->n_ie_extensions; i_0_5++){
3527                                                 node_0_5 = node_0_4->ie_extensions[i_0_5];
3528                                                 node_0_6 = node_0_5->id_dlcountvaluepdcp_snlength18;
3529                                                 if(node_0_5->id_dlcountvaluepdcp_snlength18){
3530                                                         sn_status_transfer->pDCP_SNlength18 = node_0_6->pdcp_snlength18;
3531                                                         rts_fta_process_packet(&cur_packet);
3532                                                 }
3533                                         }
3534                                 }
3535                         }
3536                 }
3537         }
3538         streaming_protobufs__snstatus_transfer__free_unpacked(node_0_0,NULL);
3539         return 0;
3540 }
3541
3542
3543 int init_cur_packet(){
3544         cur_packet.ptype=PTYPE_STRUCT;
3545         cur_packet.record.packed.values = (void *)(malloc(10000));
3546
3547         if(cur_packet.record.packed.values==NULL){
3548                 print_error("could not malloc a data block for cur_packet in init_cur_packet.");
3549                 exit(10);
3550         }
3551         return 0;
3552 }
3553 //----------------  END Specialized proto parsing -----------
3554
3555 static void dproto_replay_check_messages() {
3556     if (fta_start_service(0)<0) {
3557         print_error("Error:in processing the msg queue for a replay file");
3558         exit(9);
3559     }
3560 }
3561
3562 //      Read length bytes from the current socket into buffer.
3563 static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){
3564     gs_uint32_t used=0;
3565     gs_uint32_t cur;
3566     fd_set socket_rset;
3567     fd_set socket_eset;
3568     struct timeval socket_timeout;
3569     int retval;
3570     
3571     FD_ZERO(&socket_rset);
3572     FD_SET(socket_desc,&socket_rset);
3573     FD_ZERO(&socket_eset);
3574     FD_SET(socket_desc,&socket_eset);
3575     // timeout in one millisecon
3576     socket_timeout.tv_sec=0;
3577     socket_timeout.tv_usec=1000;
3578     
3579     if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) {
3580         if (retval==0) {
3581             // caught a timeout
3582             return -1;
3583         }
3584         return -2;
3585     }
3586     
3587     while(used < length) {
3588         if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) {
3589             print_error("ERROR:could not read data from PROTO stream");
3590             return -2;
3591         }
3592         used+=cur;
3593     }
3594         return 0;
3595 }
3596
3597 //      query gshub and use that info to open a socket
3598 static void init_socket() {
3599         endpoint gshub;
3600         endpoint srcinfo;
3601         struct sockaddr_in server;
3602         
3603         if (get_hub(&gshub)!=0) {
3604                 print_error("ERROR:could not find gshub for data source");
3605                 exit(0);
3606         }
3607     
3608         if (get_streamsource(gshub,name,&srcinfo,1) !=0) {
3609                 print_error("ERROR:could not find data source for stream\n");
3610                 exit(0);
3611         }
3612     
3613         socket_desc = socket(AF_INET , SOCK_STREAM , 0);
3614     if (socket_desc == -1)
3615     {
3616         print_error("ERROR:could not create socket for data stream");
3617                 exit(0);
3618     }
3619         server.sin_addr.s_addr = srcinfo.ip;
3620     server.sin_family = AF_INET;
3621     server.sin_port = srcinfo.port;
3622     
3623         if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
3624     {
3625                 print_error("ERROR: could not open connection to data source");
3626                 exit(0);
3627         }
3628     
3629 }
3630
3631 int read_fifo(struct pollfd* pfd, char* buffer, size_t len, time_t timeout) {
3632     int i, bytes_read = 0;
3633     while (bytes_read < len) {      
3634         if (poll(pfd, 1, timeout)) {         
3635             if (pfd->revents & POLLIN) {
3636                                 while ((i = read(pfd->fd,buffer+bytes_read,len-bytes_read))==-1 && errno==EINTR);
3637                 if (i <= 0) {
3638                     break;              // writer closed fifo or error
3639                 } else {
3640                     bytes_read += i;
3641                 } 
3642             } else
3643                 break;                  // writer closed fifo
3644         }
3645         if (!bytes_read)
3646             return -1;                  // timeout
3647     }
3648     return bytes_read;  
3649 }
3650
3651 //      proceed to the next file
3652 static void next_file() {
3653         int open_flag = O_RDONLY;
3654         if (fifo)
3655                 open_flag |= O_NONBLOCK;
3656
3657         struct stat s;
3658         if (verbose) {
3659                 fprintf(stderr,"Opening %s\n",name);
3660         }
3661         while (lstat(name,&s)!=0) {
3662                 if (errno!=ENOENT) {
3663                         print_error("dproto::lstat unexpected return value");
3664                         exit(10);
3665                 }
3666                 dproto_replay_check_messages();
3667                 usleep(10000);
3668         }
3669         if  (fd > 0) {
3670                 close(fd);
3671         }
3672     if ((fd=open(name,open_flag)) <= 0) {
3673         print_error("dproto::open failed ");
3674         exit(10);
3675     }
3676         // setup polling for this file descriptor
3677         pfd.fd = fd;
3678         pfd.events = POLLIN;
3679
3680         if (singlefile==0) {
3681                 unlink(name);
3682         }
3683 }
3684
3685 //      Perform initialization when reading from a file
3686 static gs_retval_t dproto_replay_init(gs_sp_t device) {
3687     gs_sp_t  verbosetmp;
3688     gs_sp_t  delaytmp;
3689     gs_sp_t  gshubtmp;
3690     gs_sp_t  tempdel;
3691     gs_sp_t  singlefiletmp;
3692     gs_sp_t  fifotmp;   
3693     
3694     if ((name=get_iface_properties(device,"filename"))==0) {
3695                 print_error("dproto_init::No protobuf \"Filename\" defined");
3696                 exit(0);
3697         }
3698     
3699     if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) {
3700         if (strncmp(verbosetmp,"TRUE",4)==0) {
3701             verbose=1;
3702             fprintf(stderr,"VERBOSE ENABLED\n");
3703         } else {
3704             fprintf(stderr,"VERBOSE DISABLED\n");
3705         }
3706     }
3707     if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) {
3708         if (strncmp(singlefiletmp,"TRUE",4)==0) {
3709             singlefile=1;
3710             if (verbose)
3711                 fprintf(stderr,"SINGLEFILE ENABLED\n");
3712         } else {
3713             if (verbose)
3714                 fprintf(stderr,"SINGLEFILE DISABLED\n");
3715         }
3716     }
3717     if ((fifotmp=get_iface_properties(device,"fifo"))!=0) {
3718         if (strncmp(fifotmp,"TRUE",4)==0) {
3719             fifo=1;
3720             if (verbose)
3721                 fprintf(stderr,"FIFO ENABLED\n");
3722         } else {
3723             if (verbose)
3724                 fprintf(stderr,"FIFO DISABLED\n");
3725         }
3726     }   
3727     
3728     if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) {
3729         if (verbose) {
3730             fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay")));
3731         }
3732         startupdelay=atoi(get_iface_properties(device,"startupdelay"));
3733     }
3734     if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) {
3735         if (verbose) {
3736             fprintf(stderr,"PROTO format using gshub\n");
3737         }
3738         gshub=1;
3739     }
3740         init_cur_packet();
3741     
3742     return 0;
3743 }
3744
3745 //      Read one message from a socket
3746 static gs_retval_t dproto_read_socket()
3747 {
3748         gs_uint32_t i;
3749         gs_uint32_t p;
3750         gs_uint32_t x;
3751         gs_uint32_t pkg_len;
3752         gs_int32_t r;
3753         gs_retval_t ret=0;
3754         gs_uint32_t done;
3755         char *pkg_len_s;
3756         char *timestamp_s;
3757     
3758         if((ret=gs_read_buffer(line,28))<0) { return ret;}
3759         pkg_len_s = line+4;
3760         pkg_len = atoi(pkg_len_s);
3761
3762         if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;}
3763
3764         cur_packet.systemTime=time(0);
3765         ret = process_buffer(line, pkg_len);
3766         if(ret < 0){
3767             fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3768         }
3769
3770     return 0;
3771 }
3772     
3773 // read one message from a file
3774 static gs_retval_t dproto_read_tuple(){
3775     gs_uint32_t retlen=0;
3776     gs_uint32_t done=0;
3777     gs_uint32_t pkg_len=0;
3778     gs_uint32_t eof=0;
3779         char *pkg_len_s;
3780         char *timestamp_s;
3781         gs_retval_t ret;
3782
3783     if (fd==-1) next_file();
3784
3785         retlen = read_fifo(&pfd, line, 28, 10); // use 10ms timeout
3786
3787         if(retlen==0){
3788                 eof=1;
3789         }else if(retlen==-1) {          
3790                 return -1;              // -1 indicates a timeout
3791         }else if(retlen == 28) {
3792                 pkg_len_s = line+4;
3793                 timestamp_s = line+12;
3794                 pkg_len = atoi(pkg_len_s);
3795
3796                 if(pkg_len >= MAXLINE){
3797 // TODO be more graceful here, but a large pkg_len likely indicates
3798 //              a garbaged file.
3799                         print_error("Error in dproto_read_tuple, message too long.");
3800                         fprintf(stderr,"Error in dproto_read_tuple, message length is %d, max is %d\n",pkg_len, MAXLINE);
3801                         exit(10);
3802                 }
3803
3804                 // once we received header we will wait for the main message indefinetly
3805                 retlen = read_fifo(&pfd, line, pkg_len, -1);
3806                 if(retlen<pkg_len){
3807                         print_error("Error in dproto_read_tuple, line too short.");
3808                         fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
3809                         eof=1;
3810                 }
3811
3812                 if(eof==0){
3813                         cur_packet.systemTime=time(0);
3814                         ret = process_buffer(line, pkg_len);
3815                         if(ret < 0){
3816                 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3817                 }
3818                 }
3819         }
3820         if(eof){
3821             if (singlefile==1) {
3822                 if(verbose) {
3823                 fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
3824                 }
3825                 if (verbose) {
3826                 fprintf(stderr,"RTS SAYS BYe\n");
3827                 }
3828                 return -2;
3829         } else {
3830                 next_file();
3831         }
3832         }
3833
3834         return 0;
3835 }
3836     
3837 //      Main loop for processing records from a file or socket    
3838 static gs_retval_t dproto_process_file(){
3839     unsigned cnt=0;
3840     static unsigned totalcnt=0;
3841
3842     gs_retval_t retval;
3843     for(cnt=0;cnt<50000;cnt++) {
3844         if (gshub!=0) {
3845             retval=dproto_read_socket();
3846         } else {
3847             retval=dproto_read_tuple();
3848         }
3849         if (retval==-1) return 0; // got a timeout so service message queue
3850         if (retval==-2) {
3851             // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
3852             if (verbose)
3853                 fprintf(stderr,"Done processing waiting for things to shut down\n");
3854             rts_fta_done();
3855             // now just service message queue until we get killed or loose connectivity
3856             while (0==0) {
3857                 fta_start_service(0); // service all waiting messages
3858                 usleep(1000); // sleep a millisecond
3859             }
3860         } 
3861     }
3862     totalcnt=totalcnt+cnt;
3863     if (verbose) {
3864         fprintf(stderr,"Processed %u messages from %s\n",totalcnt, name);
3865     }
3866     return 0;
3867 }
3868     
3869 //      Entry for processing this interface
3870 gs_retval_t main_dproto(gs_int32_t devicenum, gs_sp_t device, gs_int32_t mapcnt, gs_sp_t map[]) {
3871     gs_uint32_t cont;
3872     endpoint mygshub;
3873         
3874     dproto_replay_init(device); // will call init_cur_packet
3875     this_device = strdup(device); // save for error messages.
3876         
3877     /* initalize host_lib */
3878     if (verbose) {
3879         fprintf(stderr,"Init LFTAs for %s\n",device);
3880     }
3881         
3882     if (hostlib_init(LFTA,0,devicenum,mapcnt,map)<0) {
3883         fprintf(stderr,"%s::error:could not initiate host lib for clearinghouse\n", device);
3884         exit(7);
3885     }
3886
3887 //--------------------------------------------
3888 //----  Generated dispatch code 
3889         if(strcmp(device,"CONRELEASE")==0){
3890                 process_buffer = &process_buffer_CONRELEASE;
3891         }
3892         if(strcmp(device,"RATDATAUSAGE")==0){
3893                 process_buffer = &process_buffer_RATDATAUSAGE;
3894         }
3895         if(strcmp(device,"RECONCOMPLETE")==0){
3896                 process_buffer = &process_buffer_RECONCOMPLETE;
3897         }
3898         if(strcmp(device,"RELCONF")==0){
3899                 process_buffer = &process_buffer_RELCONF;
3900         }
3901         if(strcmp(device,"RELREQ")==0){
3902                 process_buffer = &process_buffer_RELREQ;
3903         }
3904         if(strcmp(device,"RELREQACK")==0){
3905                 process_buffer = &process_buffer_RELREQACK;
3906         }
3907         if(strcmp(device,"SGNBRELEASERQD")==0){
3908                 process_buffer = &process_buffer_SGNBRELEASERQD;
3909         }
3910         if(strcmp(device,"RRCXFER")==0){
3911                 process_buffer = &process_buffer_RRCXFER;
3912         }
3913         if(strcmp(device,"ADDREQREJECT")==0){
3914                 process_buffer = &process_buffer_ADDREQREJECT;
3915         }
3916         if(strcmp(device,"SGNB_ADDITION_REQ_ACK")==0){
3917                 process_buffer = &process_buffer_SGNB_ADDITION_REQ_ACK;
3918         }
3919         if(strcmp(device,"SGNB_ADDITION_REQ")==0){
3920                 process_buffer = &process_buffer_SGNB_ADDITION_REQ;
3921         }
3922         if(strcmp(device,"SGNBMODCONF")==0){
3923                 process_buffer = &process_buffer_SGNBMODCONF;
3924         }
3925         if(strcmp(device,"SGNBMODREQ")==0){
3926                 process_buffer = &process_buffer_SGNBMODREQ;
3927         }
3928         if(strcmp(device,"SGNBMODREQACK")==0){
3929                 process_buffer = &process_buffer_SGNBMODREQACK;
3930         }
3931         if(strcmp(device,"SGNBMODREQREJECT")==0){
3932                 process_buffer = &process_buffer_SGNBMODREQREJECT;
3933         }
3934         if(strcmp(device,"SGNBMODREQUIRED")==0){
3935                 process_buffer = &process_buffer_SGNBMODREQUIRED;
3936         }
3937         if(strcmp(device,"SGNBMODREFUSE")==0){
3938                 process_buffer = &process_buffer_SGNBMODREFUSE;
3939         }
3940         if(strcmp(device,"SNSTATUSXFER")==0){
3941                 process_buffer = &process_buffer_SNSTATUSXFER;
3942         }
3943         if(process_buffer == NULL){
3944                 fprintf(stderr,"Error, interface %s not recognized\n",device);
3945                 exit(8);
3946         }
3947 //--------------------------------------------
3948
3949         
3950     fta_init(device); /*xxx probably should get error code back put Ted doesn't give me one*/
3951         
3952     cont=startupdelay+time(0);
3953         
3954     if (verbose) { fprintf(stderr,"Start startup delay"); }
3955         
3956     while (cont>time(NULL)) {
3957         if (fta_start_service(0)<0) {
3958             fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3959             exit(9);
3960         }
3961         usleep(1000); /* sleep for one millisecond */
3962     }
3963         
3964     if (verbose) { fprintf(stderr,"... Done\n"); }
3965         
3966     // open the connection to the data source
3967     if (gshub!=0) { init_socket();}
3968         
3969     // wait to process till we get the signal from GSHUB
3970     if (get_hub(&mygshub)!=0) {
3971         print_error("ERROR:could not find gshub for data source");
3972         exit(0);
3973     }
3974     while(get_startprocessing(mygshub,get_instance_name(),0)!=0) {
3975         usleep(100);
3976         if (fta_start_service(0)<0) {
3977             fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3978             exit(9);
3979         }
3980     }
3981         
3982    /* now we enter an endless loop to process data */
3983     if (verbose) {
3984         fprintf(stderr,"Start processing %s\n",device);
3985     }
3986         
3987     while (1==1) {
3988         if (dproto_process_file()<0) {
3989             fprintf(stderr,"%s::error:in processing packets\n", device);
3990             exit(8);
3991         }
3992         /* process all messages on the message queue*/
3993         if (fta_start_service(0)<0) {
3994             fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3995             exit(9);
3996         }
3997     }
3998     return 0;
3999 }
4000