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