forked from acouzens/open5gs
[SBI] Fixed invalid format of subscrCond (#2630)
The format of subscrCond must be 'oneOf'.
This commit is contained in:
parent
227dc1a90d
commit
d4f2b545a3
|
@ -1861,15 +1861,21 @@ ogs_sbi_subscription_spec_t *ogs_sbi_subscription_spec_add(
|
||||||
{
|
{
|
||||||
ogs_sbi_subscription_spec_t *subscription_spec = NULL;
|
ogs_sbi_subscription_spec_t *subscription_spec = NULL;
|
||||||
|
|
||||||
ogs_assert(nf_type);
|
/* Issue #2630 : The format of subscrCond is invalid. Must be 'oneOf'. */
|
||||||
|
ogs_assert(!nf_type || !service_name);
|
||||||
|
|
||||||
ogs_pool_alloc(&subscription_spec_pool, &subscription_spec);
|
ogs_pool_alloc(&subscription_spec_pool, &subscription_spec);
|
||||||
ogs_assert(subscription_spec);
|
ogs_assert(subscription_spec);
|
||||||
memset(subscription_spec, 0, sizeof(ogs_sbi_subscription_spec_t));
|
memset(subscription_spec, 0, sizeof(ogs_sbi_subscription_spec_t));
|
||||||
|
|
||||||
subscription_spec->subscr_cond.nf_type = nf_type;
|
if (nf_type)
|
||||||
if (service_name)
|
subscription_spec->subscr_cond.nf_type = nf_type;
|
||||||
|
else if (service_name)
|
||||||
subscription_spec->subscr_cond.service_name = ogs_strdup(service_name);
|
subscription_spec->subscr_cond.service_name = ogs_strdup(service_name);
|
||||||
|
else {
|
||||||
|
ogs_fatal("SubscrCond must be 'oneOf'.");
|
||||||
|
ogs_assert_if_reached();
|
||||||
|
}
|
||||||
|
|
||||||
ogs_list_add(&ogs_sbi_self()->subscription_spec_list, subscription_spec);
|
ogs_list_add(&ogs_sbi_self()->subscription_spec_list, subscription_spec);
|
||||||
|
|
||||||
|
|
|
@ -1501,6 +1501,10 @@ ogs_sbi_request_t *ogs_nnrf_nfm_build_status_subscribe(
|
||||||
ogs_assert(subscription_data);
|
ogs_assert(subscription_data);
|
||||||
ogs_assert(subscription_data->req_nf_type);
|
ogs_assert(subscription_data->req_nf_type);
|
||||||
|
|
||||||
|
/* Issue #2630 : The format of subscrCond is invalid. Must be 'oneOf'. */
|
||||||
|
ogs_assert(!subscription_data->subscr_cond.nf_type ||
|
||||||
|
!subscription_data->subscr_cond.service_name);
|
||||||
|
|
||||||
memset(&message, 0, sizeof(message));
|
memset(&message, 0, sizeof(message));
|
||||||
message.h.method = (char *)OGS_SBI_HTTP_METHOD_POST;
|
message.h.method = (char *)OGS_SBI_HTTP_METHOD_POST;
|
||||||
message.h.service.name = (char *)OGS_SBI_SERVICE_NAME_NNRF_NFM;
|
message.h.service.name = (char *)OGS_SBI_SERVICE_NAME_NNRF_NFM;
|
||||||
|
@ -1549,10 +1553,12 @@ ogs_sbi_request_t *ogs_nnrf_nfm_build_status_subscribe(
|
||||||
if (subscription_data->subscr_cond.nf_type) {
|
if (subscription_data->subscr_cond.nf_type) {
|
||||||
SubscrCond.nf_type = subscription_data->subscr_cond.nf_type;
|
SubscrCond.nf_type = subscription_data->subscr_cond.nf_type;
|
||||||
SubscriptionData->subscr_cond = &SubscrCond;
|
SubscriptionData->subscr_cond = &SubscrCond;
|
||||||
}
|
} else if (subscription_data->subscr_cond.service_name) {
|
||||||
if (subscription_data->subscr_cond.service_name) {
|
|
||||||
SubscrCond.service_name = subscription_data->subscr_cond.service_name;
|
SubscrCond.service_name = subscription_data->subscr_cond.service_name;
|
||||||
SubscriptionData->subscr_cond = &SubscrCond;
|
SubscriptionData->subscr_cond = &SubscrCond;
|
||||||
|
} else {
|
||||||
|
ogs_fatal("SubscrCond must be 'oneOf'.");
|
||||||
|
ogs_assert_if_reached();
|
||||||
}
|
}
|
||||||
|
|
||||||
message.SubscriptionData = SubscriptionData;
|
message.SubscriptionData = SubscriptionData;
|
||||||
|
|
|
@ -94,16 +94,25 @@ bool ogs_nnrf_nfm_send_nf_status_subscribe(
|
||||||
ogs_sbi_request_t *request = NULL;
|
ogs_sbi_request_t *request = NULL;
|
||||||
ogs_sbi_subscription_data_t *subscription_data = NULL;
|
ogs_sbi_subscription_data_t *subscription_data = NULL;
|
||||||
|
|
||||||
|
/* Issue #2630 : The format of subscrCond is invalid. Must be 'oneOf'. */
|
||||||
|
ogs_assert(!subscr_cond_nf_type || !subscr_cond_service_name);
|
||||||
|
|
||||||
subscription_data = ogs_sbi_subscription_data_add();
|
subscription_data = ogs_sbi_subscription_data_add();
|
||||||
ogs_assert(subscription_data);
|
ogs_assert(subscription_data);
|
||||||
|
|
||||||
subscription_data->req_nf_type = req_nf_type;
|
subscription_data->req_nf_type = req_nf_type;
|
||||||
if (req_nf_instance_id)
|
if (req_nf_instance_id)
|
||||||
subscription_data->req_nf_instance_id = ogs_strdup(req_nf_instance_id);
|
subscription_data->req_nf_instance_id = ogs_strdup(req_nf_instance_id);
|
||||||
subscription_data->subscr_cond.nf_type = subscr_cond_nf_type;
|
|
||||||
if (subscr_cond_service_name)
|
if (subscr_cond_nf_type)
|
||||||
|
subscription_data->subscr_cond.nf_type = subscr_cond_nf_type;
|
||||||
|
else if (subscr_cond_service_name)
|
||||||
subscription_data->subscr_cond.service_name =
|
subscription_data->subscr_cond.service_name =
|
||||||
ogs_strdup(subscr_cond_service_name);
|
ogs_strdup(subscr_cond_service_name);
|
||||||
|
else {
|
||||||
|
ogs_fatal("SubscrCond must be 'oneOf'.");
|
||||||
|
ogs_assert_if_reached();
|
||||||
|
}
|
||||||
|
|
||||||
request = ogs_nnrf_nfm_build_status_subscribe(subscription_data);
|
request = ogs_nnrf_nfm_build_status_subscribe(subscription_data);
|
||||||
if (!request) {
|
if (!request) {
|
||||||
|
|
|
@ -54,17 +54,17 @@ int amf_sbi_open(void)
|
||||||
|
|
||||||
/* Setup Subscription-Data */
|
/* Setup Subscription-Data */
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_AUSF, OGS_SBI_SERVICE_NAME_NAUSF_AUTH);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NAUSF_AUTH);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_UDM, OGS_SBI_SERVICE_NAME_NUDM_UECM);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NUDM_UECM);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_UDM, OGS_SBI_SERVICE_NAME_NUDM_SDM);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NUDM_SDM);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_PCF, OGS_SBI_SERVICE_NAME_NPCF_AM_POLICY_CONTROL);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NPCF_AM_POLICY_CONTROL);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_SMF, OGS_SBI_SERVICE_NAME_NSMF_PDUSESSION);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NSMF_PDUSESSION);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_NSSF, OGS_SBI_SERVICE_NAME_NNSSF_NSSELECTION);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NNSSF_NSSELECTION);
|
||||||
|
|
||||||
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
|
|
|
@ -51,7 +51,7 @@ int ausf_sbi_open(void)
|
||||||
|
|
||||||
/* Setup Subscription-Data */
|
/* Setup Subscription-Data */
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_UDM, OGS_SBI_SERVICE_NAME_NUDM_UEAU);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NUDM_UEAU);
|
||||||
|
|
||||||
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
|
|
|
@ -268,7 +268,7 @@ bool nrf_nnrf_handle_nf_status_subscribe(
|
||||||
if (!subscription_data->req_nf_instance_id) {
|
if (!subscription_data->req_nf_instance_id) {
|
||||||
ogs_error("ogs_strdup() failed");
|
ogs_error("ogs_strdup() failed");
|
||||||
ogs_sbi_subscription_data_remove(subscription_data);
|
ogs_sbi_subscription_data_remove(subscription_data);
|
||||||
return NULL;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +281,7 @@ bool nrf_nnrf_handle_nf_status_subscribe(
|
||||||
if (!SubscriptionData->subscription_id) {
|
if (!SubscriptionData->subscription_id) {
|
||||||
ogs_error("ogs_strdup() failed");
|
ogs_error("ogs_strdup() failed");
|
||||||
ogs_sbi_subscription_data_remove(subscription_data);
|
ogs_sbi_subscription_data_remove(subscription_data);
|
||||||
return NULL;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SubscriptionData->requester_features) {
|
if (SubscriptionData->requester_features) {
|
||||||
|
@ -302,15 +302,29 @@ bool nrf_nnrf_handle_nf_status_subscribe(
|
||||||
if (!SubscriptionData->nrf_supported_features) {
|
if (!SubscriptionData->nrf_supported_features) {
|
||||||
ogs_error("ogs_strdup() failed");
|
ogs_error("ogs_strdup() failed");
|
||||||
ogs_sbi_subscription_data_remove(subscription_data);
|
ogs_sbi_subscription_data_remove(subscription_data);
|
||||||
return NULL;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SubscrCond = SubscriptionData->subscr_cond;
|
SubscrCond = SubscriptionData->subscr_cond;
|
||||||
if (SubscrCond) {
|
if (SubscrCond) {
|
||||||
subscription_data->subscr_cond.nf_type = SubscrCond->nf_type;
|
|
||||||
if (SubscrCond->service_name)
|
/* Issue #2630 : The format of subscrCond is invalid. Must be 'oneOf'. */
|
||||||
|
if (SubscrCond->nf_type && SubscrCond->service_name) {
|
||||||
|
ogs_error("SubscrCond must be 'oneOf'");
|
||||||
|
ogs_sbi_subscription_data_remove(subscription_data);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SubscrCond->nf_type)
|
||||||
|
subscription_data->subscr_cond.nf_type = SubscrCond->nf_type;
|
||||||
|
else if (SubscrCond->service_name)
|
||||||
subscription_data->subscr_cond.service_name =
|
subscription_data->subscr_cond.service_name =
|
||||||
ogs_strdup(SubscrCond->service_name);
|
ogs_strdup(SubscrCond->service_name);
|
||||||
|
else {
|
||||||
|
ogs_error("No SubscrCond");
|
||||||
|
ogs_sbi_subscription_data_remove(subscription_data);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
subscription_data->notification_uri =
|
subscription_data->notification_uri =
|
||||||
|
|
|
@ -121,16 +121,14 @@ bool nrf_nnrf_nfm_send_nf_status_notify_all(
|
||||||
strcmp(subscription_data->req_nf_instance_id, nf_instance->id) == 0)
|
strcmp(subscription_data->req_nf_instance_id, nf_instance->id) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (subscription_data->subscr_cond.nf_type &&
|
/* Issue #2630 : The format of subscrCond is invalid. Must be 'oneOf'. */
|
||||||
subscription_data->subscr_cond.nf_type != nf_instance->nf_type)
|
if (subscription_data->subscr_cond.nf_type) {
|
||||||
continue;
|
|
||||||
|
|
||||||
if (subscription_data->req_nf_type &&
|
if (subscription_data->subscr_cond.nf_type != nf_instance->nf_type)
|
||||||
ogs_sbi_nf_instance_is_allowed_nf_type(
|
continue;
|
||||||
nf_instance, subscription_data->req_nf_type) == false)
|
|
||||||
continue;
|
} else if (subscription_data->subscr_cond.service_name) {
|
||||||
|
|
||||||
if (subscription_data->subscr_cond.service_name) {
|
|
||||||
ogs_sbi_nf_service_t *nf_service =
|
ogs_sbi_nf_service_t *nf_service =
|
||||||
ogs_sbi_nf_service_find_by_name(nf_instance,
|
ogs_sbi_nf_service_find_by_name(nf_instance,
|
||||||
subscription_data->subscr_cond.service_name);
|
subscription_data->subscr_cond.service_name);
|
||||||
|
@ -142,6 +140,11 @@ bool nrf_nnrf_nfm_send_nf_status_notify_all(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (subscription_data->req_nf_type &&
|
||||||
|
ogs_sbi_nf_instance_is_allowed_nf_type(
|
||||||
|
nf_instance, subscription_data->req_nf_type) == false)
|
||||||
|
continue;
|
||||||
|
|
||||||
rc = nrf_nnrf_nfm_send_nf_status_notify(
|
rc = nrf_nnrf_nfm_send_nf_status_notify(
|
||||||
subscription_data, event, nf_instance);
|
subscription_data, event, nf_instance);
|
||||||
if (rc == false) {
|
if (rc == false) {
|
||||||
|
|
|
@ -98,9 +98,9 @@ int pcf_sbi_open(void)
|
||||||
|
|
||||||
/* Setup Subscription-Data */
|
/* Setup Subscription-Data */
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_BSF, OGS_SBI_SERVICE_NAME_NBSF_MANAGEMENT);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NBSF_MANAGEMENT);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_UDR, OGS_SBI_SERVICE_NAME_NUDR_DR);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NUDR_DR);
|
||||||
|
|
||||||
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
|
|
|
@ -62,13 +62,13 @@ int smf_sbi_open(void)
|
||||||
|
|
||||||
/* Setup Subscription-Data */
|
/* Setup Subscription-Data */
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_AMF, OGS_SBI_SERVICE_NAME_NAMF_COMM);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NAMF_COMM);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_PCF, OGS_SBI_SERVICE_NAME_NPCF_SMPOLICYCONTROL);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NPCF_SMPOLICYCONTROL);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_UDM, OGS_SBI_SERVICE_NAME_NUDM_SDM);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NUDM_SDM);
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_UDM, OGS_SBI_SERVICE_NAME_NUDM_UECM);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NUDM_UECM);
|
||||||
|
|
||||||
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
|
|
|
@ -38,7 +38,7 @@ int af_sbi_open(void)
|
||||||
|
|
||||||
/* Setup Subscription-Data */
|
/* Setup Subscription-Data */
|
||||||
ogs_sbi_subscription_spec_add(
|
ogs_sbi_subscription_spec_add(
|
||||||
OpenAPI_nf_type_BSF, OGS_SBI_SERVICE_NAME_NBSF_MANAGEMENT);
|
OpenAPI_nf_type_NULL, OGS_SBI_SERVICE_NAME_NBSF_MANAGEMENT);
|
||||||
|
|
||||||
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
if (ogs_sbi_server_start_all(ogs_sbi_server_handler) != OGS_OK)
|
||||||
return OGS_ERROR;
|
return OGS_ERROR;
|
||||||
|
|
Loading…
Reference in New Issue