mirror of
				https://github.com/open5gs/open5gs.git
				synced 2025-11-04 14:03:21 +00:00 
			
		
		
		
	[SCP] Support of Indirect Communication
This commit is contained in:
		@@ -68,13 +68,12 @@ bool ogs_sbi_send(ogs_sbi_nf_instance_t *nf_instance,
 | 
			
		||||
        ogs_freeaddrinfo(addr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* ogs_sbi_xact_remove() will call ogs_sbi_request_free()
 | 
			
		||||
     * As such, we'll use ogs_sbi_client_send_reqmem_persistent() */
 | 
			
		||||
    ogs_expect_or_return_val(true ==
 | 
			
		||||
        ogs_sbi_client_send_request(
 | 
			
		||||
        ogs_sbi_scp_send_reqmem_persistent(
 | 
			
		||||
            client, client_cb, request, xact), false);
 | 
			
		||||
 | 
			
		||||
    /* Prevent ogs_sbi_request_free() in ogs_sbi_xact_remove() */
 | 
			
		||||
    xact->request = NULL;
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -125,6 +124,23 @@ bool ogs_sbi_discover_and_send(ogs_sbi_xact_t *xact,
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ogs_nnrf_nfm_send_nf_register(
 | 
			
		||||
        ogs_sbi_nf_instance_t *nf_instance, ogs_sbi_request_t *(*build)(void))
 | 
			
		||||
{
 | 
			
		||||
    ogs_sbi_request_t *request = NULL;
 | 
			
		||||
    ogs_sbi_client_t *client = NULL;
 | 
			
		||||
 | 
			
		||||
    ogs_assert(nf_instance);
 | 
			
		||||
    client = nf_instance->client;
 | 
			
		||||
    ogs_assert(client);
 | 
			
		||||
    ogs_assert(build);
 | 
			
		||||
 | 
			
		||||
    request = (*build)();
 | 
			
		||||
    ogs_expect_or_return_val(request, false);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_scp_send_request(client, client->cb, request, nf_instance);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ogs_nnrf_nfm_send_nf_update(ogs_sbi_nf_instance_t *nf_instance)
 | 
			
		||||
{
 | 
			
		||||
    ogs_sbi_request_t *request = NULL;
 | 
			
		||||
@@ -137,8 +153,7 @@ bool ogs_nnrf_nfm_send_nf_update(ogs_sbi_nf_instance_t *nf_instance)
 | 
			
		||||
    request = ogs_nnrf_nfm_build_update();
 | 
			
		||||
    ogs_expect_or_return_val(request, false);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_client_send_request(
 | 
			
		||||
            client, client->cb, request, nf_instance);
 | 
			
		||||
    return ogs_sbi_scp_send_request(client, client->cb, request, nf_instance);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ogs_nnrf_nfm_send_nf_de_register(ogs_sbi_nf_instance_t *nf_instance)
 | 
			
		||||
@@ -153,8 +168,7 @@ bool ogs_nnrf_nfm_send_nf_de_register(ogs_sbi_nf_instance_t *nf_instance)
 | 
			
		||||
    request = ogs_nnrf_nfm_build_de_register();
 | 
			
		||||
    ogs_expect_or_return_val(request, false);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_client_send_request(
 | 
			
		||||
            client, client->cb, request, nf_instance);
 | 
			
		||||
    return ogs_sbi_scp_send_request(client, client->cb, request, nf_instance);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ogs_nnrf_nfm_send_nf_status_subscribe(ogs_sbi_client_t *client,
 | 
			
		||||
@@ -180,7 +194,7 @@ bool ogs_nnrf_nfm_send_nf_status_subscribe(ogs_sbi_client_t *client,
 | 
			
		||||
    request = ogs_nnrf_nfm_build_status_subscribe(subscription);
 | 
			
		||||
    ogs_expect_or_return_val(request, false);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_client_send_request(
 | 
			
		||||
    return ogs_sbi_scp_send_request(
 | 
			
		||||
            client, client->cb, request, subscription);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -191,13 +205,14 @@ bool ogs_nnrf_nfm_send_nf_status_unsubscribe(
 | 
			
		||||
    ogs_sbi_client_t *client = NULL;
 | 
			
		||||
 | 
			
		||||
    ogs_assert(subscription);
 | 
			
		||||
    client = subscription->client;
 | 
			
		||||
    ogs_assert(client);
 | 
			
		||||
 | 
			
		||||
    request = ogs_nnrf_nfm_build_status_unsubscribe(subscription);
 | 
			
		||||
    ogs_expect_or_return_val(request, false);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_client_send_request(
 | 
			
		||||
    client = subscription->client;
 | 
			
		||||
    ogs_assert(client);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_scp_send_request(
 | 
			
		||||
            client, client->cb, request, subscription);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -208,15 +223,15 @@ bool ogs_nnrf_disc_send_nf_discover(ogs_sbi_nf_instance_t *nf_instance,
 | 
			
		||||
    ogs_sbi_request_t *request = NULL;
 | 
			
		||||
 | 
			
		||||
    ogs_assert(nf_instance);
 | 
			
		||||
    ogs_assert(nf_instance->nf_type);
 | 
			
		||||
    client = nf_instance->client;
 | 
			
		||||
    ogs_assert(client);
 | 
			
		||||
 | 
			
		||||
    ogs_assert(ogs_sbi_self()->nf_instance);
 | 
			
		||||
    request = ogs_nnrf_disc_build_discover(
 | 
			
		||||
            target_nf_type, ogs_sbi_self()->nf_instance->nf_type);
 | 
			
		||||
    ogs_expect_or_return_val(request, false);
 | 
			
		||||
 | 
			
		||||
    client = nf_instance->client;
 | 
			
		||||
    ogs_assert(client);
 | 
			
		||||
 | 
			
		||||
    return ogs_sbi_client_send_request(client, client->cb, request, data);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user