open5gs/lib/sbi/openapi/model/additional_measurement.c

356 lines
13 KiB
C

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "additional_measurement.h"
OpenAPI_additional_measurement_t *OpenAPI_additional_measurement_create(
OpenAPI_network_area_info_t *unexp_loc,
OpenAPI_list_t *unexp_flow_teps,
OpenAPI_list_t *unexp_wakes,
OpenAPI_address_list_t *ddos_attack,
OpenAPI_address_list_t *wrg_dest,
OpenAPI_list_t *circums
)
{
OpenAPI_additional_measurement_t *additional_measurement_local_var = ogs_malloc(sizeof(OpenAPI_additional_measurement_t));
ogs_assert(additional_measurement_local_var);
additional_measurement_local_var->unexp_loc = unexp_loc;
additional_measurement_local_var->unexp_flow_teps = unexp_flow_teps;
additional_measurement_local_var->unexp_wakes = unexp_wakes;
additional_measurement_local_var->ddos_attack = ddos_attack;
additional_measurement_local_var->wrg_dest = wrg_dest;
additional_measurement_local_var->circums = circums;
return additional_measurement_local_var;
}
void OpenAPI_additional_measurement_free(OpenAPI_additional_measurement_t *additional_measurement)
{
OpenAPI_lnode_t *node = NULL;
if (NULL == additional_measurement) {
return;
}
if (additional_measurement->unexp_loc) {
OpenAPI_network_area_info_free(additional_measurement->unexp_loc);
additional_measurement->unexp_loc = NULL;
}
if (additional_measurement->unexp_flow_teps) {
OpenAPI_list_for_each(additional_measurement->unexp_flow_teps, node) {
OpenAPI_ip_eth_flow_description_free(node->data);
}
OpenAPI_list_free(additional_measurement->unexp_flow_teps);
additional_measurement->unexp_flow_teps = NULL;
}
if (additional_measurement->unexp_wakes) {
OpenAPI_list_for_each(additional_measurement->unexp_wakes, node) {
ogs_free(node->data);
}
OpenAPI_list_free(additional_measurement->unexp_wakes);
additional_measurement->unexp_wakes = NULL;
}
if (additional_measurement->ddos_attack) {
OpenAPI_address_list_free(additional_measurement->ddos_attack);
additional_measurement->ddos_attack = NULL;
}
if (additional_measurement->wrg_dest) {
OpenAPI_address_list_free(additional_measurement->wrg_dest);
additional_measurement->wrg_dest = NULL;
}
if (additional_measurement->circums) {
OpenAPI_list_for_each(additional_measurement->circums, node) {
OpenAPI_circumstance_description_free(node->data);
}
OpenAPI_list_free(additional_measurement->circums);
additional_measurement->circums = NULL;
}
ogs_free(additional_measurement);
}
cJSON *OpenAPI_additional_measurement_convertToJSON(OpenAPI_additional_measurement_t *additional_measurement)
{
cJSON *item = NULL;
OpenAPI_lnode_t *node = NULL;
if (additional_measurement == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [AdditionalMeasurement]");
return NULL;
}
item = cJSON_CreateObject();
if (additional_measurement->unexp_loc) {
cJSON *unexp_loc_local_JSON = OpenAPI_network_area_info_convertToJSON(additional_measurement->unexp_loc);
if (unexp_loc_local_JSON == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [unexp_loc]");
goto end;
}
cJSON_AddItemToObject(item, "unexpLoc", unexp_loc_local_JSON);
if (item->child == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [unexp_loc]");
goto end;
}
}
if (additional_measurement->unexp_flow_teps) {
cJSON *unexp_flow_tepsList = cJSON_AddArrayToObject(item, "unexpFlowTeps");
if (unexp_flow_tepsList == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [unexp_flow_teps]");
goto end;
}
OpenAPI_list_for_each(additional_measurement->unexp_flow_teps, node) {
cJSON *itemLocal = OpenAPI_ip_eth_flow_description_convertToJSON(node->data);
if (itemLocal == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [unexp_flow_teps]");
goto end;
}
cJSON_AddItemToArray(unexp_flow_tepsList, itemLocal);
}
}
if (additional_measurement->unexp_wakes) {
cJSON *unexp_wakesList = cJSON_AddArrayToObject(item, "unexpWakes");
if (unexp_wakesList == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [unexp_wakes]");
goto end;
}
OpenAPI_list_for_each(additional_measurement->unexp_wakes, node) {
}
}
if (additional_measurement->ddos_attack) {
cJSON *ddos_attack_local_JSON = OpenAPI_address_list_convertToJSON(additional_measurement->ddos_attack);
if (ddos_attack_local_JSON == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [ddos_attack]");
goto end;
}
cJSON_AddItemToObject(item, "ddosAttack", ddos_attack_local_JSON);
if (item->child == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [ddos_attack]");
goto end;
}
}
if (additional_measurement->wrg_dest) {
cJSON *wrg_dest_local_JSON = OpenAPI_address_list_convertToJSON(additional_measurement->wrg_dest);
if (wrg_dest_local_JSON == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [wrg_dest]");
goto end;
}
cJSON_AddItemToObject(item, "wrgDest", wrg_dest_local_JSON);
if (item->child == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [wrg_dest]");
goto end;
}
}
if (additional_measurement->circums) {
cJSON *circumsList = cJSON_AddArrayToObject(item, "circums");
if (circumsList == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [circums]");
goto end;
}
OpenAPI_list_for_each(additional_measurement->circums, node) {
cJSON *itemLocal = OpenAPI_circumstance_description_convertToJSON(node->data);
if (itemLocal == NULL) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed [circums]");
goto end;
}
cJSON_AddItemToArray(circumsList, itemLocal);
}
}
end:
return item;
}
OpenAPI_additional_measurement_t *OpenAPI_additional_measurement_parseFromJSON(cJSON *additional_measurementJSON)
{
OpenAPI_additional_measurement_t *additional_measurement_local_var = NULL;
OpenAPI_lnode_t *node = NULL;
cJSON *unexp_loc = NULL;
OpenAPI_network_area_info_t *unexp_loc_local_nonprim = NULL;
cJSON *unexp_flow_teps = NULL;
OpenAPI_list_t *unexp_flow_tepsList = NULL;
cJSON *unexp_wakes = NULL;
OpenAPI_list_t *unexp_wakesList = NULL;
cJSON *ddos_attack = NULL;
OpenAPI_address_list_t *ddos_attack_local_nonprim = NULL;
cJSON *wrg_dest = NULL;
OpenAPI_address_list_t *wrg_dest_local_nonprim = NULL;
cJSON *circums = NULL;
OpenAPI_list_t *circumsList = NULL;
unexp_loc = cJSON_GetObjectItemCaseSensitive(additional_measurementJSON, "unexpLoc");
if (unexp_loc) {
unexp_loc_local_nonprim = OpenAPI_network_area_info_parseFromJSON(unexp_loc);
if (!unexp_loc_local_nonprim) {
ogs_error("OpenAPI_network_area_info_parseFromJSON failed [unexp_loc]");
goto end;
}
}
unexp_flow_teps = cJSON_GetObjectItemCaseSensitive(additional_measurementJSON, "unexpFlowTeps");
if (unexp_flow_teps) {
cJSON *unexp_flow_teps_local = NULL;
if (!cJSON_IsArray(unexp_flow_teps)) {
ogs_error("OpenAPI_additional_measurement_parseFromJSON() failed [unexp_flow_teps]");
goto end;
}
unexp_flow_tepsList = OpenAPI_list_create();
cJSON_ArrayForEach(unexp_flow_teps_local, unexp_flow_teps) {
if (!cJSON_IsObject(unexp_flow_teps_local)) {
ogs_error("OpenAPI_additional_measurement_parseFromJSON() failed [unexp_flow_teps]");
goto end;
}
OpenAPI_ip_eth_flow_description_t *unexp_flow_tepsItem = OpenAPI_ip_eth_flow_description_parseFromJSON(unexp_flow_teps_local);
if (!unexp_flow_tepsItem) {
ogs_error("No unexp_flow_tepsItem");
goto end;
}
OpenAPI_list_add(unexp_flow_tepsList, unexp_flow_tepsItem);
}
}
unexp_wakes = cJSON_GetObjectItemCaseSensitive(additional_measurementJSON, "unexpWakes");
if (unexp_wakes) {
cJSON *unexp_wakes_local = NULL;
if (!cJSON_IsArray(unexp_wakes)) {
ogs_error("OpenAPI_additional_measurement_parseFromJSON() failed [unexp_wakes]");
goto end;
}
unexp_wakesList = OpenAPI_list_create();
cJSON_ArrayForEach(unexp_wakes_local, unexp_wakes) {
double *localDouble = NULL;
int *localInt = NULL;
}
}
ddos_attack = cJSON_GetObjectItemCaseSensitive(additional_measurementJSON, "ddosAttack");
if (ddos_attack) {
ddos_attack_local_nonprim = OpenAPI_address_list_parseFromJSON(ddos_attack);
if (!ddos_attack_local_nonprim) {
ogs_error("OpenAPI_address_list_parseFromJSON failed [ddos_attack]");
goto end;
}
}
wrg_dest = cJSON_GetObjectItemCaseSensitive(additional_measurementJSON, "wrgDest");
if (wrg_dest) {
wrg_dest_local_nonprim = OpenAPI_address_list_parseFromJSON(wrg_dest);
if (!wrg_dest_local_nonprim) {
ogs_error("OpenAPI_address_list_parseFromJSON failed [wrg_dest]");
goto end;
}
}
circums = cJSON_GetObjectItemCaseSensitive(additional_measurementJSON, "circums");
if (circums) {
cJSON *circums_local = NULL;
if (!cJSON_IsArray(circums)) {
ogs_error("OpenAPI_additional_measurement_parseFromJSON() failed [circums]");
goto end;
}
circumsList = OpenAPI_list_create();
cJSON_ArrayForEach(circums_local, circums) {
if (!cJSON_IsObject(circums_local)) {
ogs_error("OpenAPI_additional_measurement_parseFromJSON() failed [circums]");
goto end;
}
OpenAPI_circumstance_description_t *circumsItem = OpenAPI_circumstance_description_parseFromJSON(circums_local);
if (!circumsItem) {
ogs_error("No circumsItem");
goto end;
}
OpenAPI_list_add(circumsList, circumsItem);
}
}
additional_measurement_local_var = OpenAPI_additional_measurement_create (
unexp_loc ? unexp_loc_local_nonprim : NULL,
unexp_flow_teps ? unexp_flow_tepsList : NULL,
unexp_wakes ? unexp_wakesList : NULL,
ddos_attack ? ddos_attack_local_nonprim : NULL,
wrg_dest ? wrg_dest_local_nonprim : NULL,
circums ? circumsList : NULL
);
return additional_measurement_local_var;
end:
if (unexp_loc_local_nonprim) {
OpenAPI_network_area_info_free(unexp_loc_local_nonprim);
unexp_loc_local_nonprim = NULL;
}
if (unexp_flow_tepsList) {
OpenAPI_list_for_each(unexp_flow_tepsList, node) {
OpenAPI_ip_eth_flow_description_free(node->data);
}
OpenAPI_list_free(unexp_flow_tepsList);
unexp_flow_tepsList = NULL;
}
if (unexp_wakesList) {
OpenAPI_list_for_each(unexp_wakesList, node) {
ogs_free(node->data);
}
OpenAPI_list_free(unexp_wakesList);
unexp_wakesList = NULL;
}
if (ddos_attack_local_nonprim) {
OpenAPI_address_list_free(ddos_attack_local_nonprim);
ddos_attack_local_nonprim = NULL;
}
if (wrg_dest_local_nonprim) {
OpenAPI_address_list_free(wrg_dest_local_nonprim);
wrg_dest_local_nonprim = NULL;
}
if (circumsList) {
OpenAPI_list_for_each(circumsList, node) {
OpenAPI_circumstance_description_free(node->data);
}
OpenAPI_list_free(circumsList);
circumsList = NULL;
}
return NULL;
}
OpenAPI_additional_measurement_t *OpenAPI_additional_measurement_copy(OpenAPI_additional_measurement_t *dst, OpenAPI_additional_measurement_t *src)
{
cJSON *item = NULL;
char *content = NULL;
ogs_assert(src);
item = OpenAPI_additional_measurement_convertToJSON(src);
if (!item) {
ogs_error("OpenAPI_additional_measurement_convertToJSON() failed");
return NULL;
}
content = cJSON_Print(item);
cJSON_Delete(item);
if (!content) {
ogs_error("cJSON_Print() failed");
return NULL;
}
item = cJSON_Parse(content);
ogs_free(content);
if (!item) {
ogs_error("cJSON_Parse() failed");
return NULL;
}
OpenAPI_additional_measurement_free(dst);
dst = OpenAPI_additional_measurement_parseFromJSON(item);
cJSON_Delete(item);
return dst;
}