Coverage Report

Created: 2026-11-12 06:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/pcscf_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "pcscf_info.h"
6
7
OpenAPI_pcscf_info_t *OpenAPI_pcscf_info_create(
8
    OpenAPI_list_t *access_type,
9
    OpenAPI_list_t *dnn_list,
10
    char *gm_fqdn,
11
    OpenAPI_list_t *gm_ipv4_addresses,
12
    OpenAPI_list_t *gm_ipv6_addresses,
13
    char *mw_fqdn,
14
    OpenAPI_list_t *mw_ipv4_addresses,
15
    OpenAPI_list_t *mw_ipv6_addresses,
16
    OpenAPI_list_t *served_ipv4_address_ranges,
17
    OpenAPI_list_t *served_ipv6_prefix_ranges,
18
    OpenAPI_list_t *supi_ranges,
19
    OpenAPI_list_t *gpsi_ranges,
20
    char *group_id,
21
    OpenAPI_list_t *serving_plmns
22
)
23
10.2k
{
24
10.2k
    OpenAPI_pcscf_info_t *pcscf_info_local_var = ogs_malloc(sizeof(OpenAPI_pcscf_info_t));
25
10.2k
    ogs_assert(pcscf_info_local_var);
26
27
10.2k
    pcscf_info_local_var->access_type = access_type;
28
10.2k
    pcscf_info_local_var->dnn_list = dnn_list;
29
10.2k
    pcscf_info_local_var->gm_fqdn = gm_fqdn;
30
10.2k
    pcscf_info_local_var->gm_ipv4_addresses = gm_ipv4_addresses;
31
10.2k
    pcscf_info_local_var->gm_ipv6_addresses = gm_ipv6_addresses;
32
10.2k
    pcscf_info_local_var->mw_fqdn = mw_fqdn;
33
10.2k
    pcscf_info_local_var->mw_ipv4_addresses = mw_ipv4_addresses;
34
10.2k
    pcscf_info_local_var->mw_ipv6_addresses = mw_ipv6_addresses;
35
10.2k
    pcscf_info_local_var->served_ipv4_address_ranges = served_ipv4_address_ranges;
36
10.2k
    pcscf_info_local_var->served_ipv6_prefix_ranges = served_ipv6_prefix_ranges;
37
10.2k
    pcscf_info_local_var->supi_ranges = supi_ranges;
38
10.2k
    pcscf_info_local_var->gpsi_ranges = gpsi_ranges;
39
10.2k
    pcscf_info_local_var->group_id = group_id;
40
10.2k
    pcscf_info_local_var->serving_plmns = serving_plmns;
41
42
10.2k
    return pcscf_info_local_var;
43
10.2k
}
44
45
void OpenAPI_pcscf_info_free(OpenAPI_pcscf_info_t *pcscf_info)
46
19.9k
{
47
19.9k
    OpenAPI_lnode_t *node = NULL;
48
49
19.9k
    if (NULL == pcscf_info) {
50
9.70k
        return;
51
9.70k
    }
52
10.2k
    if (pcscf_info->access_type) {
53
223
        OpenAPI_list_free(pcscf_info->access_type);
54
223
        pcscf_info->access_type = NULL;
55
223
    }
56
10.2k
    if (pcscf_info->dnn_list) {
57
405
        OpenAPI_list_for_each(pcscf_info->dnn_list, node) {
58
397
            ogs_free(node->data);
59
397
        }
60
405
        OpenAPI_list_free(pcscf_info->dnn_list);
61
405
        pcscf_info->dnn_list = NULL;
62
405
    }
63
10.2k
    if (pcscf_info->gm_fqdn) {
64
195
        ogs_free(pcscf_info->gm_fqdn);
65
195
        pcscf_info->gm_fqdn = NULL;
66
195
    }
67
10.2k
    if (pcscf_info->gm_ipv4_addresses) {
68
561
        OpenAPI_list_for_each(pcscf_info->gm_ipv4_addresses, node) {
69
561
            ogs_free(node->data);
70
561
        }
71
426
        OpenAPI_list_free(pcscf_info->gm_ipv4_addresses);
72
426
        pcscf_info->gm_ipv4_addresses = NULL;
73
426
    }
74
10.2k
    if (pcscf_info->gm_ipv6_addresses) {
75
568
        OpenAPI_list_for_each(pcscf_info->gm_ipv6_addresses, node) {
76
568
            ogs_free(node->data);
77
568
        }
78
301
        OpenAPI_list_free(pcscf_info->gm_ipv6_addresses);
79
301
        pcscf_info->gm_ipv6_addresses = NULL;
80
301
    }
81
10.2k
    if (pcscf_info->mw_fqdn) {
82
256
        ogs_free(pcscf_info->mw_fqdn);
83
256
        pcscf_info->mw_fqdn = NULL;
84
256
    }
85
10.2k
    if (pcscf_info->mw_ipv4_addresses) {
86
684
        OpenAPI_list_for_each(pcscf_info->mw_ipv4_addresses, node) {
87
684
            ogs_free(node->data);
88
684
        }
89
586
        OpenAPI_list_free(pcscf_info->mw_ipv4_addresses);
90
586
        pcscf_info->mw_ipv4_addresses = NULL;
91
586
    }
92
10.2k
    if (pcscf_info->mw_ipv6_addresses) {
93
530
        OpenAPI_list_for_each(pcscf_info->mw_ipv6_addresses, node) {
94
530
            ogs_free(node->data);
95
530
        }
96
475
        OpenAPI_list_free(pcscf_info->mw_ipv6_addresses);
97
475
        pcscf_info->mw_ipv6_addresses = NULL;
98
475
    }
99
10.2k
    if (pcscf_info->served_ipv4_address_ranges) {
100
292
        OpenAPI_list_for_each(pcscf_info->served_ipv4_address_ranges, node) {
101
292
            OpenAPI_ipv4_address_range_free(node->data);
102
292
        }
103
270
        OpenAPI_list_free(pcscf_info->served_ipv4_address_ranges);
104
270
        pcscf_info->served_ipv4_address_ranges = NULL;
105
270
    }
106
10.2k
    if (pcscf_info->served_ipv6_prefix_ranges) {
107
396
        OpenAPI_list_for_each(pcscf_info->served_ipv6_prefix_ranges, node) {
108
396
            OpenAPI_ipv6_prefix_range_free(node->data);
109
396
        }
110
396
        OpenAPI_list_free(pcscf_info->served_ipv6_prefix_ranges);
111
396
        pcscf_info->served_ipv6_prefix_ranges = NULL;
112
396
    }
113
10.2k
    if (pcscf_info->supi_ranges) {
114
561
        OpenAPI_list_for_each(pcscf_info->supi_ranges, node) {
115
561
            OpenAPI_supi_range_free(node->data);
116
561
        }
117
443
        OpenAPI_list_free(pcscf_info->supi_ranges);
118
443
        pcscf_info->supi_ranges = NULL;
119
443
    }
120
10.2k
    if (pcscf_info->gpsi_ranges) {
121
543
        OpenAPI_list_for_each(pcscf_info->gpsi_ranges, node) {
122
536
            OpenAPI_identity_range_free(node->data);
123
536
        }
124
543
        OpenAPI_list_free(pcscf_info->gpsi_ranges);
125
543
        pcscf_info->gpsi_ranges = NULL;
126
543
    }
127
10.2k
    if (pcscf_info->group_id) {
128
195
        ogs_free(pcscf_info->group_id);
129
195
        pcscf_info->group_id = NULL;
130
195
    }
131
10.2k
    if (pcscf_info->serving_plmns) {
132
171
        OpenAPI_list_for_each(pcscf_info->serving_plmns, node) {
133
171
            OpenAPI_plmn_id_free(node->data);
134
171
        }
135
145
        OpenAPI_list_free(pcscf_info->serving_plmns);
136
145
        pcscf_info->serving_plmns = NULL;
137
145
    }
138
10.2k
    ogs_free(pcscf_info);
139
10.2k
}
140
141
cJSON *OpenAPI_pcscf_info_convertToJSON(OpenAPI_pcscf_info_t *pcscf_info)
142
0
{
143
0
    cJSON *item = NULL;
144
0
    OpenAPI_lnode_t *node = NULL;
145
146
0
    if (pcscf_info == NULL) {
147
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [PcscfInfo]");
148
0
        return NULL;
149
0
    }
150
151
0
    item = cJSON_CreateObject();
152
0
    if (pcscf_info->access_type != OpenAPI_access_type_NULL) {
153
0
    cJSON *access_typeList = cJSON_AddArrayToObject(item, "accessType");
154
0
    if (access_typeList == NULL) {
155
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [access_type]");
156
0
        goto end;
157
0
    }
158
0
    OpenAPI_list_for_each(pcscf_info->access_type, node) {
159
0
        if (cJSON_AddStringToObject(access_typeList, "", OpenAPI_access_type_ToString((intptr_t)node->data)) == NULL) {
160
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [access_type]");
161
0
            goto end;
162
0
        }
163
0
    }
164
0
    }
165
166
0
    if (pcscf_info->dnn_list) {
167
0
    cJSON *dnn_listList = cJSON_AddArrayToObject(item, "dnnList");
168
0
    if (dnn_listList == NULL) {
169
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [dnn_list]");
170
0
        goto end;
171
0
    }
172
0
    OpenAPI_list_for_each(pcscf_info->dnn_list, node) {
173
0
        if (cJSON_AddStringToObject(dnn_listList, "", (char*)node->data) == NULL) {
174
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [dnn_list]");
175
0
            goto end;
176
0
        }
177
0
    }
178
0
    }
179
180
0
    if (pcscf_info->gm_fqdn) {
181
0
    if (cJSON_AddStringToObject(item, "gmFqdn", pcscf_info->gm_fqdn) == NULL) {
182
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gm_fqdn]");
183
0
        goto end;
184
0
    }
185
0
    }
186
187
0
    if (pcscf_info->gm_ipv4_addresses) {
188
0
    cJSON *gm_ipv4_addressesList = cJSON_AddArrayToObject(item, "gmIpv4Addresses");
189
0
    if (gm_ipv4_addressesList == NULL) {
190
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gm_ipv4_addresses]");
191
0
        goto end;
192
0
    }
193
0
    OpenAPI_list_for_each(pcscf_info->gm_ipv4_addresses, node) {
194
0
        if (cJSON_AddStringToObject(gm_ipv4_addressesList, "", (char*)node->data) == NULL) {
195
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gm_ipv4_addresses]");
196
0
            goto end;
197
0
        }
198
0
    }
199
0
    }
200
201
0
    if (pcscf_info->gm_ipv6_addresses) {
202
0
    cJSON *gm_ipv6_addressesList = cJSON_AddArrayToObject(item, "gmIpv6Addresses");
203
0
    if (gm_ipv6_addressesList == NULL) {
204
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gm_ipv6_addresses]");
205
0
        goto end;
206
0
    }
207
0
    OpenAPI_list_for_each(pcscf_info->gm_ipv6_addresses, node) {
208
0
        if (cJSON_AddStringToObject(gm_ipv6_addressesList, "", (char*)node->data) == NULL) {
209
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gm_ipv6_addresses]");
210
0
            goto end;
211
0
        }
212
0
    }
213
0
    }
214
215
0
    if (pcscf_info->mw_fqdn) {
216
0
    if (cJSON_AddStringToObject(item, "mwFqdn", pcscf_info->mw_fqdn) == NULL) {
217
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [mw_fqdn]");
218
0
        goto end;
219
0
    }
220
0
    }
221
222
0
    if (pcscf_info->mw_ipv4_addresses) {
223
0
    cJSON *mw_ipv4_addressesList = cJSON_AddArrayToObject(item, "mwIpv4Addresses");
224
0
    if (mw_ipv4_addressesList == NULL) {
225
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [mw_ipv4_addresses]");
226
0
        goto end;
227
0
    }
228
0
    OpenAPI_list_for_each(pcscf_info->mw_ipv4_addresses, node) {
229
0
        if (cJSON_AddStringToObject(mw_ipv4_addressesList, "", (char*)node->data) == NULL) {
230
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [mw_ipv4_addresses]");
231
0
            goto end;
232
0
        }
233
0
    }
234
0
    }
235
236
0
    if (pcscf_info->mw_ipv6_addresses) {
237
0
    cJSON *mw_ipv6_addressesList = cJSON_AddArrayToObject(item, "mwIpv6Addresses");
238
0
    if (mw_ipv6_addressesList == NULL) {
239
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [mw_ipv6_addresses]");
240
0
        goto end;
241
0
    }
242
0
    OpenAPI_list_for_each(pcscf_info->mw_ipv6_addresses, node) {
243
0
        if (cJSON_AddStringToObject(mw_ipv6_addressesList, "", (char*)node->data) == NULL) {
244
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [mw_ipv6_addresses]");
245
0
            goto end;
246
0
        }
247
0
    }
248
0
    }
249
250
0
    if (pcscf_info->served_ipv4_address_ranges) {
251
0
    cJSON *served_ipv4_address_rangesList = cJSON_AddArrayToObject(item, "servedIpv4AddressRanges");
252
0
    if (served_ipv4_address_rangesList == NULL) {
253
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [served_ipv4_address_ranges]");
254
0
        goto end;
255
0
    }
256
0
    OpenAPI_list_for_each(pcscf_info->served_ipv4_address_ranges, node) {
257
0
        cJSON *itemLocal = OpenAPI_ipv4_address_range_convertToJSON(node->data);
258
0
        if (itemLocal == NULL) {
259
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [served_ipv4_address_ranges]");
260
0
            goto end;
261
0
        }
262
0
        cJSON_AddItemToArray(served_ipv4_address_rangesList, itemLocal);
263
0
    }
264
0
    }
265
266
0
    if (pcscf_info->served_ipv6_prefix_ranges) {
267
0
    cJSON *served_ipv6_prefix_rangesList = cJSON_AddArrayToObject(item, "servedIpv6PrefixRanges");
268
0
    if (served_ipv6_prefix_rangesList == NULL) {
269
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [served_ipv6_prefix_ranges]");
270
0
        goto end;
271
0
    }
272
0
    OpenAPI_list_for_each(pcscf_info->served_ipv6_prefix_ranges, node) {
273
0
        cJSON *itemLocal = OpenAPI_ipv6_prefix_range_convertToJSON(node->data);
274
0
        if (itemLocal == NULL) {
275
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [served_ipv6_prefix_ranges]");
276
0
            goto end;
277
0
        }
278
0
        cJSON_AddItemToArray(served_ipv6_prefix_rangesList, itemLocal);
279
0
    }
280
0
    }
281
282
0
    if (pcscf_info->supi_ranges) {
283
0
    cJSON *supi_rangesList = cJSON_AddArrayToObject(item, "supiRanges");
284
0
    if (supi_rangesList == NULL) {
285
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [supi_ranges]");
286
0
        goto end;
287
0
    }
288
0
    OpenAPI_list_for_each(pcscf_info->supi_ranges, node) {
289
0
        cJSON *itemLocal = OpenAPI_supi_range_convertToJSON(node->data);
290
0
        if (itemLocal == NULL) {
291
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [supi_ranges]");
292
0
            goto end;
293
0
        }
294
0
        cJSON_AddItemToArray(supi_rangesList, itemLocal);
295
0
    }
296
0
    }
297
298
0
    if (pcscf_info->gpsi_ranges) {
299
0
    cJSON *gpsi_rangesList = cJSON_AddArrayToObject(item, "gpsiRanges");
300
0
    if (gpsi_rangesList == NULL) {
301
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gpsi_ranges]");
302
0
        goto end;
303
0
    }
304
0
    OpenAPI_list_for_each(pcscf_info->gpsi_ranges, node) {
305
0
        cJSON *itemLocal = OpenAPI_identity_range_convertToJSON(node->data);
306
0
        if (itemLocal == NULL) {
307
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [gpsi_ranges]");
308
0
            goto end;
309
0
        }
310
0
        cJSON_AddItemToArray(gpsi_rangesList, itemLocal);
311
0
    }
312
0
    }
313
314
0
    if (pcscf_info->group_id) {
315
0
    if (cJSON_AddStringToObject(item, "groupId", pcscf_info->group_id) == NULL) {
316
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [group_id]");
317
0
        goto end;
318
0
    }
319
0
    }
320
321
0
    if (pcscf_info->serving_plmns) {
322
0
    cJSON *serving_plmnsList = cJSON_AddArrayToObject(item, "servingPlmns");
323
0
    if (serving_plmnsList == NULL) {
324
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [serving_plmns]");
325
0
        goto end;
326
0
    }
327
0
    OpenAPI_list_for_each(pcscf_info->serving_plmns, node) {
328
0
        cJSON *itemLocal = OpenAPI_plmn_id_convertToJSON(node->data);
329
0
        if (itemLocal == NULL) {
330
0
            ogs_error("OpenAPI_pcscf_info_convertToJSON() failed [serving_plmns]");
331
0
            goto end;
332
0
        }
333
0
        cJSON_AddItemToArray(serving_plmnsList, itemLocal);
334
0
    }
335
0
    }
336
337
0
end:
338
0
    return item;
339
0
}
340
341
OpenAPI_pcscf_info_t *OpenAPI_pcscf_info_parseFromJSON(cJSON *pcscf_infoJSON)
342
19.1k
{
343
19.1k
    OpenAPI_pcscf_info_t *pcscf_info_local_var = NULL;
344
19.1k
    OpenAPI_lnode_t *node = NULL;
345
19.1k
    cJSON *access_type = NULL;
346
19.1k
    OpenAPI_list_t *access_typeList = NULL;
347
19.1k
    cJSON *dnn_list = NULL;
348
19.1k
    OpenAPI_list_t *dnn_listList = NULL;
349
19.1k
    cJSON *gm_fqdn = NULL;
350
19.1k
    cJSON *gm_ipv4_addresses = NULL;
351
19.1k
    OpenAPI_list_t *gm_ipv4_addressesList = NULL;
352
19.1k
    cJSON *gm_ipv6_addresses = NULL;
353
19.1k
    OpenAPI_list_t *gm_ipv6_addressesList = NULL;
354
19.1k
    cJSON *mw_fqdn = NULL;
355
19.1k
    cJSON *mw_ipv4_addresses = NULL;
356
19.1k
    OpenAPI_list_t *mw_ipv4_addressesList = NULL;
357
19.1k
    cJSON *mw_ipv6_addresses = NULL;
358
19.1k
    OpenAPI_list_t *mw_ipv6_addressesList = NULL;
359
19.1k
    cJSON *served_ipv4_address_ranges = NULL;
360
19.1k
    OpenAPI_list_t *served_ipv4_address_rangesList = NULL;
361
19.1k
    cJSON *served_ipv6_prefix_ranges = NULL;
362
19.1k
    OpenAPI_list_t *served_ipv6_prefix_rangesList = NULL;
363
19.1k
    cJSON *supi_ranges = NULL;
364
19.1k
    OpenAPI_list_t *supi_rangesList = NULL;
365
19.1k
    cJSON *gpsi_ranges = NULL;
366
19.1k
    OpenAPI_list_t *gpsi_rangesList = NULL;
367
19.1k
    cJSON *group_id = NULL;
368
19.1k
    cJSON *serving_plmns = NULL;
369
19.1k
    OpenAPI_list_t *serving_plmnsList = NULL;
370
19.1k
    access_type = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "accessType");
371
19.1k
    if (access_type) {
372
978
        cJSON *access_type_local = NULL;
373
978
        if (!cJSON_IsArray(access_type)) {
374
301
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [access_type]");
375
301
            goto end;
376
301
        }
377
378
677
        access_typeList = OpenAPI_list_create();
379
380
2.92k
        cJSON_ArrayForEach(access_type_local, access_type) {
381
2.92k
            OpenAPI_access_type_e localEnum = OpenAPI_access_type_NULL;
382
2.92k
            if (!cJSON_IsString(access_type_local)) {
383
194
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [access_type]");
384
194
                goto end;
385
194
            }
386
2.73k
            localEnum = OpenAPI_access_type_FromString(access_type_local->valuestring);
387
2.73k
            if (!localEnum) {
388
1.33k
                ogs_info("Enum value \"%s\" for field \"access_type\" is not supported. Ignoring it ...",
389
1.33k
                         access_type_local->valuestring);
390
1.39k
            } else {
391
1.39k
                OpenAPI_list_add(access_typeList, (void *)localEnum);
392
1.39k
            }
393
2.73k
        }
394
483
        if (access_typeList->count == 0) {
395
260
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed: Expected access_typeList to not be empty (after ignoring unsupported enum values).");
396
260
            goto end;
397
260
        }
398
483
    }
399
400
18.4k
    dnn_list = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "dnnList");
401
18.4k
    if (dnn_list) {
402
1.09k
        cJSON *dnn_list_local = NULL;
403
1.09k
        if (!cJSON_IsArray(dnn_list)) {
404
220
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [dnn_list]");
405
220
            goto end;
406
220
        }
407
408
879
        dnn_listList = OpenAPI_list_create();
409
410
1.48k
        cJSON_ArrayForEach(dnn_list_local, dnn_list) {
411
1.48k
            double *localDouble = NULL;
412
1.48k
            int *localInt = NULL;
413
1.48k
            if (!cJSON_IsString(dnn_list_local)) {
414
474
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [dnn_list]");
415
474
                goto end;
416
474
            }
417
1.01k
            OpenAPI_list_add(dnn_listList, ogs_strdup(dnn_list_local->valuestring));
418
1.01k
        }
419
879
    }
420
421
17.7k
    gm_fqdn = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "gmFqdn");
422
17.7k
    if (gm_fqdn) {
423
424
    if (!cJSON_IsString(gm_fqdn) && !cJSON_IsNull(gm_fqdn)) {
424
35
        ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gm_fqdn]");
425
35
        goto end;
426
35
    }
427
424
    }
428
429
17.6k
    gm_ipv4_addresses = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "gmIpv4Addresses");
430
17.6k
    if (gm_ipv4_addresses) {
431
1.03k
        cJSON *gm_ipv4_addresses_local = NULL;
432
1.03k
        if (!cJSON_IsArray(gm_ipv4_addresses)) {
433
196
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gm_ipv4_addresses]");
434
196
            goto end;
435
196
        }
436
437
836
        gm_ipv4_addressesList = OpenAPI_list_create();
438
439
1.36k
        cJSON_ArrayForEach(gm_ipv4_addresses_local, gm_ipv4_addresses) {
440
1.36k
            double *localDouble = NULL;
441
1.36k
            int *localInt = NULL;
442
1.36k
            if (!cJSON_IsString(gm_ipv4_addresses_local)) {
443
400
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gm_ipv4_addresses]");
444
400
                goto end;
445
400
            }
446
967
            OpenAPI_list_add(gm_ipv4_addressesList, ogs_strdup(gm_ipv4_addresses_local->valuestring));
447
967
        }
448
836
    }
449
450
17.0k
    gm_ipv6_addresses = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "gmIpv6Addresses");
451
17.0k
    if (gm_ipv6_addresses) {
452
837
        cJSON *gm_ipv6_addresses_local = NULL;
453
837
        if (!cJSON_IsArray(gm_ipv6_addresses)) {
454
228
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gm_ipv6_addresses]");
455
228
            goto end;
456
228
        }
457
458
609
        gm_ipv6_addressesList = OpenAPI_list_create();
459
460
1.15k
        cJSON_ArrayForEach(gm_ipv6_addresses_local, gm_ipv6_addresses) {
461
1.15k
            double *localDouble = NULL;
462
1.15k
            int *localInt = NULL;
463
1.15k
            if (!cJSON_IsString(gm_ipv6_addresses_local)) {
464
287
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gm_ipv6_addresses]");
465
287
                goto end;
466
287
            }
467
863
            OpenAPI_list_add(gm_ipv6_addressesList, ogs_strdup(gm_ipv6_addresses_local->valuestring));
468
863
        }
469
609
    }
470
471
16.5k
    mw_fqdn = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "mwFqdn");
472
16.5k
    if (mw_fqdn) {
473
527
    if (!cJSON_IsString(mw_fqdn) && !cJSON_IsNull(mw_fqdn)) {
474
66
        ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [mw_fqdn]");
475
66
        goto end;
476
66
    }
477
527
    }
478
479
16.4k
    mw_ipv4_addresses = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "mwIpv4Addresses");
480
16.4k
    if (mw_ipv4_addresses) {
481
1.53k
        cJSON *mw_ipv4_addresses_local = NULL;
482
1.53k
        if (!cJSON_IsArray(mw_ipv4_addresses)) {
483
444
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [mw_ipv4_addresses]");
484
444
            goto end;
485
444
        }
486
487
1.09k
        mw_ipv4_addressesList = OpenAPI_list_create();
488
489
1.62k
        cJSON_ArrayForEach(mw_ipv4_addresses_local, mw_ipv4_addresses) {
490
1.62k
            double *localDouble = NULL;
491
1.62k
            int *localInt = NULL;
492
1.62k
            if (!cJSON_IsString(mw_ipv4_addresses_local)) {
493
393
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [mw_ipv4_addresses]");
494
393
                goto end;
495
393
            }
496
1.23k
            OpenAPI_list_add(mw_ipv4_addressesList, ogs_strdup(mw_ipv4_addresses_local->valuestring));
497
1.23k
        }
498
1.09k
    }
499
500
15.6k
    mw_ipv6_addresses = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "mwIpv6Addresses");
501
15.6k
    if (mw_ipv6_addresses) {
502
1.21k
        cJSON *mw_ipv6_addresses_local = NULL;
503
1.21k
        if (!cJSON_IsArray(mw_ipv6_addresses)) {
504
268
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [mw_ipv6_addresses]");
505
268
            goto end;
506
268
        }
507
508
951
        mw_ipv6_addressesList = OpenAPI_list_create();
509
510
1.43k
        cJSON_ArrayForEach(mw_ipv6_addresses_local, mw_ipv6_addresses) {
511
1.43k
            double *localDouble = NULL;
512
1.43k
            int *localInt = NULL;
513
1.43k
            if (!cJSON_IsString(mw_ipv6_addresses_local)) {
514
442
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [mw_ipv6_addresses]");
515
442
                goto end;
516
442
            }
517
992
            OpenAPI_list_add(mw_ipv6_addressesList, ogs_strdup(mw_ipv6_addresses_local->valuestring));
518
992
        }
519
951
    }
520
521
14.9k
    served_ipv4_address_ranges = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "servedIpv4AddressRanges");
522
14.9k
    if (served_ipv4_address_ranges) {
523
1.03k
        cJSON *served_ipv4_address_ranges_local = NULL;
524
1.03k
        if (!cJSON_IsArray(served_ipv4_address_ranges)) {
525
297
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [served_ipv4_address_ranges]");
526
297
            goto end;
527
297
        }
528
529
742
        served_ipv4_address_rangesList = OpenAPI_list_create();
530
531
965
        cJSON_ArrayForEach(served_ipv4_address_ranges_local, served_ipv4_address_ranges) {
532
965
            if (!cJSON_IsObject(served_ipv4_address_ranges_local)) {
533
278
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [served_ipv4_address_ranges]");
534
278
                goto end;
535
278
            }
536
687
            OpenAPI_ipv4_address_range_t *served_ipv4_address_rangesItem = OpenAPI_ipv4_address_range_parseFromJSON(served_ipv4_address_ranges_local);
537
687
            if (!served_ipv4_address_rangesItem) {
538
194
                ogs_error("No served_ipv4_address_rangesItem");
539
194
                goto end;
540
194
            }
541
493
            OpenAPI_list_add(served_ipv4_address_rangesList, served_ipv4_address_rangesItem);
542
493
        }
543
742
    }
544
545
14.1k
    served_ipv6_prefix_ranges = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "servedIpv6PrefixRanges");
546
14.1k
    if (served_ipv6_prefix_ranges) {
547
1.17k
        cJSON *served_ipv6_prefix_ranges_local = NULL;
548
1.17k
        if (!cJSON_IsArray(served_ipv6_prefix_ranges)) {
549
202
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [served_ipv6_prefix_ranges]");
550
202
            goto end;
551
202
        }
552
553
977
        served_ipv6_prefix_rangesList = OpenAPI_list_create();
554
555
1.54k
        cJSON_ArrayForEach(served_ipv6_prefix_ranges_local, served_ipv6_prefix_ranges) {
556
1.54k
            if (!cJSON_IsObject(served_ipv6_prefix_ranges_local)) {
557
386
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [served_ipv6_prefix_ranges]");
558
386
                goto end;
559
386
            }
560
1.16k
            OpenAPI_ipv6_prefix_range_t *served_ipv6_prefix_rangesItem = OpenAPI_ipv6_prefix_range_parseFromJSON(served_ipv6_prefix_ranges_local);
561
1.16k
            if (!served_ipv6_prefix_rangesItem) {
562
195
                ogs_error("No served_ipv6_prefix_rangesItem");
563
195
                goto end;
564
195
            }
565
967
            OpenAPI_list_add(served_ipv6_prefix_rangesList, served_ipv6_prefix_rangesItem);
566
967
        }
567
977
    }
568
569
13.3k
    supi_ranges = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "supiRanges");
570
13.3k
    if (supi_ranges) {
571
1.26k
        cJSON *supi_ranges_local = NULL;
572
1.26k
        if (!cJSON_IsArray(supi_ranges)) {
573
221
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [supi_ranges]");
574
221
            goto end;
575
221
        }
576
577
1.03k
        supi_rangesList = OpenAPI_list_create();
578
579
1.56k
        cJSON_ArrayForEach(supi_ranges_local, supi_ranges) {
580
1.56k
            if (!cJSON_IsObject(supi_ranges_local)) {
581
402
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [supi_ranges]");
582
402
                goto end;
583
402
            }
584
1.16k
            OpenAPI_supi_range_t *supi_rangesItem = OpenAPI_supi_range_parseFromJSON(supi_ranges_local);
585
1.16k
            if (!supi_rangesItem) {
586
194
                ogs_error("No supi_rangesItem");
587
194
                goto end;
588
194
            }
589
967
            OpenAPI_list_add(supi_rangesList, supi_rangesItem);
590
967
        }
591
1.03k
    }
592
593
12.5k
    gpsi_ranges = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "gpsiRanges");
594
12.5k
    if (gpsi_ranges) {
595
1.35k
        cJSON *gpsi_ranges_local = NULL;
596
1.35k
        if (!cJSON_IsArray(gpsi_ranges)) {
597
198
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gpsi_ranges]");
598
198
            goto end;
599
198
        }
600
601
1.15k
        gpsi_rangesList = OpenAPI_list_create();
602
603
1.61k
        cJSON_ArrayForEach(gpsi_ranges_local, gpsi_ranges) {
604
1.61k
            if (!cJSON_IsObject(gpsi_ranges_local)) {
605
408
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [gpsi_ranges]");
606
408
                goto end;
607
408
            }
608
1.20k
            OpenAPI_identity_range_t *gpsi_rangesItem = OpenAPI_identity_range_parseFromJSON(gpsi_ranges_local);
609
1.20k
            if (!gpsi_rangesItem) {
610
202
                ogs_error("No gpsi_rangesItem");
611
202
                goto end;
612
202
            }
613
1.00k
            OpenAPI_list_add(gpsi_rangesList, gpsi_rangesItem);
614
1.00k
        }
615
1.15k
    }
616
617
11.7k
    group_id = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "groupId");
618
11.7k
    if (group_id) {
619
660
    if (!cJSON_IsString(group_id) && !cJSON_IsNull(group_id)) {
620
267
        ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [group_id]");
621
267
        goto end;
622
267
    }
623
660
    }
624
625
11.5k
    serving_plmns = cJSON_GetObjectItemCaseSensitive(pcscf_infoJSON, "servingPlmns");
626
11.5k
    if (serving_plmns) {
627
1.36k
        cJSON *serving_plmns_local = NULL;
628
1.36k
        if (!cJSON_IsArray(serving_plmns)) {
629
298
            ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [serving_plmns]");
630
298
            goto end;
631
298
        }
632
633
1.06k
        serving_plmnsList = OpenAPI_list_create();
634
635
1.23k
        cJSON_ArrayForEach(serving_plmns_local, serving_plmns) {
636
1.23k
            if (!cJSON_IsObject(serving_plmns_local)) {
637
228
                ogs_error("OpenAPI_pcscf_info_parseFromJSON() failed [serving_plmns]");
638
228
                goto end;
639
228
            }
640
1.00k
            OpenAPI_plmn_id_t *serving_plmnsItem = OpenAPI_plmn_id_parseFromJSON(serving_plmns_local);
641
1.00k
            if (!serving_plmnsItem) {
642
695
                ogs_error("No serving_plmnsItem");
643
695
                goto end;
644
695
            }
645
310
            OpenAPI_list_add(serving_plmnsList, serving_plmnsItem);
646
310
        }
647
1.06k
    }
648
649
10.2k
    pcscf_info_local_var = OpenAPI_pcscf_info_create (
650
10.2k
        access_type ? access_typeList : NULL,
651
10.2k
        dnn_list ? dnn_listList : NULL,
652
10.2k
        gm_fqdn && !cJSON_IsNull(gm_fqdn) ? ogs_strdup(gm_fqdn->valuestring) : NULL,
653
10.2k
        gm_ipv4_addresses ? gm_ipv4_addressesList : NULL,
654
10.2k
        gm_ipv6_addresses ? gm_ipv6_addressesList : NULL,
655
10.2k
        mw_fqdn && !cJSON_IsNull(mw_fqdn) ? ogs_strdup(mw_fqdn->valuestring) : NULL,
656
10.2k
        mw_ipv4_addresses ? mw_ipv4_addressesList : NULL,
657
10.2k
        mw_ipv6_addresses ? mw_ipv6_addressesList : NULL,
658
10.2k
        served_ipv4_address_ranges ? served_ipv4_address_rangesList : NULL,
659
10.2k
        served_ipv6_prefix_ranges ? served_ipv6_prefix_rangesList : NULL,
660
10.2k
        supi_ranges ? supi_rangesList : NULL,
661
10.2k
        gpsi_ranges ? gpsi_rangesList : NULL,
662
10.2k
        group_id && !cJSON_IsNull(group_id) ? ogs_strdup(group_id->valuestring) : NULL,
663
10.2k
        serving_plmns ? serving_plmnsList : NULL
664
10.2k
    );
665
666
10.2k
    return pcscf_info_local_var;
667
8.87k
end:
668
8.87k
    if (access_typeList) {
669
454
        OpenAPI_list_free(access_typeList);
670
454
        access_typeList = NULL;
671
454
    }
672
8.87k
    if (dnn_listList) {
673
613
        OpenAPI_list_for_each(dnn_listList, node) {
674
613
            ogs_free(node->data);
675
613
        }
676
474
        OpenAPI_list_free(dnn_listList);
677
474
        dnn_listList = NULL;
678
474
    }
679
8.87k
    if (gm_ipv4_addressesList) {
680
410
        OpenAPI_list_for_each(gm_ipv4_addressesList, node) {
681
406
            ogs_free(node->data);
682
406
        }
683
410
        OpenAPI_list_free(gm_ipv4_addressesList);
684
410
        gm_ipv4_addressesList = NULL;
685
410
    }
686
8.87k
    if (gm_ipv6_addressesList) {
687
308
        OpenAPI_list_for_each(gm_ipv6_addressesList, node) {
688
295
            ogs_free(node->data);
689
295
        }
690
308
        OpenAPI_list_free(gm_ipv6_addressesList);
691
308
        gm_ipv6_addressesList = NULL;
692
308
    }
693
8.87k
    if (mw_ipv4_addressesList) {
694
549
        OpenAPI_list_for_each(mw_ipv4_addressesList, node) {
695
549
            ogs_free(node->data);
696
549
        }
697
504
        OpenAPI_list_free(mw_ipv4_addressesList);
698
504
        mw_ipv4_addressesList = NULL;
699
504
    }
700
8.87k
    if (mw_ipv6_addressesList) {
701
476
        OpenAPI_list_for_each(mw_ipv6_addressesList, node) {
702
462
            ogs_free(node->data);
703
462
        }
704
476
        OpenAPI_list_free(mw_ipv6_addressesList);
705
476
        mw_ipv6_addressesList = NULL;
706
476
    }
707
8.87k
    if (served_ipv4_address_rangesList) {
708
472
        OpenAPI_list_for_each(served_ipv4_address_rangesList, node) {
709
201
            OpenAPI_ipv4_address_range_free(node->data);
710
201
        }
711
472
        OpenAPI_list_free(served_ipv4_address_rangesList);
712
472
        served_ipv4_address_rangesList = NULL;
713
472
    }
714
8.87k
    if (served_ipv6_prefix_rangesList) {
715
581
        OpenAPI_list_for_each(served_ipv6_prefix_rangesList, node) {
716
571
            OpenAPI_ipv6_prefix_range_free(node->data);
717
571
        }
718
581
        OpenAPI_list_free(served_ipv6_prefix_rangesList);
719
581
        served_ipv6_prefix_rangesList = NULL;
720
581
    }
721
8.87k
    if (supi_rangesList) {
722
596
        OpenAPI_list_for_each(supi_rangesList, node) {
723
406
            OpenAPI_supi_range_free(node->data);
724
406
        }
725
596
        OpenAPI_list_free(supi_rangesList);
726
596
        supi_rangesList = NULL;
727
596
    }
728
8.87k
    if (gpsi_rangesList) {
729
610
        OpenAPI_list_for_each(gpsi_rangesList, node) {
730
470
            OpenAPI_identity_range_free(node->data);
731
470
        }
732
610
        OpenAPI_list_free(gpsi_rangesList);
733
610
        gpsi_rangesList = NULL;
734
610
    }
735
8.87k
    if (serving_plmnsList) {
736
923
        OpenAPI_list_for_each(serving_plmnsList, node) {
737
139
            OpenAPI_plmn_id_free(node->data);
738
139
        }
739
923
        OpenAPI_list_free(serving_plmnsList);
740
923
        serving_plmnsList = NULL;
741
923
    }
742
8.87k
    return NULL;
743
11.5k
}
744
745
OpenAPI_pcscf_info_t *OpenAPI_pcscf_info_copy(OpenAPI_pcscf_info_t *dst, OpenAPI_pcscf_info_t *src)
746
0
{
747
0
    cJSON *item = NULL;
748
0
    char *content = NULL;
749
750
0
    ogs_assert(src);
751
0
    item = OpenAPI_pcscf_info_convertToJSON(src);
752
0
    if (!item) {
753
0
        ogs_error("OpenAPI_pcscf_info_convertToJSON() failed");
754
0
        return NULL;
755
0
    }
756
757
0
    content = cJSON_Print(item);
758
0
    cJSON_Delete(item);
759
760
0
    if (!content) {
761
0
        ogs_error("cJSON_Print() failed");
762
0
        return NULL;
763
0
    }
764
765
0
    item = cJSON_Parse(content);
766
0
    ogs_free(content);
767
0
    if (!item) {
768
0
        ogs_error("cJSON_Parse() failed");
769
0
        return NULL;
770
0
    }
771
772
0
    OpenAPI_pcscf_info_free(dst);
773
0
    dst = OpenAPI_pcscf_info_parseFromJSON(item);
774
0
    cJSON_Delete(item);
775
776
0
    return dst;
777
0
}
778