Coverage Report

Created: 2026-06-30 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/open5gs/lib/sbi/openapi/model/epdg_info.c
Line
Count
Source
1
2
#include <stdlib.h>
3
#include <string.h>
4
#include <stdio.h>
5
#include "epdg_info.h"
6
7
OpenAPI_epdg_info_t *OpenAPI_epdg_info_create(
8
    OpenAPI_list_t *ipv4_endpoint_addresses,
9
    OpenAPI_list_t *ipv6_endpoint_addresses
10
)
11
0
{
12
0
    OpenAPI_epdg_info_t *epdg_info_local_var = ogs_malloc(sizeof(OpenAPI_epdg_info_t));
13
0
    ogs_assert(epdg_info_local_var);
14
15
0
    epdg_info_local_var->ipv4_endpoint_addresses = ipv4_endpoint_addresses;
16
0
    epdg_info_local_var->ipv6_endpoint_addresses = ipv6_endpoint_addresses;
17
18
0
    return epdg_info_local_var;
19
0
}
20
21
void OpenAPI_epdg_info_free(OpenAPI_epdg_info_t *epdg_info)
22
0
{
23
0
    OpenAPI_lnode_t *node = NULL;
24
25
0
    if (NULL == epdg_info) {
26
0
        return;
27
0
    }
28
0
    if (epdg_info->ipv4_endpoint_addresses) {
29
0
        OpenAPI_list_for_each(epdg_info->ipv4_endpoint_addresses, node) {
30
0
            ogs_free(node->data);
31
0
        }
32
0
        OpenAPI_list_free(epdg_info->ipv4_endpoint_addresses);
33
0
        epdg_info->ipv4_endpoint_addresses = NULL;
34
0
    }
35
0
    if (epdg_info->ipv6_endpoint_addresses) {
36
0
        OpenAPI_list_for_each(epdg_info->ipv6_endpoint_addresses, node) {
37
0
            ogs_free(node->data);
38
0
        }
39
0
        OpenAPI_list_free(epdg_info->ipv6_endpoint_addresses);
40
0
        epdg_info->ipv6_endpoint_addresses = NULL;
41
0
    }
42
0
    ogs_free(epdg_info);
43
0
}
44
45
cJSON *OpenAPI_epdg_info_convertToJSON(OpenAPI_epdg_info_t *epdg_info)
46
0
{
47
0
    cJSON *item = NULL;
48
0
    OpenAPI_lnode_t *node = NULL;
49
50
0
    if (epdg_info == NULL) {
51
0
        ogs_error("OpenAPI_epdg_info_convertToJSON() failed [EpdgInfo]");
52
0
        return NULL;
53
0
    }
54
55
0
    item = cJSON_CreateObject();
56
0
    if (epdg_info->ipv4_endpoint_addresses) {
57
0
    cJSON *ipv4_endpoint_addressesList = cJSON_AddArrayToObject(item, "ipv4EndpointAddresses");
58
0
    if (ipv4_endpoint_addressesList == NULL) {
59
0
        ogs_error("OpenAPI_epdg_info_convertToJSON() failed [ipv4_endpoint_addresses]");
60
0
        goto end;
61
0
    }
62
0
    OpenAPI_list_for_each(epdg_info->ipv4_endpoint_addresses, node) {
63
0
        if (cJSON_AddStringToObject(ipv4_endpoint_addressesList, "", (char*)node->data) == NULL) {
64
0
            ogs_error("OpenAPI_epdg_info_convertToJSON() failed [ipv4_endpoint_addresses]");
65
0
            goto end;
66
0
        }
67
0
    }
68
0
    }
69
70
0
    if (epdg_info->ipv6_endpoint_addresses) {
71
0
    cJSON *ipv6_endpoint_addressesList = cJSON_AddArrayToObject(item, "ipv6EndpointAddresses");
72
0
    if (ipv6_endpoint_addressesList == NULL) {
73
0
        ogs_error("OpenAPI_epdg_info_convertToJSON() failed [ipv6_endpoint_addresses]");
74
0
        goto end;
75
0
    }
76
0
    OpenAPI_list_for_each(epdg_info->ipv6_endpoint_addresses, node) {
77
0
        if (cJSON_AddStringToObject(ipv6_endpoint_addressesList, "", (char*)node->data) == NULL) {
78
0
            ogs_error("OpenAPI_epdg_info_convertToJSON() failed [ipv6_endpoint_addresses]");
79
0
            goto end;
80
0
        }
81
0
    }
82
0
    }
83
84
0
end:
85
0
    return item;
86
0
}
87
88
OpenAPI_epdg_info_t *OpenAPI_epdg_info_parseFromJSON(cJSON *epdg_infoJSON)
89
0
{
90
0
    OpenAPI_epdg_info_t *epdg_info_local_var = NULL;
91
0
    OpenAPI_lnode_t *node = NULL;
92
0
    cJSON *ipv4_endpoint_addresses = NULL;
93
0
    OpenAPI_list_t *ipv4_endpoint_addressesList = NULL;
94
0
    cJSON *ipv6_endpoint_addresses = NULL;
95
0
    OpenAPI_list_t *ipv6_endpoint_addressesList = NULL;
96
0
    ipv4_endpoint_addresses = cJSON_GetObjectItemCaseSensitive(epdg_infoJSON, "ipv4EndpointAddresses");
97
0
    if (ipv4_endpoint_addresses) {
98
0
        cJSON *ipv4_endpoint_addresses_local = NULL;
99
0
        if (!cJSON_IsArray(ipv4_endpoint_addresses)) {
100
0
            ogs_error("OpenAPI_epdg_info_parseFromJSON() failed [ipv4_endpoint_addresses]");
101
0
            goto end;
102
0
        }
103
104
0
        ipv4_endpoint_addressesList = OpenAPI_list_create();
105
106
0
        cJSON_ArrayForEach(ipv4_endpoint_addresses_local, ipv4_endpoint_addresses) {
107
0
            double *localDouble = NULL;
108
0
            int *localInt = NULL;
109
0
            if (!cJSON_IsString(ipv4_endpoint_addresses_local)) {
110
0
                ogs_error("OpenAPI_epdg_info_parseFromJSON() failed [ipv4_endpoint_addresses]");
111
0
                goto end;
112
0
            }
113
0
            OpenAPI_list_add(ipv4_endpoint_addressesList, ogs_strdup(ipv4_endpoint_addresses_local->valuestring));
114
0
        }
115
0
    }
116
117
0
    ipv6_endpoint_addresses = cJSON_GetObjectItemCaseSensitive(epdg_infoJSON, "ipv6EndpointAddresses");
118
0
    if (ipv6_endpoint_addresses) {
119
0
        cJSON *ipv6_endpoint_addresses_local = NULL;
120
0
        if (!cJSON_IsArray(ipv6_endpoint_addresses)) {
121
0
            ogs_error("OpenAPI_epdg_info_parseFromJSON() failed [ipv6_endpoint_addresses]");
122
0
            goto end;
123
0
        }
124
125
0
        ipv6_endpoint_addressesList = OpenAPI_list_create();
126
127
0
        cJSON_ArrayForEach(ipv6_endpoint_addresses_local, ipv6_endpoint_addresses) {
128
0
            double *localDouble = NULL;
129
0
            int *localInt = NULL;
130
0
            if (!cJSON_IsString(ipv6_endpoint_addresses_local)) {
131
0
                ogs_error("OpenAPI_epdg_info_parseFromJSON() failed [ipv6_endpoint_addresses]");
132
0
                goto end;
133
0
            }
134
0
            OpenAPI_list_add(ipv6_endpoint_addressesList, ogs_strdup(ipv6_endpoint_addresses_local->valuestring));
135
0
        }
136
0
    }
137
138
0
    epdg_info_local_var = OpenAPI_epdg_info_create (
139
0
        ipv4_endpoint_addresses ? ipv4_endpoint_addressesList : NULL,
140
0
        ipv6_endpoint_addresses ? ipv6_endpoint_addressesList : NULL
141
0
    );
142
143
0
    return epdg_info_local_var;
144
0
end:
145
0
    if (ipv4_endpoint_addressesList) {
146
0
        OpenAPI_list_for_each(ipv4_endpoint_addressesList, node) {
147
0
            ogs_free(node->data);
148
0
        }
149
0
        OpenAPI_list_free(ipv4_endpoint_addressesList);
150
0
        ipv4_endpoint_addressesList = NULL;
151
0
    }
152
0
    if (ipv6_endpoint_addressesList) {
153
0
        OpenAPI_list_for_each(ipv6_endpoint_addressesList, node) {
154
0
            ogs_free(node->data);
155
0
        }
156
0
        OpenAPI_list_free(ipv6_endpoint_addressesList);
157
0
        ipv6_endpoint_addressesList = NULL;
158
0
    }
159
0
    return NULL;
160
0
}
161
162
OpenAPI_epdg_info_t *OpenAPI_epdg_info_copy(OpenAPI_epdg_info_t *dst, OpenAPI_epdg_info_t *src)
163
0
{
164
0
    cJSON *item = NULL;
165
0
    char *content = NULL;
166
167
0
    ogs_assert(src);
168
0
    item = OpenAPI_epdg_info_convertToJSON(src);
169
0
    if (!item) {
170
0
        ogs_error("OpenAPI_epdg_info_convertToJSON() failed");
171
0
        return NULL;
172
0
    }
173
174
0
    content = cJSON_Print(item);
175
0
    cJSON_Delete(item);
176
177
0
    if (!content) {
178
0
        ogs_error("cJSON_Print() failed");
179
0
        return NULL;
180
0
    }
181
182
0
    item = cJSON_Parse(content);
183
0
    ogs_free(content);
184
0
    if (!item) {
185
0
        ogs_error("cJSON_Parse() failed");
186
0
        return NULL;
187
0
    }
188
189
0
    OpenAPI_epdg_info_free(dst);
190
0
    dst = OpenAPI_epdg_info_parseFromJSON(item);
191
0
    cJSON_Delete(item);
192
193
0
    return dst;
194
0
}
195