forked from acouzens/open5gs
[SBI] Do not send empty arrays when registering to NRF
OpenAPI dictates that certain arrays should have at least one item, otherwise they should not be present. This includes lists for IPv4/v6 addresses, TAI/TAC lists, ... Add a check if there is at least 1 item, before creating an array. Also move variable declarations to inner blocks, to prevent some accidental usage out of wanted scope.
This commit is contained in:
parent
406e3f07dc
commit
00a86c5a73
|
@ -83,20 +83,15 @@ OpenAPI_nf_profile_t *ogs_nnrf_nfm_build_nf_profile(
|
|||
ogs_sbi_nf_info_t *nf_info = NULL;
|
||||
|
||||
OpenAPI_nf_profile_t *NFProfile = NULL;
|
||||
OpenAPI_list_t *Ipv4AddrList = NULL;
|
||||
OpenAPI_list_t *Ipv6AddrList = NULL;
|
||||
OpenAPI_list_t *AllowedNfTypeList = NULL;
|
||||
OpenAPI_list_t *NFServiceList = NULL;
|
||||
OpenAPI_map_t *NFServiceMap = NULL;
|
||||
OpenAPI_list_t *InfoList = NULL;
|
||||
OpenAPI_map_t *InfoMap = NULL;
|
||||
OpenAPI_smf_info_t *SmfInfo = NULL;
|
||||
OpenAPI_amf_info_t *AmfInfo = NULL;
|
||||
int InfoMapKey;
|
||||
|
||||
OpenAPI_lnode_t *node = NULL;
|
||||
|
||||
OpenAPI_amf_info_t *AmfInfo = NULL;
|
||||
|
||||
int i = 0;
|
||||
char *ipstr = NULL;
|
||||
|
||||
|
@ -137,6 +132,9 @@ OpenAPI_nf_profile_t *ogs_nnrf_nfm_build_nf_profile(
|
|||
NFProfile->is_load = true;
|
||||
NFProfile->load = nf_instance->load;
|
||||
|
||||
if (nf_instance->num_of_ipv4 > 0) {
|
||||
OpenAPI_list_t *Ipv4AddrList = NULL;
|
||||
|
||||
NFProfile->ipv4_addresses = Ipv4AddrList = OpenAPI_list_create();
|
||||
if (!Ipv4AddrList) {
|
||||
ogs_error("No Ipv4AddrList");
|
||||
|
@ -160,6 +158,10 @@ OpenAPI_nf_profile_t *ogs_nnrf_nfm_build_nf_profile(
|
|||
OpenAPI_list_add(Ipv4AddrList, ipstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_instance->num_of_ipv6 > 0) {
|
||||
OpenAPI_list_t *Ipv6AddrList = NULL;
|
||||
|
||||
NFProfile->ipv6_addresses = Ipv6AddrList = OpenAPI_list_create();
|
||||
if (!Ipv6AddrList) {
|
||||
|
@ -183,6 +185,10 @@ OpenAPI_nf_profile_t *ogs_nnrf_nfm_build_nf_profile(
|
|||
OpenAPI_list_add(Ipv6AddrList, ipstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_instance->num_of_allowed_nf_type) {
|
||||
OpenAPI_list_t *AllowedNfTypeList = NULL;
|
||||
|
||||
NFProfile->allowed_nf_types = AllowedNfTypeList = OpenAPI_list_create();
|
||||
if (!AllowedNfTypeList) {
|
||||
|
@ -195,6 +201,7 @@ OpenAPI_nf_profile_t *ogs_nnrf_nfm_build_nf_profile(
|
|||
OpenAPI_list_add(AllowedNfTypeList,
|
||||
(void *)(uintptr_t)nf_instance->allowed_nf_type[i]);
|
||||
}
|
||||
}
|
||||
|
||||
NFServiceList = OpenAPI_list_create();
|
||||
if (!NFServiceList) {
|
||||
|
@ -240,6 +247,8 @@ OpenAPI_nf_profile_t *ogs_nnrf_nfm_build_nf_profile(
|
|||
|
||||
if (OGS_SBI_FEATURES_IS_SET(
|
||||
supported_features, OGS_SBI_NNRF_NFM_SERVICE_MAP)) {
|
||||
OpenAPI_map_t *NFServiceMap = NULL;
|
||||
|
||||
NFServiceMap = OpenAPI_map_create(nf_service->id, NFService);
|
||||
if (!NFServiceMap) {
|
||||
ogs_error("No NFServiceMap");
|
||||
|
@ -553,6 +562,7 @@ static OpenAPI_nf_service_t *build_nf_service(
|
|||
}
|
||||
}
|
||||
|
||||
if (nf_service->num_of_allowed_nf_type > 0) {
|
||||
NFService->allowed_nf_types = AllowedNfTypeList = OpenAPI_list_create();
|
||||
if (!AllowedNfTypeList) {
|
||||
ogs_error("No AllowedNfTypeList");
|
||||
|
@ -564,6 +574,7 @@ static OpenAPI_nf_service_t *build_nf_service(
|
|||
OpenAPI_list_add(AllowedNfTypeList,
|
||||
(void *)(uintptr_t)nf_service->allowed_nf_type[i]);
|
||||
}
|
||||
}
|
||||
|
||||
NFService->is_priority = true;
|
||||
NFService->priority = nf_service->priority;
|
||||
|
@ -619,19 +630,6 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
int i, j;
|
||||
OpenAPI_smf_info_t *SmfInfo = NULL;
|
||||
|
||||
OpenAPI_list_t *sNssaiSmfInfoList = NULL;
|
||||
OpenAPI_snssai_smf_info_item_t *sNssaiSmfInfoItem = NULL;
|
||||
OpenAPI_snssai_t *sNssai = NULL;
|
||||
OpenAPI_list_t *DnnSmfInfoList = NULL;
|
||||
OpenAPI_dnn_smf_info_item_t *DnnSmfInfoItem = NULL;
|
||||
|
||||
OpenAPI_list_t *TaiList = NULL;
|
||||
OpenAPI_tai_t *TaiItem = NULL;
|
||||
OpenAPI_list_t *TaiRangeList = NULL;
|
||||
OpenAPI_tai_range_t *TaiRangeItem = NULL;
|
||||
OpenAPI_list_t *TacRangeList = NULL;
|
||||
OpenAPI_tac_range_t *TacRangeItem = NULL;
|
||||
|
||||
ogs_assert(nf_info);
|
||||
|
||||
SmfInfo = ogs_calloc(1, sizeof(*SmfInfo));
|
||||
|
@ -640,14 +638,21 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
if (nf_info->smf.num_of_slice > 0) {
|
||||
OpenAPI_list_t *sNssaiSmfInfoList = NULL;
|
||||
|
||||
SmfInfo->s_nssai_smf_info_list = sNssaiSmfInfoList = OpenAPI_list_create();
|
||||
if (!sNssaiSmfInfoList) {
|
||||
ogs_error("No sNssaiSmfInfoList");
|
||||
free_smf_info(SmfInfo);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < nf_info->smf.num_of_slice; i++) {
|
||||
OpenAPI_list_t *DnnSmfInfoList = NULL;
|
||||
OpenAPI_snssai_smf_info_item_t *sNssaiSmfInfoItem = NULL;
|
||||
OpenAPI_snssai_t *sNssai = NULL;
|
||||
|
||||
DnnSmfInfoList = OpenAPI_list_create();
|
||||
if (!DnnSmfInfoList) {
|
||||
ogs_error("No DnnSmfInfoList");
|
||||
|
@ -656,6 +661,8 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
}
|
||||
|
||||
for (j = 0; j < nf_info->smf.slice[i].num_of_dnn; j++) {
|
||||
OpenAPI_dnn_smf_info_item_t *DnnSmfInfoItem = NULL;
|
||||
|
||||
DnnSmfInfoItem = ogs_calloc(1, sizeof(*DnnSmfInfoItem));
|
||||
ogs_assert(DnnSmfInfoItem);
|
||||
DnnSmfInfoItem->dnn = nf_info->smf.slice[i].dnn[j];
|
||||
|
@ -685,6 +692,10 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
|
||||
OpenAPI_list_add(sNssaiSmfInfoList, sNssaiSmfInfoItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_info->smf.num_of_nr_tai > 0) {
|
||||
OpenAPI_list_t *TaiList = NULL;
|
||||
|
||||
SmfInfo->tai_list = TaiList = OpenAPI_list_create();
|
||||
if (!TaiList) {
|
||||
|
@ -694,6 +705,8 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
}
|
||||
|
||||
for (i = 0; i < nf_info->smf.num_of_nr_tai; i++) {
|
||||
OpenAPI_tai_t *TaiItem = NULL;
|
||||
|
||||
TaiItem = ogs_calloc(1, sizeof(*TaiItem));
|
||||
if (!TaiItem) {
|
||||
ogs_error("No TaiItem");
|
||||
|
@ -724,6 +737,10 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
|
||||
OpenAPI_list_add(TaiList, TaiItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_info->smf.num_of_nr_tai_range > 0) {
|
||||
OpenAPI_list_t *TaiRangeList = NULL;
|
||||
|
||||
SmfInfo->tai_range_list = TaiRangeList = OpenAPI_list_create();
|
||||
if (!TaiRangeList) {
|
||||
|
@ -733,6 +750,9 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
}
|
||||
|
||||
for (i = 0; i < nf_info->smf.num_of_nr_tai_range; i++) {
|
||||
OpenAPI_list_t *TacRangeList = NULL;
|
||||
OpenAPI_tai_range_t *TaiRangeItem = NULL;
|
||||
|
||||
TacRangeList = OpenAPI_list_create();
|
||||
if (!TacRangeList) {
|
||||
ogs_error("No TacRangeList");
|
||||
|
@ -743,6 +763,8 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
for (j = 0;
|
||||
j < nf_info->smf.nr_tai_range[i].num_of_tac_range;
|
||||
j++) {
|
||||
OpenAPI_tac_range_t *TacRangeItem = NULL;
|
||||
|
||||
TacRangeItem = ogs_calloc(1, sizeof(*TacRangeItem));
|
||||
ogs_assert(TacRangeItem);
|
||||
|
||||
|
@ -777,6 +799,7 @@ static OpenAPI_smf_info_t *build_smf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
|
||||
OpenAPI_list_add(TaiRangeList, TaiRangeItem);
|
||||
}
|
||||
}
|
||||
|
||||
return SmfInfo;
|
||||
}
|
||||
|
@ -786,16 +809,6 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
int i, j;
|
||||
OpenAPI_amf_info_t *AmfInfo = NULL;
|
||||
|
||||
OpenAPI_list_t *guamiAmfInfoList = NULL;
|
||||
OpenAPI_guami_t *guamiAmfInfoItem = NULL;
|
||||
|
||||
OpenAPI_list_t *TaiList = NULL;
|
||||
OpenAPI_tai_t *TaiItem = NULL;
|
||||
OpenAPI_list_t *TaiRangeList = NULL;
|
||||
OpenAPI_tai_range_t *TaiRangeItem = NULL;
|
||||
OpenAPI_list_t *TacRangeList = NULL;
|
||||
OpenAPI_tac_range_t *TacRangeItem = NULL;
|
||||
|
||||
ogs_assert(nf_info);
|
||||
|
||||
AmfInfo = ogs_calloc(1, sizeof(*AmfInfo));
|
||||
|
@ -817,6 +830,9 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (nf_info->amf.num_of_guami) {
|
||||
OpenAPI_list_t *guamiAmfInfoList = NULL;
|
||||
|
||||
AmfInfo->guami_list = guamiAmfInfoList = OpenAPI_list_create();
|
||||
if (!guamiAmfInfoList) {
|
||||
ogs_error("No guamiAmfInfoList");
|
||||
|
@ -825,6 +841,7 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
}
|
||||
|
||||
for (i = 0; i < nf_info->amf.num_of_guami; i++) {
|
||||
OpenAPI_guami_t *guamiAmfInfoItem = NULL;
|
||||
|
||||
guamiAmfInfoItem = ogs_calloc(1, sizeof(*guamiAmfInfoItem));
|
||||
if (!guamiAmfInfoItem) {
|
||||
|
@ -857,6 +874,10 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
|
||||
OpenAPI_list_add(guamiAmfInfoList, guamiAmfInfoItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_info->amf.num_of_nr_tai > 0) {
|
||||
OpenAPI_list_t *TaiList = NULL;
|
||||
|
||||
AmfInfo->tai_list = TaiList = OpenAPI_list_create();
|
||||
if (!TaiList) {
|
||||
|
@ -866,6 +887,8 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
}
|
||||
|
||||
for (i = 0; i < nf_info->amf.num_of_nr_tai; i++) {
|
||||
OpenAPI_tai_t *TaiItem = NULL;
|
||||
|
||||
TaiItem = ogs_calloc(1, sizeof(*TaiItem));
|
||||
if (!TaiList) {
|
||||
ogs_error("No TaiItem");
|
||||
|
@ -896,6 +919,10 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
|
||||
OpenAPI_list_add(TaiList, TaiItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_info->amf.num_of_nr_tai_range > 0) {
|
||||
OpenAPI_list_t *TaiRangeList = NULL;
|
||||
|
||||
AmfInfo->tai_range_list = TaiRangeList = OpenAPI_list_create();
|
||||
if (!TaiRangeList) {
|
||||
|
@ -905,6 +932,9 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
}
|
||||
|
||||
for (i = 0; i < nf_info->amf.num_of_nr_tai_range; i++) {
|
||||
OpenAPI_list_t *TacRangeList = NULL;
|
||||
OpenAPI_tai_range_t *TaiRangeItem = NULL;
|
||||
|
||||
TacRangeList = OpenAPI_list_create();
|
||||
if (!TacRangeList) {
|
||||
ogs_error("No TacRangeList");
|
||||
|
@ -915,6 +945,8 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
for (j = 0;
|
||||
j < nf_info->amf.nr_tai_range[i].num_of_tac_range;
|
||||
j++) {
|
||||
OpenAPI_tac_range_t *TacRangeItem = NULL;
|
||||
|
||||
TacRangeItem = ogs_calloc(1, sizeof(*TacRangeItem));
|
||||
ogs_assert(TacRangeItem);
|
||||
|
||||
|
@ -958,6 +990,7 @@ static OpenAPI_amf_info_t *build_amf_info(ogs_sbi_nf_info_t *nf_info)
|
|||
|
||||
OpenAPI_list_add(TaiRangeList, TaiRangeItem);
|
||||
}
|
||||
}
|
||||
|
||||
return AmfInfo;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue