/src/open5gs/lib/sbi/openapi/model/session_rule.c
Line | Count | Source |
1 | | |
2 | | #include <stdlib.h> |
3 | | #include <string.h> |
4 | | #include <stdio.h> |
5 | | #include "session_rule.h" |
6 | | |
7 | | OpenAPI_session_rule_t *OpenAPI_session_rule_create( |
8 | | OpenAPI_ambr_t *auth_sess_ambr, |
9 | | OpenAPI_authorized_default_qos_t *auth_def_qos, |
10 | | char *sess_rule_id, |
11 | | bool is_ref_um_data_null, |
12 | | char *ref_um_data, |
13 | | bool is_ref_um_n3g_data_null, |
14 | | char *ref_um_n3g_data, |
15 | | bool is_ref_cond_data_null, |
16 | | char *ref_cond_data |
17 | | ) |
18 | 0 | { |
19 | 0 | OpenAPI_session_rule_t *session_rule_local_var = ogs_malloc(sizeof(OpenAPI_session_rule_t)); |
20 | 0 | ogs_assert(session_rule_local_var); |
21 | | |
22 | 0 | session_rule_local_var->auth_sess_ambr = auth_sess_ambr; |
23 | 0 | session_rule_local_var->auth_def_qos = auth_def_qos; |
24 | 0 | session_rule_local_var->sess_rule_id = sess_rule_id; |
25 | 0 | session_rule_local_var->is_ref_um_data_null = is_ref_um_data_null; |
26 | 0 | session_rule_local_var->ref_um_data = ref_um_data; |
27 | 0 | session_rule_local_var->is_ref_um_n3g_data_null = is_ref_um_n3g_data_null; |
28 | 0 | session_rule_local_var->ref_um_n3g_data = ref_um_n3g_data; |
29 | 0 | session_rule_local_var->is_ref_cond_data_null = is_ref_cond_data_null; |
30 | 0 | session_rule_local_var->ref_cond_data = ref_cond_data; |
31 | |
|
32 | 0 | return session_rule_local_var; |
33 | 0 | } |
34 | | |
35 | | void OpenAPI_session_rule_free(OpenAPI_session_rule_t *session_rule) |
36 | 0 | { |
37 | 0 | OpenAPI_lnode_t *node = NULL; |
38 | |
|
39 | 0 | if (NULL == session_rule) { |
40 | 0 | return; |
41 | 0 | } |
42 | 0 | if (session_rule->auth_sess_ambr) { |
43 | 0 | OpenAPI_ambr_free(session_rule->auth_sess_ambr); |
44 | 0 | session_rule->auth_sess_ambr = NULL; |
45 | 0 | } |
46 | 0 | if (session_rule->auth_def_qos) { |
47 | 0 | OpenAPI_authorized_default_qos_free(session_rule->auth_def_qos); |
48 | 0 | session_rule->auth_def_qos = NULL; |
49 | 0 | } |
50 | 0 | if (session_rule->sess_rule_id) { |
51 | 0 | ogs_free(session_rule->sess_rule_id); |
52 | 0 | session_rule->sess_rule_id = NULL; |
53 | 0 | } |
54 | 0 | if (session_rule->ref_um_data) { |
55 | 0 | ogs_free(session_rule->ref_um_data); |
56 | 0 | session_rule->ref_um_data = NULL; |
57 | 0 | } |
58 | 0 | if (session_rule->ref_um_n3g_data) { |
59 | 0 | ogs_free(session_rule->ref_um_n3g_data); |
60 | 0 | session_rule->ref_um_n3g_data = NULL; |
61 | 0 | } |
62 | 0 | if (session_rule->ref_cond_data) { |
63 | 0 | ogs_free(session_rule->ref_cond_data); |
64 | 0 | session_rule->ref_cond_data = NULL; |
65 | 0 | } |
66 | 0 | ogs_free(session_rule); |
67 | 0 | } |
68 | | |
69 | | cJSON *OpenAPI_session_rule_convertToJSON(OpenAPI_session_rule_t *session_rule) |
70 | 0 | { |
71 | 0 | cJSON *item = NULL; |
72 | 0 | OpenAPI_lnode_t *node = NULL; |
73 | |
|
74 | 0 | if (session_rule == NULL) { |
75 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [SessionRule]"); |
76 | 0 | return NULL; |
77 | 0 | } |
78 | | |
79 | 0 | item = cJSON_CreateObject(); |
80 | 0 | if (session_rule->auth_sess_ambr) { |
81 | 0 | cJSON *auth_sess_ambr_local_JSON = OpenAPI_ambr_convertToJSON(session_rule->auth_sess_ambr); |
82 | 0 | if (auth_sess_ambr_local_JSON == NULL) { |
83 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [auth_sess_ambr]"); |
84 | 0 | goto end; |
85 | 0 | } |
86 | 0 | cJSON_AddItemToObject(item, "authSessAmbr", auth_sess_ambr_local_JSON); |
87 | 0 | if (item->child == NULL) { |
88 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [auth_sess_ambr]"); |
89 | 0 | goto end; |
90 | 0 | } |
91 | 0 | } |
92 | | |
93 | 0 | if (session_rule->auth_def_qos) { |
94 | 0 | cJSON *auth_def_qos_local_JSON = OpenAPI_authorized_default_qos_convertToJSON(session_rule->auth_def_qos); |
95 | 0 | if (auth_def_qos_local_JSON == NULL) { |
96 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [auth_def_qos]"); |
97 | 0 | goto end; |
98 | 0 | } |
99 | 0 | cJSON_AddItemToObject(item, "authDefQos", auth_def_qos_local_JSON); |
100 | 0 | if (item->child == NULL) { |
101 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [auth_def_qos]"); |
102 | 0 | goto end; |
103 | 0 | } |
104 | 0 | } |
105 | | |
106 | 0 | if (!session_rule->sess_rule_id) { |
107 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [sess_rule_id]"); |
108 | 0 | return NULL; |
109 | 0 | } |
110 | 0 | if (cJSON_AddStringToObject(item, "sessRuleId", session_rule->sess_rule_id) == NULL) { |
111 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [sess_rule_id]"); |
112 | 0 | goto end; |
113 | 0 | } |
114 | | |
115 | 0 | if (session_rule->ref_um_data) { |
116 | 0 | if (cJSON_AddStringToObject(item, "refUmData", session_rule->ref_um_data) == NULL) { |
117 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [ref_um_data]"); |
118 | 0 | goto end; |
119 | 0 | } |
120 | 0 | } else if (session_rule->is_ref_um_data_null) { |
121 | 0 | if (cJSON_AddNullToObject(item, "refUmData") == NULL) { |
122 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [ref_um_data]"); |
123 | 0 | goto end; |
124 | 0 | } |
125 | 0 | } |
126 | | |
127 | 0 | if (session_rule->ref_um_n3g_data) { |
128 | 0 | if (cJSON_AddStringToObject(item, "refUmN3gData", session_rule->ref_um_n3g_data) == NULL) { |
129 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [ref_um_n3g_data]"); |
130 | 0 | goto end; |
131 | 0 | } |
132 | 0 | } else if (session_rule->is_ref_um_n3g_data_null) { |
133 | 0 | if (cJSON_AddNullToObject(item, "refUmN3gData") == NULL) { |
134 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [ref_um_n3g_data]"); |
135 | 0 | goto end; |
136 | 0 | } |
137 | 0 | } |
138 | | |
139 | 0 | if (session_rule->ref_cond_data) { |
140 | 0 | if (cJSON_AddStringToObject(item, "refCondData", session_rule->ref_cond_data) == NULL) { |
141 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [ref_cond_data]"); |
142 | 0 | goto end; |
143 | 0 | } |
144 | 0 | } else if (session_rule->is_ref_cond_data_null) { |
145 | 0 | if (cJSON_AddNullToObject(item, "refCondData") == NULL) { |
146 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed [ref_cond_data]"); |
147 | 0 | goto end; |
148 | 0 | } |
149 | 0 | } |
150 | | |
151 | 0 | end: |
152 | 0 | return item; |
153 | 0 | } |
154 | | |
155 | | OpenAPI_session_rule_t *OpenAPI_session_rule_parseFromJSON(cJSON *session_ruleJSON) |
156 | 0 | { |
157 | 0 | OpenAPI_session_rule_t *session_rule_local_var = NULL; |
158 | 0 | OpenAPI_lnode_t *node = NULL; |
159 | 0 | cJSON *auth_sess_ambr = NULL; |
160 | 0 | OpenAPI_ambr_t *auth_sess_ambr_local_nonprim = NULL; |
161 | 0 | cJSON *auth_def_qos = NULL; |
162 | 0 | OpenAPI_authorized_default_qos_t *auth_def_qos_local_nonprim = NULL; |
163 | 0 | cJSON *sess_rule_id = NULL; |
164 | 0 | cJSON *ref_um_data = NULL; |
165 | 0 | cJSON *ref_um_n3g_data = NULL; |
166 | 0 | cJSON *ref_cond_data = NULL; |
167 | 0 | auth_sess_ambr = cJSON_GetObjectItemCaseSensitive(session_ruleJSON, "authSessAmbr"); |
168 | 0 | if (auth_sess_ambr) { |
169 | 0 | auth_sess_ambr_local_nonprim = OpenAPI_ambr_parseFromJSON(auth_sess_ambr); |
170 | 0 | if (!auth_sess_ambr_local_nonprim) { |
171 | 0 | ogs_error("OpenAPI_ambr_parseFromJSON failed [auth_sess_ambr]"); |
172 | 0 | goto end; |
173 | 0 | } |
174 | 0 | } |
175 | | |
176 | 0 | auth_def_qos = cJSON_GetObjectItemCaseSensitive(session_ruleJSON, "authDefQos"); |
177 | 0 | if (auth_def_qos) { |
178 | 0 | auth_def_qos_local_nonprim = OpenAPI_authorized_default_qos_parseFromJSON(auth_def_qos); |
179 | 0 | if (!auth_def_qos_local_nonprim) { |
180 | 0 | ogs_error("OpenAPI_authorized_default_qos_parseFromJSON failed [auth_def_qos]"); |
181 | 0 | goto end; |
182 | 0 | } |
183 | 0 | } |
184 | | |
185 | 0 | sess_rule_id = cJSON_GetObjectItemCaseSensitive(session_ruleJSON, "sessRuleId"); |
186 | 0 | if (!sess_rule_id) { |
187 | 0 | ogs_error("OpenAPI_session_rule_parseFromJSON() failed [sess_rule_id]"); |
188 | 0 | goto end; |
189 | 0 | } |
190 | 0 | if (!cJSON_IsString(sess_rule_id)) { |
191 | 0 | ogs_error("OpenAPI_session_rule_parseFromJSON() failed [sess_rule_id]"); |
192 | 0 | goto end; |
193 | 0 | } |
194 | | |
195 | 0 | ref_um_data = cJSON_GetObjectItemCaseSensitive(session_ruleJSON, "refUmData"); |
196 | 0 | if (ref_um_data) { |
197 | 0 | if (!cJSON_IsNull(ref_um_data)) { |
198 | 0 | if (!cJSON_IsString(ref_um_data) && !cJSON_IsNull(ref_um_data)) { |
199 | 0 | ogs_error("OpenAPI_session_rule_parseFromJSON() failed [ref_um_data]"); |
200 | 0 | goto end; |
201 | 0 | } |
202 | 0 | } |
203 | 0 | } |
204 | | |
205 | 0 | ref_um_n3g_data = cJSON_GetObjectItemCaseSensitive(session_ruleJSON, "refUmN3gData"); |
206 | 0 | if (ref_um_n3g_data) { |
207 | 0 | if (!cJSON_IsNull(ref_um_n3g_data)) { |
208 | 0 | if (!cJSON_IsString(ref_um_n3g_data) && !cJSON_IsNull(ref_um_n3g_data)) { |
209 | 0 | ogs_error("OpenAPI_session_rule_parseFromJSON() failed [ref_um_n3g_data]"); |
210 | 0 | goto end; |
211 | 0 | } |
212 | 0 | } |
213 | 0 | } |
214 | | |
215 | 0 | ref_cond_data = cJSON_GetObjectItemCaseSensitive(session_ruleJSON, "refCondData"); |
216 | 0 | if (ref_cond_data) { |
217 | 0 | if (!cJSON_IsNull(ref_cond_data)) { |
218 | 0 | if (!cJSON_IsString(ref_cond_data) && !cJSON_IsNull(ref_cond_data)) { |
219 | 0 | ogs_error("OpenAPI_session_rule_parseFromJSON() failed [ref_cond_data]"); |
220 | 0 | goto end; |
221 | 0 | } |
222 | 0 | } |
223 | 0 | } |
224 | | |
225 | 0 | session_rule_local_var = OpenAPI_session_rule_create ( |
226 | 0 | auth_sess_ambr ? auth_sess_ambr_local_nonprim : NULL, |
227 | 0 | auth_def_qos ? auth_def_qos_local_nonprim : NULL, |
228 | 0 | ogs_strdup(sess_rule_id->valuestring), |
229 | 0 | ref_um_data && cJSON_IsNull(ref_um_data) ? true : false, |
230 | 0 | ref_um_data && !cJSON_IsNull(ref_um_data) ? ogs_strdup(ref_um_data->valuestring) : NULL, |
231 | 0 | ref_um_n3g_data && cJSON_IsNull(ref_um_n3g_data) ? true : false, |
232 | 0 | ref_um_n3g_data && !cJSON_IsNull(ref_um_n3g_data) ? ogs_strdup(ref_um_n3g_data->valuestring) : NULL, |
233 | 0 | ref_cond_data && cJSON_IsNull(ref_cond_data) ? true : false, |
234 | 0 | ref_cond_data && !cJSON_IsNull(ref_cond_data) ? ogs_strdup(ref_cond_data->valuestring) : NULL |
235 | 0 | ); |
236 | |
|
237 | 0 | return session_rule_local_var; |
238 | 0 | end: |
239 | 0 | if (auth_sess_ambr_local_nonprim) { |
240 | 0 | OpenAPI_ambr_free(auth_sess_ambr_local_nonprim); |
241 | 0 | auth_sess_ambr_local_nonprim = NULL; |
242 | 0 | } |
243 | 0 | if (auth_def_qos_local_nonprim) { |
244 | 0 | OpenAPI_authorized_default_qos_free(auth_def_qos_local_nonprim); |
245 | 0 | auth_def_qos_local_nonprim = NULL; |
246 | 0 | } |
247 | 0 | return NULL; |
248 | 0 | } |
249 | | |
250 | | OpenAPI_session_rule_t *OpenAPI_session_rule_copy(OpenAPI_session_rule_t *dst, OpenAPI_session_rule_t *src) |
251 | 0 | { |
252 | 0 | cJSON *item = NULL; |
253 | 0 | char *content = NULL; |
254 | |
|
255 | 0 | ogs_assert(src); |
256 | 0 | item = OpenAPI_session_rule_convertToJSON(src); |
257 | 0 | if (!item) { |
258 | 0 | ogs_error("OpenAPI_session_rule_convertToJSON() failed"); |
259 | 0 | return NULL; |
260 | 0 | } |
261 | | |
262 | 0 | content = cJSON_Print(item); |
263 | 0 | cJSON_Delete(item); |
264 | |
|
265 | 0 | if (!content) { |
266 | 0 | ogs_error("cJSON_Print() failed"); |
267 | 0 | return NULL; |
268 | 0 | } |
269 | | |
270 | 0 | item = cJSON_Parse(content); |
271 | 0 | ogs_free(content); |
272 | 0 | if (!item) { |
273 | 0 | ogs_error("cJSON_Parse() failed"); |
274 | 0 | return NULL; |
275 | 0 | } |
276 | | |
277 | 0 | OpenAPI_session_rule_free(dst); |
278 | 0 | dst = OpenAPI_session_rule_parseFromJSON(item); |
279 | 0 | cJSON_Delete(item); |
280 | |
|
281 | 0 | return dst; |
282 | 0 | } |
283 | | |