SCP(Model D) is now the default setting.

This commit is contained in:
Sukchan Lee
2022-10-22 11:26:04 +09:00
parent 7a14f2c505
commit 5ccb5f0f99
140 changed files with 4019 additions and 2607 deletions

View File

@@ -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);
}