mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-02 04:53:37 +00:00
SCP(Model D) is now the default setting.
This commit is contained in:
@@ -253,6 +253,7 @@ ogs_sbi_request_t *ogs_sbi_build_request(ogs_sbi_message_t *message)
|
||||
{
|
||||
int i;
|
||||
ogs_sbi_request_t *request = NULL;
|
||||
OpenAPI_nf_type_e nf_type = OpenAPI_nf_type_NULL;
|
||||
char sender_timestamp[OGS_SBI_RFC7231_DATE_LEN];
|
||||
char *max_rsp_time = NULL;
|
||||
|
||||
@@ -313,21 +314,17 @@ ogs_sbi_request_t *ogs_sbi_build_request(ogs_sbi_message_t *message)
|
||||
discovery_option->num_of_service_names) {
|
||||
|
||||
/* send array items separated by a comma */
|
||||
char *v = NULL;
|
||||
|
||||
v = ogs_strdup(discovery_option->service_names[0]);
|
||||
ogs_expect_or_return_val(v, NULL);
|
||||
|
||||
if (discovery_option->num_of_service_names > 1)
|
||||
{
|
||||
int i;
|
||||
for (i = 1; i < discovery_option->num_of_service_names; i++)
|
||||
v = ogs_mstrcatf(v, ",%s", discovery_option->service_names[i]);
|
||||
char *v = ogs_sbi_discovery_option_build_service_names(
|
||||
discovery_option);
|
||||
if (v) {
|
||||
ogs_sbi_header_set(request->http.params,
|
||||
OGS_SBI_PARAM_SERVICE_NAMES, v);
|
||||
ogs_free(v);
|
||||
} else {
|
||||
ogs_warn("invalid service names failed[%d:%s]",
|
||||
discovery_option->num_of_service_names,
|
||||
discovery_option->service_names[0]);
|
||||
}
|
||||
|
||||
ogs_sbi_header_set(
|
||||
request->http.params, OGS_SBI_PARAM_SERVICE_NAMES, v);
|
||||
ogs_free(v);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,6 +446,14 @@ ogs_sbi_request_t *ogs_sbi_build_request(ogs_sbi_message_t *message)
|
||||
END
|
||||
}
|
||||
|
||||
nf_type = NF_INSTANCE_TYPE(ogs_sbi_self()->nf_instance);
|
||||
if (nf_type) {
|
||||
char *user_agent = OpenAPI_nf_type_ToString(nf_type);
|
||||
if (user_agent)
|
||||
ogs_sbi_header_set(request->http.headers,
|
||||
OGS_SBI_USER_AGENT, user_agent);
|
||||
}
|
||||
|
||||
ogs_assert(OGS_OK ==
|
||||
ogs_sbi_rfc7231_string(sender_timestamp, ogs_time_now()));
|
||||
ogs_sbi_header_set(request->http.headers,
|
||||
@@ -465,6 +470,14 @@ ogs_sbi_request_t *ogs_sbi_build_request(ogs_sbi_message_t *message)
|
||||
ogs_sbi_header_set(request->http.headers,
|
||||
OGS_SBI_ACCEPT_ENCODING, message->http.content_encoding);
|
||||
|
||||
if (message->http.custom.callback)
|
||||
ogs_sbi_header_set(request->http.headers,
|
||||
OGS_SBI_CUSTOM_CALLBACK, message->http.custom.callback);
|
||||
|
||||
if (message->http.custom.nrf_uri)
|
||||
ogs_sbi_header_set(request->http.headers,
|
||||
OGS_SBI_CUSTOM_NRF_URI, message->http.custom.nrf_uri);
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
@@ -532,37 +545,33 @@ int ogs_sbi_parse_request(
|
||||
/* Discovery Option Parameter */
|
||||
} else if (!strcmp(ogs_hash_this_key(hi),
|
||||
OGS_SBI_PARAM_TARGET_NF_INSTANCE_ID)) {
|
||||
discovery_option_presence = true;
|
||||
ogs_sbi_discovery_option_set_target_nf_instance_id(
|
||||
discovery_option, ogs_hash_this_val(hi));
|
||||
char *v = NULL;
|
||||
v = ogs_hash_this_val(hi);
|
||||
|
||||
if (v) {
|
||||
ogs_sbi_discovery_option_set_target_nf_instance_id(
|
||||
discovery_option, v);
|
||||
discovery_option_presence = true;
|
||||
}
|
||||
} else if (!strcmp(ogs_hash_this_key(hi),
|
||||
OGS_SBI_PARAM_REQUESTER_NF_INSTANCE_ID)) {
|
||||
discovery_option_presence = true;
|
||||
ogs_sbi_discovery_option_set_requester_nf_instance_id(
|
||||
discovery_option, ogs_hash_this_val(hi));
|
||||
char *v = NULL;
|
||||
v = ogs_hash_this_val(hi);
|
||||
|
||||
if (v) {
|
||||
ogs_sbi_discovery_option_set_requester_nf_instance_id(
|
||||
discovery_option, v);
|
||||
discovery_option_presence = true;
|
||||
}
|
||||
} else if (!strcmp(ogs_hash_this_key(hi),
|
||||
OGS_SBI_PARAM_SERVICE_NAMES)) {
|
||||
char *v = NULL;
|
||||
char *service_names;
|
||||
char *token;
|
||||
char *saveptr;
|
||||
|
||||
v = ogs_hash_this_val(hi);
|
||||
if (v) {
|
||||
service_names = ogs_strdup(v);
|
||||
ogs_assert(service_names);
|
||||
|
||||
token = ogs_strtok_r(service_names, ",", &saveptr);
|
||||
while (token != NULL)
|
||||
{
|
||||
discovery_option_presence = true;
|
||||
ogs_sbi_discovery_option_add_service_names(
|
||||
discovery_option, token);
|
||||
|
||||
token = ogs_strtok_r(NULL, ",", &saveptr);
|
||||
}
|
||||
|
||||
ogs_free(service_names);
|
||||
ogs_sbi_discovery_option_parse_service_names(
|
||||
discovery_option, v);
|
||||
discovery_option_presence = true;
|
||||
}
|
||||
|
||||
/* URL Query Parameter */
|
||||
@@ -671,11 +680,26 @@ int ogs_sbi_parse_request(
|
||||
message->http.content_type = ogs_hash_this_val(hi);
|
||||
} else if (!ogs_strcasecmp(ogs_hash_this_key(hi), OGS_SBI_ACCEPT)) {
|
||||
message->http.accept = ogs_hash_this_val(hi);
|
||||
} else if (!ogs_strcasecmp(ogs_hash_this_key(hi), OGS_SBI_USER_AGENT)) {
|
||||
char *v = ogs_hash_this_val(hi);
|
||||
if (v)
|
||||
message->http.requester_nf_type =
|
||||
OpenAPI_nf_type_FromString(v);
|
||||
} else if (!ogs_strcasecmp(ogs_hash_this_key(hi),
|
||||
OGS_SBI_CUSTOM_CALLBACK)) {
|
||||
message->http.custom.callback = ogs_hash_this_val(hi);
|
||||
}
|
||||
}
|
||||
|
||||
if (!message->http.requester_nf_type) {
|
||||
ogs_error("No User-Agent in HTTP2 Header");
|
||||
ogs_sbi_message_free(message);
|
||||
return OGS_ERROR;
|
||||
}
|
||||
|
||||
if (parse_content(message, &request->http) != OGS_OK) {
|
||||
ogs_error("parse_content() failed");
|
||||
ogs_sbi_message_free(message);
|
||||
return OGS_ERROR;
|
||||
}
|
||||
|
||||
@@ -2396,3 +2420,46 @@ void ogs_sbi_discovery_option_add_service_names(
|
||||
[discovery_option->num_of_service_names]);
|
||||
discovery_option->num_of_service_names++;
|
||||
}
|
||||
|
||||
char *ogs_sbi_discovery_option_build_service_names(
|
||||
ogs_sbi_discovery_option_t *discovery_option)
|
||||
{
|
||||
int i;
|
||||
char *service_names = NULL;
|
||||
|
||||
ogs_assert(discovery_option);
|
||||
|
||||
service_names = ogs_strdup(discovery_option->service_names[0]);
|
||||
ogs_expect_or_return_val(service_names, NULL);
|
||||
|
||||
if (discovery_option->num_of_service_names > 1) {
|
||||
for (i = 1; i < discovery_option->num_of_service_names; i++)
|
||||
service_names = ogs_mstrcatf(
|
||||
service_names, ",%s", discovery_option->service_names[i]);
|
||||
}
|
||||
|
||||
return service_names;
|
||||
}
|
||||
|
||||
void ogs_sbi_discovery_option_parse_service_names(
|
||||
ogs_sbi_discovery_option_t *discovery_option,
|
||||
char *service_names)
|
||||
{
|
||||
char *v = NULL;
|
||||
char *token = NULL;
|
||||
char *saveptr = NULL;
|
||||
|
||||
ogs_assert(discovery_option);
|
||||
ogs_assert(service_names);
|
||||
|
||||
v = ogs_strdup(service_names);
|
||||
ogs_assert(v);
|
||||
|
||||
token = ogs_strtok_r(v, ",", &saveptr);
|
||||
while (token != NULL) {
|
||||
ogs_sbi_discovery_option_add_service_names(discovery_option, token);
|
||||
token = ogs_strtok_r(NULL, ",", &saveptr);
|
||||
}
|
||||
|
||||
ogs_free(v);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user