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