[PCF] fix the 'NULL' AfEvent in VoNR (#1120)

This commit is contained in:
Sukchan Lee 2021-08-08 09:10:37 +09:00
parent 68edcd6438
commit 831b29973f
13 changed files with 117 additions and 610 deletions

View File

@ -1,596 +0,0 @@
CMakeLists.txt
README.md
api/IndividualSubscriptionDocumentAPI.c
api/IndividualSubscriptionDocumentAPI.h
api/IndividualUeContextDocumentAPI.c
api/IndividualUeContextDocumentAPI.h
api/N1N2IndividualSubscriptionDocumentAPI.c
api/N1N2IndividualSubscriptionDocumentAPI.h
api/N1N2MessageCollectionDocumentAPI.c
api/N1N2MessageCollectionDocumentAPI.h
api/N1N2SubscriptionsCollectionForIndividualUEContextsDocumentAPI.c
api/N1N2SubscriptionsCollectionForIndividualUEContextsDocumentAPI.h
api/NonUEN2MessageNotificationIndividualSubscriptionDocumentAPI.c
api/NonUEN2MessageNotificationIndividualSubscriptionDocumentAPI.h
api/NonUEN2MessagesCollectionDocumentAPI.c
api/NonUEN2MessagesCollectionDocumentAPI.h
api/NonUEN2MessagesSubscriptionsCollectionDocumentAPI.c
api/NonUEN2MessagesSubscriptionsCollectionDocumentAPI.h
api/SubscriptionsCollectionDocumentAPI.c
api/SubscriptionsCollectionDocumentAPI.h
docs/IndividualSubscriptionDocumentAPI.md
docs/IndividualUeContextDocumentAPI.md
docs/N1N2IndividualSubscriptionDocumentAPI.md
docs/N1N2MessageCollectionDocumentAPI.md
docs/N1N2SubscriptionsCollectionForIndividualUEContextsDocumentAPI.md
docs/NonUEN2MessageNotificationIndividualSubscriptionDocumentAPI.md
docs/NonUEN2MessagesCollectionDocumentAPI.md
docs/NonUEN2MessagesSubscriptionsCollectionDocumentAPI.md
docs/SubscriptionsCollectionDocumentAPI.md
docs/access_token_err.md
docs/access_token_req.md
docs/access_type.md
docs/allowed_nssai.md
docs/allowed_snssai.md
docs/ambr.md
docs/amf_event.md
docs/amf_event_area.md
docs/amf_event_mode.md
docs/amf_event_subscription.md
docs/amf_event_subscription_add_info.md
docs/amf_event_trigger.md
docs/amf_event_trigger_any_of.md
docs/amf_event_type.md
docs/amf_event_type_any_of.md
docs/amf_status_change_notification.md
docs/amf_status_change_subscription_data.md
docs/amf_status_info.md
docs/area.md
docs/area_of_validity.md
docs/area_scope.md
docs/arp.md
docs/assign_ebi_data.md
docs/assign_ebi_error.md
docs/assign_ebi_failed.md
docs/assigned_ebi_data.md
docs/auth_status.md
docs/battery_indication.md
docs/cag_data.md
docs/cag_info.md
docs/ce_mode_b_ind.md
docs/ciphering_algorithm.md
docs/cn_assisted_ran_para.md
docs/collection_period_rmm_lte_mdt.md
docs/collection_period_rmm_nr_mdt.md
docs/configured_snssai.md
docs/core_network_type.md
docs/ddd_traffic_descriptor.md
docs/ebi_arp_mapping.md
docs/ec_restriction_data_wb.md
docs/ecgi.md
docs/eps_nas_ciphering_algorithm.md
docs/eps_nas_integrity_algorithm.md
docs/eps_nas_security_mode.md
docs/eutra_location.md
docs/expected_ue_behavior.md
docs/ext_amf_event_subscription.md
docs/global_ran_node_id.md
docs/gnb_id.md
docs/guami.md
docs/hfc_node_id.md
docs/immediate_mdt_conf.md
docs/inline_object.md
docs/inline_object_1.md
docs/inline_object_2.md
docs/inline_object_3.md
docs/inline_object_4.md
docs/integrity_algorithm.md
docs/invalid_param.md
docs/job_type.md
docs/key_amf.md
docs/key_amf_type.md
docs/ladn_info.md
docs/line_type.md
docs/location_filter.md
docs/location_filter_any_of.md
docs/lte_m_ind.md
docs/lte_v2x_auth.md
docs/measurement_lte_for_mdt.md
docs/measurement_nr_for_mdt.md
docs/measurement_period_lte_mdt.md
docs/mm_context.md
docs/mo_exp_data_counter.md
docs/n1_message_class.md
docs/n1_message_container.md
docs/n1_message_notification.md
docs/n1_n2_message_transfer_cause.md
docs/n1_n2_message_transfer_error.md
docs/n1_n2_message_transfer_req_data.md
docs/n1_n2_message_transfer_rsp_data.md
docs/n1_n2_msg_txfr_err_detail.md
docs/n1_n2_msg_txfr_failure_notification.md
docs/n2_info_container.md
docs/n2_info_content.md
docs/n2_info_notification_rsp_data.md
docs/n2_info_notify_reason.md
docs/n2_information_class.md
docs/n2_information_notification.md
docs/n2_information_transfer_error.md
docs/n2_information_transfer_req_data.md
docs/n2_information_transfer_result.md
docs/n2_information_transfer_rsp_data.md
docs/n2_ran_information.md
docs/n2_sm_information.md
docs/n3ga_location.md
docs/nas_security_mode.md
docs/ncgi.md
docs/nf_type.md
docs/ng_ap_cause.md
docs/ng_ksi.md
docs/ng_ran_target_id.md
docs/ngap_ie_type.md
docs/non_ue_n2_info_subscription_create_data.md
docs/non_ue_n2_info_subscription_created_data.md
docs/npn_access_info.md
docs/nr_location.md
docs/nr_v2x_auth.md
docs/nrppa_information.md
docs/nsi_information.md
docs/nssaa_status.md
docs/nssai_mapping.md
docs/pc5_flow_bit_rates.md
docs/pc5_qo_s_para.md
docs/pc5_qos_flow_item.md
docs/pdu_session_context.md
docs/periodic_communication_indicator.md
docs/plmn_id.md
docs/plmn_id_nid.md
docs/policy_req_trigger.md
docs/positioning_method_mdt.md
docs/preemption_capability.md
docs/preemption_vulnerability.md
docs/presence_info.md
docs/presence_state.md
docs/problem_details.md
docs/pws_error_data.md
docs/pws_information.md
docs/pws_response_data.md
docs/rat_selector.md
docs/rat_type.md
docs/reachability_filter.md
docs/reachability_filter_any_of.md
docs/redirect_response.md
docs/ref_to_binary_data.md
docs/registration_context_container.md
docs/report_amount_mdt.md
docs/report_interval_mdt.md
docs/report_interval_nr_mdt.md
docs/reporting_trigger.md
docs/restriction_type.md
docs/sbi_binding_level.md
docs/sc_type.md
docs/scheduled_communication_time.md
docs/scheduled_communication_type.md
docs/seaf_data.md
docs/sensor_measurement.md
docs/service_area_restriction.md
docs/small_data_rate_status.md
docs/small_data_rate_status_info.md
docs/smf_change_indication.md
docs/smf_change_info.md
docs/sms_support.md
docs/snssai.md
docs/stationary_indication.md
docs/status_change.md
docs/tac_info.md
docs/tai.md
docs/tnap_id.md
docs/trace_data.md
docs/trace_depth.md
docs/traffic_descriptor.md
docs/traffic_profile.md
docs/transfer_reason.md
docs/twap_id.md
docs/ue_auth.md
docs/ue_context.md
docs/ue_context_cancel_relocate_data.md
docs/ue_context_create_data.md
docs/ue_context_create_error.md
docs/ue_context_created_data.md
docs/ue_context_release.md
docs/ue_context_relocate_data.md
docs/ue_context_relocated_data.md
docs/ue_context_transfer_req_data.md
docs/ue_context_transfer_rsp_data.md
docs/ue_context_transfer_status.md
docs/ue_differentiation_info.md
docs/ue_n1_n2_info_subscription_create_data.md
docs/ue_n1_n2_info_subscription_created_data.md
docs/ue_reg_status_update_req_data.md
docs/ue_reg_status_update_rsp_data.md
docs/user_location.md
docs/v2x_context.md
docs/v2x_information.md
external/cJSON.c
external/cJSON.h
external/cJSON.licence
include/apiClient.h
include/binary.h
include/keyValuePair.h
include/list.h
libcurl.licence
model/access_token_err.c
model/access_token_err.h
model/access_token_req.c
model/access_token_req.h
model/access_type.c
model/access_type.h
model/allowed_nssai.c
model/allowed_nssai.h
model/allowed_snssai.c
model/allowed_snssai.h
model/ambr.c
model/ambr.h
model/amf_event.c
model/amf_event.h
model/amf_event_area.c
model/amf_event_area.h
model/amf_event_mode.c
model/amf_event_mode.h
model/amf_event_subscription.c
model/amf_event_subscription.h
model/amf_event_subscription_add_info.c
model/amf_event_subscription_add_info.h
model/amf_event_trigger.c
model/amf_event_trigger.h
model/amf_event_trigger_any_of.c
model/amf_event_trigger_any_of.h
model/amf_event_type.c
model/amf_event_type.h
model/amf_event_type_any_of.c
model/amf_event_type_any_of.h
model/amf_status_change_notification.c
model/amf_status_change_notification.h
model/amf_status_change_subscription_data.c
model/amf_status_change_subscription_data.h
model/amf_status_info.c
model/amf_status_info.h
model/area.c
model/area.h
model/area_of_validity.c
model/area_of_validity.h
model/area_scope.c
model/area_scope.h
model/arp.c
model/arp.h
model/assign_ebi_data.c
model/assign_ebi_data.h
model/assign_ebi_error.c
model/assign_ebi_error.h
model/assign_ebi_failed.c
model/assign_ebi_failed.h
model/assigned_ebi_data.c
model/assigned_ebi_data.h
model/auth_status.c
model/auth_status.h
model/battery_indication.c
model/battery_indication.h
model/cag_data.c
model/cag_data.h
model/cag_info.c
model/cag_info.h
model/ce_mode_b_ind.c
model/ce_mode_b_ind.h
model/ciphering_algorithm.c
model/ciphering_algorithm.h
model/cn_assisted_ran_para.c
model/cn_assisted_ran_para.h
model/collection_period_rmm_lte_mdt.c
model/collection_period_rmm_lte_mdt.h
model/collection_period_rmm_nr_mdt.c
model/collection_period_rmm_nr_mdt.h
model/configured_snssai.c
model/configured_snssai.h
model/core_network_type.c
model/core_network_type.h
model/ddd_traffic_descriptor.c
model/ddd_traffic_descriptor.h
model/ebi_arp_mapping.c
model/ebi_arp_mapping.h
model/ec_restriction_data_wb.c
model/ec_restriction_data_wb.h
model/ecgi.c
model/ecgi.h
model/eps_nas_ciphering_algorithm.c
model/eps_nas_ciphering_algorithm.h
model/eps_nas_integrity_algorithm.c
model/eps_nas_integrity_algorithm.h
model/eps_nas_security_mode.c
model/eps_nas_security_mode.h
model/eutra_location.c
model/eutra_location.h
model/expected_ue_behavior.c
model/expected_ue_behavior.h
model/ext_amf_event_subscription.c
model/ext_amf_event_subscription.h
model/global_ran_node_id.c
model/global_ran_node_id.h
model/gnb_id.c
model/gnb_id.h
model/guami.c
model/guami.h
model/hfc_node_id.c
model/hfc_node_id.h
model/immediate_mdt_conf.c
model/immediate_mdt_conf.h
model/inline_object.c
model/inline_object.h
model/inline_object_1.c
model/inline_object_1.h
model/inline_object_2.c
model/inline_object_2.h
model/inline_object_3.c
model/inline_object_3.h
model/inline_object_4.c
model/inline_object_4.h
model/integrity_algorithm.c
model/integrity_algorithm.h
model/invalid_param.c
model/invalid_param.h
model/job_type.c
model/job_type.h
model/key_amf.c
model/key_amf.h
model/key_amf_type.c
model/key_amf_type.h
model/ladn_info.c
model/ladn_info.h
model/line_type.c
model/line_type.h
model/location_filter.c
model/location_filter.h
model/location_filter_any_of.c
model/location_filter_any_of.h
model/lte_m_ind.c
model/lte_m_ind.h
model/lte_v2x_auth.c
model/lte_v2x_auth.h
model/measurement_lte_for_mdt.c
model/measurement_lte_for_mdt.h
model/measurement_nr_for_mdt.c
model/measurement_nr_for_mdt.h
model/measurement_period_lte_mdt.c
model/measurement_period_lte_mdt.h
model/mm_context.c
model/mm_context.h
model/mo_exp_data_counter.c
model/mo_exp_data_counter.h
model/n1_message_class.c
model/n1_message_class.h
model/n1_message_container.c
model/n1_message_container.h
model/n1_message_notification.c
model/n1_message_notification.h
model/n1_n2_message_transfer_cause.c
model/n1_n2_message_transfer_cause.h
model/n1_n2_message_transfer_error.c
model/n1_n2_message_transfer_error.h
model/n1_n2_message_transfer_req_data.c
model/n1_n2_message_transfer_req_data.h
model/n1_n2_message_transfer_rsp_data.c
model/n1_n2_message_transfer_rsp_data.h
model/n1_n2_msg_txfr_err_detail.c
model/n1_n2_msg_txfr_err_detail.h
model/n1_n2_msg_txfr_failure_notification.c
model/n1_n2_msg_txfr_failure_notification.h
model/n2_info_container.c
model/n2_info_container.h
model/n2_info_content.c
model/n2_info_content.h
model/n2_info_notification_rsp_data.c
model/n2_info_notification_rsp_data.h
model/n2_info_notify_reason.c
model/n2_info_notify_reason.h
model/n2_information_class.c
model/n2_information_class.h
model/n2_information_notification.c
model/n2_information_notification.h
model/n2_information_transfer_error.c
model/n2_information_transfer_error.h
model/n2_information_transfer_req_data.c
model/n2_information_transfer_req_data.h
model/n2_information_transfer_result.c
model/n2_information_transfer_result.h
model/n2_information_transfer_rsp_data.c
model/n2_information_transfer_rsp_data.h
model/n2_ran_information.c
model/n2_ran_information.h
model/n2_sm_information.c
model/n2_sm_information.h
model/n3ga_location.c
model/n3ga_location.h
model/nas_security_mode.c
model/nas_security_mode.h
model/ncgi.c
model/ncgi.h
model/nf_type.c
model/nf_type.h
model/ng_ap_cause.c
model/ng_ap_cause.h
model/ng_ksi.c
model/ng_ksi.h
model/ng_ran_target_id.c
model/ng_ran_target_id.h
model/ngap_ie_type.c
model/ngap_ie_type.h
model/non_ue_n2_info_subscription_create_data.c
model/non_ue_n2_info_subscription_create_data.h
model/non_ue_n2_info_subscription_created_data.c
model/non_ue_n2_info_subscription_created_data.h
model/npn_access_info.c
model/npn_access_info.h
model/nr_location.c
model/nr_location.h
model/nr_v2x_auth.c
model/nr_v2x_auth.h
model/nrppa_information.c
model/nrppa_information.h
model/nsi_information.c
model/nsi_information.h
model/nssaa_status.c
model/nssaa_status.h
model/nssai_mapping.c
model/nssai_mapping.h
model/object.c
model/object.h
model/pc5_flow_bit_rates.c
model/pc5_flow_bit_rates.h
model/pc5_qo_s_para.c
model/pc5_qo_s_para.h
model/pc5_qos_flow_item.c
model/pc5_qos_flow_item.h
model/pdu_session_context.c
model/pdu_session_context.h
model/periodic_communication_indicator.c
model/periodic_communication_indicator.h
model/plmn_id.c
model/plmn_id.h
model/plmn_id_nid.c
model/plmn_id_nid.h
model/policy_req_trigger.c
model/policy_req_trigger.h
model/positioning_method_mdt.c
model/positioning_method_mdt.h
model/preemption_capability.c
model/preemption_capability.h
model/preemption_vulnerability.c
model/preemption_vulnerability.h
model/presence_info.c
model/presence_info.h
model/presence_state.c
model/presence_state.h
model/problem_details.c
model/problem_details.h
model/pws_error_data.c
model/pws_error_data.h
model/pws_information.c
model/pws_information.h
model/pws_response_data.c
model/pws_response_data.h
model/rat_selector.c
model/rat_selector.h
model/rat_type.c
model/rat_type.h
model/reachability_filter.c
model/reachability_filter.h
model/reachability_filter_any_of.c
model/reachability_filter_any_of.h
model/redirect_response.c
model/redirect_response.h
model/ref_to_binary_data.c
model/ref_to_binary_data.h
model/registration_context_container.c
model/registration_context_container.h
model/report_amount_mdt.c
model/report_amount_mdt.h
model/report_interval_mdt.c
model/report_interval_mdt.h
model/report_interval_nr_mdt.c
model/report_interval_nr_mdt.h
model/reporting_trigger.c
model/reporting_trigger.h
model/restriction_type.c
model/restriction_type.h
model/sbi_binding_level.c
model/sbi_binding_level.h
model/sc_type.c
model/sc_type.h
model/scheduled_communication_time.c
model/scheduled_communication_time.h
model/scheduled_communication_type.c
model/scheduled_communication_type.h
model/seaf_data.c
model/seaf_data.h
model/sensor_measurement.c
model/sensor_measurement.h
model/service_area_restriction.c
model/service_area_restriction.h
model/small_data_rate_status.c
model/small_data_rate_status.h
model/small_data_rate_status_info.c
model/small_data_rate_status_info.h
model/smf_change_indication.c
model/smf_change_indication.h
model/smf_change_info.c
model/smf_change_info.h
model/sms_support.c
model/sms_support.h
model/snssai.c
model/snssai.h
model/stationary_indication.c
model/stationary_indication.h
model/status_change.c
model/status_change.h
model/tac_info.c
model/tac_info.h
model/tai.c
model/tai.h
model/tnap_id.c
model/tnap_id.h
model/trace_data.c
model/trace_data.h
model/trace_depth.c
model/trace_depth.h
model/traffic_descriptor.c
model/traffic_descriptor.h
model/traffic_profile.c
model/traffic_profile.h
model/transfer_reason.c
model/transfer_reason.h
model/twap_id.c
model/twap_id.h
model/ue_auth.c
model/ue_auth.h
model/ue_context.c
model/ue_context.h
model/ue_context_cancel_relocate_data.c
model/ue_context_cancel_relocate_data.h
model/ue_context_create_data.c
model/ue_context_create_data.h
model/ue_context_create_error.c
model/ue_context_create_error.h
model/ue_context_created_data.c
model/ue_context_created_data.h
model/ue_context_release.c
model/ue_context_release.h
model/ue_context_relocate_data.c
model/ue_context_relocate_data.h
model/ue_context_relocated_data.c
model/ue_context_relocated_data.h
model/ue_context_transfer_req_data.c
model/ue_context_transfer_req_data.h
model/ue_context_transfer_rsp_data.c
model/ue_context_transfer_rsp_data.h
model/ue_context_transfer_status.c
model/ue_context_transfer_status.h
model/ue_differentiation_info.c
model/ue_differentiation_info.h
model/ue_n1_n2_info_subscription_create_data.c
model/ue_n1_n2_info_subscription_create_data.h
model/ue_n1_n2_info_subscription_created_data.c
model/ue_n1_n2_info_subscription_created_data.h
model/ue_reg_status_update_req_data.c
model/ue_reg_status_update_req_data.h
model/ue_reg_status_update_rsp_data.c
model/ue_reg_status_update_rsp_data.h
model/user_location.c
model/user_location.h
model/v2x_context.c
model/v2x_context.h
model/v2x_information.c
model/v2x_information.h
src/apiClient.c
src/apiKey.c
src/binary.c
src/list.c
uncrustify-rules.cfg

View File

@ -6,7 +6,7 @@
char* OpenAPI_af_event_ToString(OpenAPI_af_event_e af_event)
{
const char *af_eventArray[] = { "NULL", "SVC_EXPERIENCE", "UE_MOBILITY", "UE_COMM", "EXCEPTIONS" };
const char *af_eventArray[] = { "NULL", "ACCESS_TYPE_CHANGE", "ANI_REPORT", "CHARGING_CORRELATION", "EPS_FALLBACK", "FAILED_RESOURCES_ALLOCATION", "OUT_OF_CREDIT", "PLMN_CHG", "QOS_MONITORING", "QOS_NOTIF", "RAN_NAS_CAUSE", "REALLOCATION_OF_CREDIT", "SUCCESSFUL_RESOURCES_ALLOCATION", "TSN_BRIDGE_INFO", "USAGE_REPORT" };
size_t sizeofArray = sizeof(af_eventArray) / sizeof(af_eventArray[0]);
if (af_event < sizeofArray)
return (char *)af_eventArray[af_event];
@ -17,7 +17,7 @@ char* OpenAPI_af_event_ToString(OpenAPI_af_event_e af_event)
OpenAPI_af_event_e OpenAPI_af_event_FromString(char* af_event)
{
int stringToReturn = 0;
const char *af_eventArray[] = { "NULL", "SVC_EXPERIENCE", "UE_MOBILITY", "UE_COMM", "EXCEPTIONS" };
const char *af_eventArray[] = { "NULL", "ACCESS_TYPE_CHANGE", "ANI_REPORT", "CHARGING_CORRELATION", "EPS_FALLBACK", "FAILED_RESOURCES_ALLOCATION", "OUT_OF_CREDIT", "PLMN_CHG", "QOS_MONITORING", "QOS_NOTIF", "RAN_NAS_CAUSE", "REALLOCATION_OF_CREDIT", "SUCCESSFUL_RESOURCES_ALLOCATION", "TSN_BRIDGE_INFO", "USAGE_REPORT" };
size_t sizeofArray = sizeof(af_eventArray) / sizeof(af_eventArray[0]);
while (stringToReturn < sizeofArray) {
if (strcmp(af_event, af_eventArray[stringToReturn]) == 0) {

View File

@ -17,7 +17,7 @@
extern "C" {
#endif
typedef enum { OpenAPI_af_event_NULL = 0, OpenAPI_af_event_SVC_EXPERIENCE, OpenAPI_af_event_UE_MOBILITY, OpenAPI_af_event_UE_COMM, OpenAPI_af_event_EXCEPTIONS } OpenAPI_af_event_e;
typedef enum { OpenAPI_af_event_NULL = 0, OpenAPI_af_event_ACCESS_TYPE_CHANGE, OpenAPI_af_event_ANI_REPORT, OpenAPI_af_event_CHARGING_CORRELATION, OpenAPI_af_event_EPS_FALLBACK, OpenAPI_af_event_FAILED_RESOURCES_ALLOCATION, OpenAPI_af_event_OUT_OF_CREDIT, OpenAPI_af_event_PLMN_CHG, OpenAPI_af_event_QOS_MONITORING, OpenAPI_af_event_QOS_NOTIF, OpenAPI_af_event_RAN_NAS_CAUSE, OpenAPI_af_event_REALLOCATION_OF_CREDIT, OpenAPI_af_event_SUCCESSFUL_RESOURCES_ALLOCATION, OpenAPI_af_event_TSN_BRIDGE_INFO, OpenAPI_af_event_USAGE_REPORT } OpenAPI_af_event_e;
char* OpenAPI_af_event_ToString(OpenAPI_af_event_e af_event);

View File

@ -10,7 +10,6 @@ $openapi_generator_cli generate -i ./modified/TS29521_Nbsf_Management.yaml -c ./
$openapi_generator_cli generate -i ./modified/TS29531_Nnssf_NSSelection.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29507_Npcf_AMPolicyControl.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29512_Npcf_SMPolicyControl.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29514_Npcf_PolicyAuthorization.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29503_Nudm_SDM.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29503_Nudm_UECM.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29503_Nudm_UEAU.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
@ -20,3 +19,9 @@ $openapi_generator_cli generate -i ./modified/TS29510_Nnrf_NFManagement.yaml -c
$openapi_generator_cli generate -i ./modified/TS29504_Nudr_DR.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29502_Nsmf_PDUSession.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
$openapi_generator_cli generate -i ./modified/TS29518_Namf_Communication.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi
# 'AfEvent' Model was duplicated in TS29514_Npcf_PolicyAuthorization and
# TS29517_Naf_EventExposure.yaml.
# You should put TS29514_Npcf_PolicyAuthorization bottom to use 'AfEvent'
# in TS29514_Npcf_PolicyAuthorization,
$openapi_generator_cli generate -i ./modified/TS29514_Npcf_PolicyAuthorization.yaml -c ./openapi-generator/config.yaml -g c -o ../../openapi

View File

@ -36,7 +36,6 @@ bool bsf_nbsf_management_handle_pcf_binding(
OpenAPI_snssai_t Snssai;
char fqdn[OGS_MAX_FQDN_LEN+1];
int fqdn_len;
uint64_t supported_features = 0;
ogs_assert(stream);
ogs_assert(recvmsg);
@ -183,9 +182,16 @@ bool bsf_nbsf_management_handle_pcf_binding(
header.resource.component[1] = sess->binding_id;
if (RecvPcfBinding->supp_feat) {
supported_features =
uint64_t supported_features =
ogs_uint64_from_string(RecvPcfBinding->supp_feat);
sess->management_features &= supported_features;
if (sess->management_features != supported_features) {
ogs_free(RecvPcfBinding->supp_feat);
RecvPcfBinding->supp_feat =
ogs_uint64_to_string(sess->management_features);
ogs_assert(RecvPcfBinding->supp_feat);
}
} else {
sess->management_features = 0;
}
@ -233,6 +239,8 @@ bool bsf_nbsf_management_handle_pcf_binding(
ogs_expect_or_return_val(PcfIpEndPoint, NULL);
PcfIpEndPoint->ipv4_address = sess->pcf_ip[i].addr;
PcfIpEndPoint->ipv6_address = sess->pcf_ip[i].addr6;
PcfIpEndPoint->is_port = true;
PcfIpEndPoint->port = sess->pcf_ip[i].port;
OpenAPI_list_add(PcfIpEndPointList, PcfIpEndPoint);

View File

@ -244,8 +244,12 @@ pcf_sess_t *pcf_sess_add(pcf_ue_t *pcf_ue, uint8_t psi)
/* SBI Features */
OGS_SBI_FEATURES_SET(sess->smpolicycontrol_features,
OGS_SBI_NPCF_SMPOLICYCONTROL_DN_AUTHORIZATION);
OGS_SBI_FEATURES_SET(sess->management_features,
OGS_SBI_NBSF_MANAGEMENT_BINDING_UPDATE);
OGS_SBI_FEATURES_SET(sess->policyauthorization_features,
OGS_SBI_NPCF_POLICYAUTHORIZATION_SPONSORED_CONNECTIVITY);
OGS_SBI_FEATURES_SET(sess->policyauthorization_features,
OGS_SBI_NPCF_POLICYAUTHORIZATION_IMS_SBI);

View File

@ -39,6 +39,8 @@ bool pcf_nbsf_management_handle_register(
ogs_session_t *session = NULL;
OpenAPI_pcf_binding_t *PcfBinding = NULL;
OpenAPI_sm_policy_decision_t SmPolicyDecision;
OpenAPI_lnode_t *node = NULL, *node2 = NULL;
@ -89,6 +91,13 @@ bool pcf_nbsf_management_handle_register(
goto cleanup;
}
PcfBinding = recvmsg->PcfBinding;
if (PcfBinding->supp_feat) {
uint64_t supported_features =
ogs_uint64_from_string(PcfBinding->supp_feat);
sess->management_features &= supported_features;
}
memset(&header, 0, sizeof(header));
header.uri = recvmsg->http.location;

View File

@ -415,6 +415,13 @@ bool pcf_npcf_policyauthorization_handle_create(pcf_sess_t *sess,
supported_features = ogs_uint64_from_string(AscReqData->supp_feat);
sess->policyauthorization_features &= supported_features;
if (sess->policyauthorization_features != supported_features) {
ogs_free(AscReqData->supp_feat);
AscReqData->supp_feat =
ogs_uint64_to_string(sess->policyauthorization_features);
ogs_assert(AscReqData->supp_feat);
}
memset(&ims_data, 0, sizeof(ims_data));
media_component = &ims_data.
media_component[ims_data.num_of_media_component];

View File

@ -153,6 +153,8 @@ af_sess_t *af_sess_add_by_ue_address(ogs_ip_t *ue_address)
ogs_expect_or_return_val(sess->ipv6prefix, NULL);
}
OGS_SBI_FEATURES_SET(sess->policyauthorization_features,
OGS_SBI_NPCF_POLICYAUTHORIZATION_SPONSORED_CONNECTIVITY);
OGS_SBI_FEATURES_SET(sess->policyauthorization_features,
OGS_SBI_NPCF_POLICYAUTHORIZATION_IMS_SBI);

View File

@ -71,8 +71,7 @@ void af_nbsf_management_handle_pcf_binding(
if (!IpEndPoint) continue;
if (sess->pcf.num_of_ip < OGS_SBI_MAX_NUM_OF_IP_ADDRESS) {
port = IpEndPoint->port;
if (!port) {
if (!IpEndPoint->is_port) {
if (ogs_sbi_default_uri_scheme() ==
OpenAPI_uri_scheme_http)
port = OGS_SBI_HTTP_PORT;
@ -84,6 +83,8 @@ void af_nbsf_management_handle_pcf_binding(
ogs_sbi_default_uri_scheme());
ogs_assert_if_reached();
}
} else {
port = IpEndPoint->port;
}
if (IpEndPoint->ipv4_address) {

View File

@ -29,6 +29,11 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
OpenAPI_app_session_context_t AppSessionContext;
OpenAPI_app_session_context_req_data_t AscReqData;
OpenAPI_events_subsc_req_data_t evSubsc;
OpenAPI_list_t *EventList = NULL;
OpenAPI_af_event_subscription_t *Event = NULL;
OpenAPI_snssai_t sNssai;
OpenAPI_list_t *MediaComponentList = NULL;
@ -84,6 +89,25 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
AscReqData.dnn = sess->dnn;
memset(&evSubsc, 0, sizeof(evSubsc));
EventList = OpenAPI_list_create();
ogs_assert(EventList);
Event = ogs_calloc(1, sizeof(*Event));
ogs_expect_or_return_val(Event, NULL);
Event->event = OpenAPI_af_event_CHARGING_CORRELATION;
OpenAPI_list_add(EventList, Event);
Event = ogs_calloc(1, sizeof(*Event));
ogs_expect_or_return_val(Event, NULL);
Event->event = OpenAPI_af_event_ANI_REPORT;
Event->notif_method = OpenAPI_af_notif_method_ONE_TIME;
OpenAPI_list_add(EventList, Event);
evSubsc.events = EventList;
AscReqData.ev_subsc = &evSubsc;
memset(&sNssai, 0, sizeof(sNssai));
if (sess->s_nssai.sst) {
sNssai.sst = sess->s_nssai.sst;
@ -91,6 +115,8 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
AscReqData.slice_info = &sNssai;
}
AscReqData.spon_status = OpenAPI_sponsoring_status_SPONSOR_DISABLED;
AscReqData.supi = sess->supi;
AscReqData.gpsi = sess->gpsi;
@ -106,7 +132,7 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
MediaComponent = ogs_calloc(1, sizeof(*MediaComponent));
ogs_expect_or_return_val(MediaComponent, NULL);
MediaComponent->med_comp_n = (++i);
MediaComponent->med_comp_n = (i++);
MediaComponent->f_status = OpenAPI_flow_status_ENABLED;
MediaComponent->mar_bw_dl = ogs_sbi_bitrate_to_string(
41000, OGS_SBI_BITRATE_KBPS);
@ -153,7 +179,7 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
SubComponent = ogs_calloc(1, sizeof(*SubComponent));
ogs_expect_or_return_val(SubComponent, NULL);
SubComponent->f_num = (++j);
SubComponent->f_num = (j++);
SubComponent->flow_usage = OpenAPI_flow_usage_NO_INFO;
SubComponentMap = OpenAPI_map_create(
@ -177,7 +203,7 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
SubComponent = ogs_calloc(1, sizeof(*SubComponent));
ogs_expect_or_return_val(SubComponent, NULL);
SubComponent->f_num = (++j);
SubComponent->f_num = (j++);
SubComponent->flow_usage = OpenAPI_flow_usage_NO_INFO;
SubComponentMap = OpenAPI_map_create(
@ -207,6 +233,14 @@ ogs_sbi_request_t *af_npcf_policyauthorization_build_create(
ogs_free(AscReqData.supp_feat);
EventList = evSubsc.events;
OpenAPI_list_for_each(EventList, node) {
Event = node->data;
if (Event)
ogs_free(Event);
}
OpenAPI_list_free(EventList);
if (sNssai.sd)
ogs_free(sNssai.sd);

View File

@ -28,6 +28,11 @@ void af_npcf_policyauthorization_handle_create(
ogs_sbi_message_t message;
ogs_sbi_header_t header;
OpenAPI_app_session_context_t *AppSessionContext = NULL;
OpenAPI_app_session_context_req_data_t *AscReqData = NULL;
uint64_t supported_features = 0;
if (!recvmsg->http.location) {
ogs_error("[%s:%s] No http.location",
sess->ipv4addr ? sess->ipv4addr : "Unknown",
@ -52,12 +57,37 @@ void af_npcf_policyauthorization_handle_create(
sess->ipv4addr ? sess->ipv4addr : "Unknown",
sess->ipv6addr ? sess->ipv6addr : "Unknown",
recvmsg->http.location);
ogs_sbi_header_free(&header);
return;
goto cleanup;
}
AppSessionContext = recvmsg->AppSessionContext;
if (!AppSessionContext) {
ogs_error("[%s:%s] No AppSessionContext",
sess->ipv4addr ? sess->ipv4addr : "Unknown",
sess->ipv6addr ? sess->ipv6addr : "Unknown");
goto cleanup;
}
AscReqData = AppSessionContext->asc_req_data;
if (!AscReqData) {
ogs_error("[%s:%s] No AscReqData",
sess->ipv4addr ? sess->ipv4addr : "Unknown",
sess->ipv6addr ? sess->ipv6addr : "Unknown");
goto cleanup;
}
if (!AscReqData->supp_feat) {
ogs_error("[%s:%s] No AscReqData->suppFeat",
sess->ipv4addr ? sess->ipv4addr : "Unknown",
sess->ipv6addr ? sess->ipv6addr : "Unknown");
goto cleanup;
}
supported_features = ogs_uint64_from_string(AscReqData->supp_feat);
sess->policyauthorization_features &= supported_features;
af_sess_set_pcf_app_session_id(sess, message.h.resource.component[1]);
cleanup:
ogs_sbi_header_free(&header);
}

View File

@ -297,6 +297,9 @@ static void test1_func(abts_case *tc, void *data)
af_sess = af_sess_add_by_ue_address(&sess->ue_ip);
ogs_assert(af_sess);
af_sess->dnn = ogs_strdup(sess->dnn);
ogs_assert(af_sess->dnn);
#if 0
af_local_discover_and_send(OpenAPI_nf_type_BSF, af_sess, NULL,
af_nbsf_management_build_discover);