forked from acouzens/open5gs
[SMF] Disable Network Service request while ACTIVATING
Disable Network triggered service request while UE triggered service request (#2294)
This commit is contained in:
parent
4265b2a2bc
commit
7ce1137a10
|
@ -28,6 +28,8 @@
|
|||
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
|
||||
#endif
|
||||
|
||||
#define OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING 1
|
||||
|
||||
#include "model/nf_profile.h"
|
||||
#include "model/nf_group_cond.h"
|
||||
#include "model/smf_info.h"
|
||||
|
|
|
@ -365,7 +365,6 @@ typedef struct smf_sess_s {
|
|||
|
||||
/* Paging */
|
||||
struct {
|
||||
bool ue_requested_pdu_session_establishment_done;
|
||||
char *n1n2message_location;
|
||||
} paging;
|
||||
|
||||
|
|
|
@ -396,8 +396,6 @@ void smf_5gc_n4_handle_session_modification_response(
|
|||
sess, stream, OpenAPI_ho_state_COMPLETED);
|
||||
|
||||
} else {
|
||||
sess->paging.ue_requested_pdu_session_establishment_done = true;
|
||||
|
||||
if (sess->up_cnx_state == OpenAPI_up_cnx_state_ACTIVATING) {
|
||||
sess->up_cnx_state = OpenAPI_up_cnx_state_ACTIVATED;
|
||||
smf_sbi_send_sm_context_updated_data_up_cnx_state(
|
||||
|
@ -1195,6 +1193,7 @@ void smf_n4_handle_session_report_request(
|
|||
ogs_pfcp_downlink_data_service_information_t *info = NULL;
|
||||
uint8_t paging_policy_indication_value = 0;
|
||||
uint8_t qfi = 0;
|
||||
smf_n1_n2_message_transfer_param_t param;
|
||||
|
||||
if (pfcp_req->downlink_data_report.presence) {
|
||||
if (pfcp_req->downlink_data_report.
|
||||
|
@ -1259,9 +1258,21 @@ void smf_n4_handle_session_report_request(
|
|||
return;
|
||||
}
|
||||
|
||||
if (sess->paging.ue_requested_pdu_session_establishment_done == true) {
|
||||
smf_n1_n2_message_transfer_param_t param;
|
||||
|
||||
switch (sess->up_cnx_state) {
|
||||
case OpenAPI_up_cnx_state_NULL:
|
||||
/* UE Requested PDU Session is NOT established */
|
||||
break;
|
||||
case OpenAPI_up_cnx_state_ACTIVATED:
|
||||
ogs_error("[%s:%s] PDU Session had already been ACTIVATED",
|
||||
smf_ue->imsi_bcd, sess->session.name);
|
||||
break;
|
||||
case OpenAPI_up_cnx_state_ACTIVATING:
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 1
|
||||
ogs_warn("[%s:%s] UE is being triggering Service Request",
|
||||
smf_ue->imsi_bcd, sess->session.name);
|
||||
break;
|
||||
#endif
|
||||
case OpenAPI_up_cnx_state_DEACTIVATED:
|
||||
memset(¶m, 0, sizeof(param));
|
||||
param.state = SMF_NETWORK_TRIGGERED_SERVICE_REQUEST;
|
||||
param.n2smbuf =
|
||||
|
@ -1271,6 +1282,14 @@ void smf_n4_handle_session_report_request(
|
|||
param.n1n2_failure_txf_notif_uri = true;
|
||||
|
||||
smf_namf_comm_send_n1_n2_message_transfer(sess, ¶m);
|
||||
break;
|
||||
case OpenAPI_up_cnx_state_SUSPENDED:
|
||||
ogs_error("[%s:%s] PDU Session had been SUSPENDED",
|
||||
smf_ue->imsi_bcd, sess->session.name);
|
||||
break;
|
||||
default:
|
||||
ogs_error("Invalid UpCnxState[%d]", sess->up_cnx_state);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -858,6 +858,7 @@ static void cm_connected_paging_func(abts_case *tc, void *data)
|
|||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Receive PDUSessionResourceSetupRequest +
|
||||
* DL NAS transport +
|
||||
* PDU session establishment accept */
|
||||
|
@ -867,12 +868,14 @@ static void cm_connected_paging_func(abts_case *tc, void *data)
|
|||
ABTS_INT_EQUAL(tc,
|
||||
NGAP_ProcedureCode_id_PDUSessionResourceSetup,
|
||||
test_ue->ngap_procedure_code);
|
||||
#endif
|
||||
|
||||
/* Receive GTP-U ICMP Packet */
|
||||
recvbuf = testgnb_gtpu_read(gtpu);
|
||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
ogs_pkbuf_free(recvbuf);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Send PDUSessionResourceSetupResponse(Unsuccessful) */
|
||||
sendbuf = testngap_sess_build_pdu_session_resource_failed_to_setup(
|
||||
sess,
|
||||
|
@ -881,6 +884,7 @@ static void cm_connected_paging_func(abts_case *tc, void *data)
|
|||
ABTS_PTR_NOTNULL(tc, sendbuf);
|
||||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
#endif
|
||||
|
||||
/* Send GTP-U ICMP Packet */
|
||||
rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
|
||||
|
@ -891,6 +895,16 @@ static void cm_connected_paging_func(abts_case *tc, void *data)
|
|||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
ogs_pkbuf_free(recvbuf);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 1
|
||||
/* Send UEContextReleaseRequest */
|
||||
sendbuf = testngap_build_ue_context_release_request(test_ue,
|
||||
NGAP_Cause_PR_radioNetwork, NGAP_CauseRadioNetwork_user_inactivity,
|
||||
true);
|
||||
ABTS_PTR_NOTNULL(tc, sendbuf);
|
||||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
#endif
|
||||
|
||||
/* Receive UEContextReleaseCommand */
|
||||
recvbuf = testgnb_ngap_read(ngap);
|
||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
|
@ -1867,6 +1881,7 @@ static void vonr_qos_flow_test1_func(abts_case *tc, void *data)
|
|||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
ogs_pkbuf_free(recvbuf);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Receive PDUSessionResourceSetupRequest */
|
||||
recvbuf = testgnb_ngap_read(ngap);
|
||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
|
@ -1880,6 +1895,7 @@ static void vonr_qos_flow_test1_func(abts_case *tc, void *data)
|
|||
ABTS_PTR_NOTNULL(tc, sendbuf);
|
||||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
#endif
|
||||
|
||||
/* Send GTP-U ICMP Packet */
|
||||
rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
|
||||
|
@ -2304,6 +2320,7 @@ static void vonr_session_test2_func(abts_case *tc, void *data)
|
|||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
ogs_pkbuf_free(recvbuf);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Receive PDUSessionResourceSetupRequest */
|
||||
recvbuf = testgnb_ngap_read(ngap);
|
||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
|
@ -2317,6 +2334,7 @@ static void vonr_session_test2_func(abts_case *tc, void *data)
|
|||
ABTS_PTR_NOTNULL(tc, sendbuf);
|
||||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
#endif
|
||||
|
||||
/* Send GTP-U ICMP Packet */
|
||||
rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
|
||||
|
@ -2742,6 +2760,7 @@ static void registration_ue_context_test4_func(abts_case *tc, void *data)
|
|||
rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Receive PDUSessionResourceSetupRequest */
|
||||
recvbuf = testgnb_ngap_read(ngap);
|
||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
|
@ -2749,6 +2768,7 @@ static void registration_ue_context_test4_func(abts_case *tc, void *data)
|
|||
ABTS_INT_EQUAL(tc,
|
||||
NGAP_ProcedureCode_id_PDUSessionResourceSetup,
|
||||
test_ue->ngap_procedure_code);
|
||||
#endif
|
||||
|
||||
/* Send InitialContextSetupResponse */
|
||||
sendbuf = testngap_build_initial_context_setup_response(test_ue, true);
|
||||
|
@ -2756,11 +2776,13 @@ static void registration_ue_context_test4_func(abts_case *tc, void *data)
|
|||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Send PDUSessionResourceSetupResponse */
|
||||
sendbuf = testngap_ue_build_pdu_session_resource_setup_response(test_ue);
|
||||
ABTS_PTR_NOTNULL(tc, sendbuf);
|
||||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
#endif
|
||||
|
||||
/* Receive GTP-U ICMP Packet */
|
||||
recvbuf = testgnb_gtpu_read(gtpu);
|
||||
|
@ -3171,6 +3193,7 @@ static void registration_idle_test1_func(abts_case *tc, void *data)
|
|||
rv = test_gtpu_send_ping(gtpu, qos_flow, TEST_PING_IPV4);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Receive PDUSessionResourceSetupRequest */
|
||||
recvbuf = testgnb_ngap_read(ngap);
|
||||
ABTS_PTR_NOTNULL(tc, recvbuf);
|
||||
|
@ -3178,6 +3201,7 @@ static void registration_idle_test1_func(abts_case *tc, void *data)
|
|||
ABTS_INT_EQUAL(tc,
|
||||
NGAP_ProcedureCode_id_PDUSessionResourceSetup,
|
||||
test_ue->ngap_procedure_code);
|
||||
#endif
|
||||
|
||||
/* Send InitialContextSetupResponse */
|
||||
sendbuf = testngap_build_initial_context_setup_response(test_ue, true);
|
||||
|
@ -3185,11 +3209,13 @@ static void registration_idle_test1_func(abts_case *tc, void *data)
|
|||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
|
||||
#if OGS_SBI_DISABLE_NETWORK_SERVICE_REQUEST_WHILE_ACTIVATING == 0
|
||||
/* Send PDUSessionResourceSetupResponse */
|
||||
sendbuf = testngap_sess_build_pdu_session_resource_setup_response(sess);
|
||||
ABTS_PTR_NOTNULL(tc, sendbuf);
|
||||
rv = testgnb_ngap_send(ngap, sendbuf);
|
||||
ABTS_INT_EQUAL(tc, OGS_OK, rv);
|
||||
#endif
|
||||
|
||||
/* Receive GTP-U ICMP Packet */
|
||||
recvbuf = testgnb_gtpu_read(gtpu);
|
||||
|
|
Loading…
Reference in New Issue