Projects
osmocom:master
open5gs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 99
View file
commit_9f4a9790e3cb1f7f05c8f97cf6a99c15752e05d5.txt
Added
View file
commit_bfd5cefe535edd0f16908d3b86454980a7ba072a.txt
Deleted
View file
open5gs_2.5.5.76.bfd5c.dsc
Deleted
@@ -1,38 +0,0 @@ -Format: 3.0 (native) -Source: open5gs -Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg -Architecture: any -Version: 2.5.5.76.bfd5c -Maintainer: Harald Welte <laforge@gnumonks.org> -Uploaders: Sukchan Lee <acetcom@gmail.com> -Homepage: https://open5gs.org -Standards-Version: 4.3.0 -Vcs-Browser: https://github.com/open5gs/open5gs -Vcs-Git: git://github.com/open5gs/open5gs -Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), cmake, flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev -Package-List: - open5gs deb net optional arch=any - open5gs-amf deb net optional arch=any - open5gs-ausf deb net optional arch=any - open5gs-bsf deb net optional arch=any - open5gs-common deb net optional arch=any - open5gs-dbg deb net optional arch=any - open5gs-hss deb net optional arch=any - open5gs-mme deb net optional arch=any - open5gs-nrf deb net optional arch=any - open5gs-nssf deb net optional arch=any - open5gs-pcf deb net optional arch=any - open5gs-pcrf deb net optional arch=any - open5gs-scp deb net optional arch=any - open5gs-sgwc deb net optional arch=any - open5gs-sgwu deb net optional arch=any - open5gs-smf deb net optional arch=any - open5gs-udm deb net optional arch=any - open5gs-udr deb net optional arch=any - open5gs-upf deb net optional arch=any -Checksums-Sha1: - 559badb847ec2db77cb788268bfa8b9f716952d3 13606064 open5gs_2.5.5.76.bfd5c.tar.xz -Checksums-Sha256: - 5ecaf931dcce9b03aa62b5475eb84e8e58970d998afc948e3f6865c04359569c 13606064 open5gs_2.5.5.76.bfd5c.tar.xz -Files: - 06fed27dee0d5aad5bfd5bbe52e86100 13606064 open5gs_2.5.5.76.bfd5c.tar.xz
View file
open5gs_2.5.5.77.9f4a9.dsc
Added
@@ -0,0 +1,38 @@ +Format: 3.0 (native) +Source: open5gs +Binary: open5gs-common, open5gs-mme, open5gs-sgwc, open5gs-smf, open5gs-amf, open5gs-sgwu, open5gs-upf, open5gs-hss, open5gs-pcrf, open5gs-nrf, open5gs-scp, open5gs-ausf, open5gs-udm, open5gs-pcf, open5gs-nssf, open5gs-bsf, open5gs-udr, open5gs, open5gs-dbg +Architecture: any +Version: 2.5.5.77.9f4a9 +Maintainer: Harald Welte <laforge@gnumonks.org> +Uploaders: Sukchan Lee <acetcom@gmail.com> +Homepage: https://open5gs.org +Standards-Version: 4.3.0 +Vcs-Browser: https://github.com/open5gs/open5gs +Vcs-Git: git://github.com/open5gs/open5gs +Build-Depends: debhelper (>= 11), git, pkg-config, meson (>= 0.43.0), cmake, flex, bison, libgnutls28-dev, libgcrypt-dev, libssl-dev, libidn11-dev, libmongoc-dev, libbson-dev, libsctp-dev, libyaml-dev, libmicrohttpd-dev, libcurl4-gnutls-dev, libnghttp2-dev, libtins-dev, libtalloc-dev +Package-List: + open5gs deb net optional arch=any + open5gs-amf deb net optional arch=any + open5gs-ausf deb net optional arch=any + open5gs-bsf deb net optional arch=any + open5gs-common deb net optional arch=any + open5gs-dbg deb net optional arch=any + open5gs-hss deb net optional arch=any + open5gs-mme deb net optional arch=any + open5gs-nrf deb net optional arch=any + open5gs-nssf deb net optional arch=any + open5gs-pcf deb net optional arch=any + open5gs-pcrf deb net optional arch=any + open5gs-scp deb net optional arch=any + open5gs-sgwc deb net optional arch=any + open5gs-sgwu deb net optional arch=any + open5gs-smf deb net optional arch=any + open5gs-udm deb net optional arch=any + open5gs-udr deb net optional arch=any + open5gs-upf deb net optional arch=any +Checksums-Sha1: + 9b351fc88e82beacb3dad1b6e0c5f8ca0cb4d5ed 13606744 open5gs_2.5.5.77.9f4a9.tar.xz +Checksums-Sha256: + 7cc3ad3522e3a99c3e51ecfaaa028817975917c299be4445183f99dd6fbce70a 13606744 open5gs_2.5.5.77.9f4a9.tar.xz +Files: + d735dea25ad68a17c90c40ef20d9181e 13606744 open5gs_2.5.5.77.9f4a9.tar.xz
View file
open5gs_2.5.5.76.bfd5c.tar.xz/.tarball-version -> open5gs_2.5.5.77.9f4a9.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.5.5.76-bfd5c +2.5.5.77-9f4a9
View file
open5gs_2.5.5.76.bfd5c.tar.xz/debian/changelog -> open5gs_2.5.5.77.9f4a9.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -open5gs (2.5.5.76.bfd5c) unstable; urgency=medium +open5gs (2.5.5.77.9f4a9) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Sun, 08 Jan 2023 04:50:56 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Sun, 08 Jan 2023 05:20:45 +0000 open5gs (2.5.6) unstable; urgency=medium
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/amf-sm.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/amf-sm.c
Changed
@@ -370,6 +370,8 @@ break; } + state = sbi_xact->state; + amf_ue = (amf_ue_t *)sbi_xact->sbi_object; ogs_assert(amf_ue); @@ -382,6 +384,7 @@ e->amf_ue = amf_ue; e->h.sbi.message = &sbi_message;; + e->h.sbi.state = state; ogs_fsm_dispatch(&amf_ue->sm, e); } else { @@ -542,6 +545,7 @@ e->amf_ue = amf_ue; e->sess = sess; e->h.sbi.message = &sbi_message;; + e->h.sbi.state = state; amf_nnssf_nsselection_handle_get(sess, &sbi_message); break;
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/context.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/context.c
Changed
@@ -1177,28 +1177,6 @@ ogs_pool_free(&ran_ue_pool, ran_ue); stats_remove_ran_ue(); - if (ran_ue->amf_ue) { - if (ran_ue->amf_ue->rm_state == RM_STATE_REGISTERED) { - /* Start AMF_TIMER_MOBILE_REACHABLE - * TS 24.501 - * 5.3.7 Handling of the periodic registration update timer and - * mobile reachable timer - * The network supervises the periodic registration update procedure - * of the UE by means of the mobile reachable timer. - * If the UE is not registered for emergency services, - * the mobile reachable timer shall be longer than the value of timer - * T3512. In this case, by default, the mobile reachable timer is - * 4 minutes greater than the value of timer T3512. - * The mobile reachable timer shall be reset and started with the - * value as indicated above, when the AMF releases the NAS signalling - * connection for the UE. - * TODO: If the UE is registered for emergency services, the AMF shall - * set the mobile reachable timer with a value equal to timer T3512. - */ - ogs_timer_start(ran_ue->amf_ue->mobile_reachable.timer, - ogs_time_from_sec(amf_self()->time.t3512.value + 240)); - } - } } void ran_ue_switch_to_gnb(ran_ue_t *ran_ue, amf_gnb_t *new_gnb) @@ -1434,8 +1412,6 @@ amf_ue->nas.amf.ksi = OGS_NAS_KSI_NO_KEY_IS_AVAILABLE; amf_ue->abba_len = 2; - amf_ue->rm_state = RM_STATE_DEREGISTERED; - amf_ue_fsm_init(amf_ue); ogs_list_add(&self.amf_ue_list, amf_ue);
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/context.h -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/context.h
Changed
@@ -403,17 +403,10 @@ long cause; } handover; - /* Network Initiated De-Registration */ - bool network_initiated_de_reg; - /* SubscriptionId of Subscription to Data Change Notification to UDM */ char *data_change_subscription_id; ogs_list_t sess_list; - -#define RM_STATE_DEREGISTERED 0 -#define RM_STATE_REGISTERED 1 - uint8_t rm_state; }; typedef struct amf_sess_s {
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/gmm-handler.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/gmm-handler.c
Changed
@@ -740,7 +740,7 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate_confirmation, amf_ue, NULL)); + amf_nausf_auth_build_authenticate_confirmation, amf_ue, 0, NULL)); return OGS_OK; }
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/gmm-sm.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/gmm-sm.c
Changed
@@ -53,11 +53,15 @@ void gmm_state_de_registered(ogs_fsm_t *s, amf_event_t *e) { + int i; + amf_ue_t *amf_ue = NULL; amf_sess_t *sess = NULL; ogs_sbi_message_t *sbi_message = NULL; + int state = 0; + ogs_assert(e); if (e->sess) { @@ -71,6 +75,12 @@ switch (e->h.id) { case OGS_FSM_ENTRY_SIG: + ogs_assert(amf_ue->num_of_slice <= OGS_MAX_NUM_OF_SLICE); + for (i = 0; i < amf_ue->num_of_slice; i++) { + amf_metrics_inst_by_slice_add(&amf_ue->nr_tai.plmn_id, + &amf_ue->slicei.s_nssai, + AMF_METR_GAUGE_RM_REGISTEREDSUBNBR, -1); + } AMF_UE_CLEAR_PAGING_INFO(amf_ue); AMF_UE_CLEAR_N2_TRANSFER(amf_ue, pdu_session_resource_setup_request); AMF_UE_CLEAR_5GSM_MESSAGE(amf_ue); @@ -123,6 +133,7 @@ case OGS_EVENT_SBI_CLIENT: sbi_message = e->h.sbi.message; ogs_assert(sbi_message); + state = e->h.sbi.state; SWITCH(sbi_message->h.service.name) CASE(OGS_SBI_SERVICE_NAME_NAUSF_AUTH) @@ -197,23 +208,24 @@ ogs_free(amf_ue->data_change_subscription_id); amf_ue->data_change_subscription_id = NULL; } - if (amf_ue->network_initiated_de_reg) { - amf_sbi_send_release_all_sessions( - amf_ue, AMF_RELEASE_SM_CONTEXT_NO_STATE); + + if (state == AMF_NETWORK_INITIATED_DE_REGISTERED) { + amf_sbi_send_release_all_sessions(amf_ue, state); if ((ogs_list_count(&amf_ue->sess_list) == 0) && - (PCF_AM_POLICY_ASSOCIATED(amf_ue))) - { + (PCF_AM_POLICY_ASSOCIATED(amf_ue))) { ogs_assert(true == amf_ue_sbi_discover_and_send( - OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, - amf_npcf_am_policy_control_build_delete, amf_ue, NULL)); + OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, + NULL, + amf_npcf_am_policy_control_build_delete, + amf_ue, state, NULL)); } } else { ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, amf_nausf_auth_build_authenticate_delete, - amf_ue, NULL)); + amf_ue, state, NULL)); } break; DEFAULT @@ -259,7 +271,7 @@ amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_UECM, NULL, amf_nudm_uecm_build_registration_delete, - amf_ue, NULL)); + amf_ue, state, NULL)); break; DEFAULT ogs_warn("%s Ignore invalid HTTP method %s", @@ -283,11 +295,10 @@ break; CASE(OGS_SBI_HTTP_METHOD_DELETE) - if (!amf_ue->network_initiated_de_reg) + if (state != AMF_NETWORK_INITIATED_DE_REGISTERED) ogs_assert(OGS_OK == nas_5gs_send_de_registration_accept(amf_ue)); - amf_ue->network_initiated_de_reg = false; PCF_AM_POLICY_CLEAR(amf_ue); break; @@ -317,6 +328,8 @@ void gmm_state_registered(ogs_fsm_t *s, amf_event_t *e) { + int i; + amf_ue_t *amf_ue = NULL; amf_sess_t *sess = NULL; @@ -335,6 +348,12 @@ switch (e->h.id) { case OGS_FSM_ENTRY_SIG: + ogs_assert(amf_ue->num_of_slice <= OGS_MAX_NUM_OF_SLICE); + for (i = 0; i < amf_ue->num_of_slice; i++) { + amf_metrics_inst_by_slice_add(&amf_ue->nr_tai.plmn_id, + &amf_ue->slicei.s_nssai, + AMF_METR_GAUGE_RM_REGISTEREDSUBNBR, 1); + } break; case OGS_FSM_EXIT_SIG: break; @@ -418,7 +437,7 @@ break; case AMF_TIMER_MOBILE_REACHABLE: - ogs_info("%s Mobile Reachable timer expired", amf_ue->supi); + ogs_info("%s Mobile Reachable Timer Expired", amf_ue->supi); /* Clear mobile_reachable Timers */ CLEAR_AMF_UE_TIMER(amf_ue->mobile_reachable); /* Start AMF_TIMER_IMPLICIT_DEREGISTRATION @@ -434,8 +453,7 @@ ogs_time_from_sec(amf_self()->time.t3512.value + 240)); break; case AMF_TIMER_IMPLICIT_DEREGISTRATION: - ogs_info("%s Implicit de-reg timer expired, de-register UE", - amf_ue->supi); + ogs_info("%s Do Network-Initiated De-Register UE", amf_ue->supi); /* Clear implicit_deregistration Timers */ CLEAR_AMF_UE_TIMER(amf_ue->implicit_deregistration); /* Implicitly de-register UE @@ -452,9 +470,8 @@ */ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_SDM, NULL, - amf_nudm_sdm_build_subscription_delete, amf_ue, NULL)); - amf_ue->network_initiated_de_reg = true; - amf_ue->rm_state = RM_STATE_DEREGISTERED; + amf_nudm_sdm_build_subscription_delete, + amf_ue, AMF_NETWORK_INITIATED_DE_REGISTERED, NULL)); OGS_FSM_TRAN(s, &gmm_state_de_registered); break; default: @@ -478,7 +495,7 @@ static void common_register_state(ogs_fsm_t *s, amf_event_t *e) { - int rv, i, xact_count = 0; + int rv, xact_count = 0; ogs_nas_5gmm_cause_t gmm_cause; amf_ue_t *amf_ue = NULL; @@ -560,7 +577,7 @@ OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, amf_npcf_am_policy_control_build_create, - amf_ue, NULL)); + amf_ue, 0, NULL)); OGS_FSM_TRAN(s, &gmm_state_initial_context_setup); break; } @@ -583,7 +600,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, + amf_ue, 0, NULL)); } OGS_FSM_TRAN(s, &gmm_state_authentication); @@ -661,7 +679,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, + amf_ue, 0, NULL)); } OGS_FSM_TRAN(s, &gmm_state_authentication); @@ -678,13 +697,6 @@ gmm_handle_deregistration_request( amf_ue, &nas_message->gmm.deregistration_request_from_ue); - ogs_assert(amf_ue->num_of_slice <= OGS_MAX_NUM_OF_SLICE); - for (i = 0; i < amf_ue->num_of_slice; i++) { - amf_metrics_inst_by_slice_add(&amf_ue->nr_tai.plmn_id, - &amf_ue->slicei.s_nssai, - AMF_METR_GAUGE_RM_REGISTEREDSUBNBR, -1); - } - amf_ue->rm_state = RM_STATE_DEREGISTERED; OGS_FSM_TRAN(s, &gmm_state_de_registered); break; @@ -700,13 +712,6 @@ NGAP_Cause_PR_misc, NGAP_CauseMisc_om_intervention, NGAP_UE_CTX_REL_NG_CONTEXT_REMOVE, 0)); - ogs_assert(amf_ue->num_of_slice <= OGS_MAX_NUM_OF_SLICE); - for (i = 0; i < amf_ue->num_of_slice; i++) { - amf_metrics_inst_by_slice_add(&amf_ue->nr_tai.plmn_id, - &amf_ue->slicei.s_nssai, - AMF_METR_GAUGE_RM_REGISTEREDSUBNBR, -1); - } - amf_ue->rm_state = RM_STATE_DEREGISTERED; OGS_FSM_TRAN(s, &gmm_state_de_registered); break; @@ -851,7 +856,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, + amf_ue, 0, NULL)); return; case OGS_5GMM_CAUSE_SYNCH_FAILURE: @@ -865,7 +871,7 @@ amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, amf_nausf_auth_build_authenticate, - amf_ue, authentication_failure_parameter->auts)); + amf_ue, 0, authentication_failure_parameter->auts)); return; default: @@ -897,7 +903,7 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, amf_ue, 0, NULL)); break; case OGS_NAS_5GS_5GMM_STATUS: @@ -1106,7 +1112,7 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_UECM, NULL, - amf_nudm_uecm_build_registration, amf_ue, NULL)); + amf_nudm_uecm_build_registration, amf_ue, 0, NULL)); if (amf_ue->nas.message_type == OGS_NAS_5GS_REGISTRATION_REQUEST) { OGS_FSM_TRAN(s, &gmm_state_initial_context_setup); @@ -1142,7 +1148,7 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, amf_ue, 0, NULL)); OGS_FSM_TRAN(s, &gmm_state_authentication); break; @@ -1209,7 +1215,7 @@ void gmm_state_initial_context_setup(ogs_fsm_t *s, amf_event_t *e) { - int rv, xact_count = 0; + int rv, state, xact_count = 0; ogs_nas_5gmm_cause_t gmm_cause; amf_ue_t *amf_ue = NULL; @@ -1244,6 +1250,7 @@ case OGS_EVENT_SBI_CLIENT: sbi_message = e->h.sbi.message; ogs_assert(sbi_message); + state = e->h.sbi.state; SWITCH(sbi_message->h.service.name) CASE(OGS_SBI_SERVICE_NAME_NUDM_UECM) @@ -1268,7 +1275,8 @@ amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_SDM, NULL, amf_nudm_sdm_build_get, - amf_ue, (char *)OGS_SBI_RESOURCE_NAME_AM_DATA)); + amf_ue, state, + (char *)OGS_SBI_RESOURCE_NAME_AM_DATA)); break; DEFAULT @@ -1303,7 +1311,8 @@ break; } - rv = amf_nudm_sdm_handle_provisioned(amf_ue, sbi_message); + rv = amf_nudm_sdm_handle_provisioned( + amf_ue, state, sbi_message); if (rv != OGS_OK) { ogs_error("%s amf_nudm_sdm_handle_provisioned(%s) failed", amf_ue->supi, sbi_message->h.resource.component1); @@ -1388,16 +1397,6 @@ switch (nas_message->gmm.h.message_type) { case OGS_NAS_5GS_REGISTRATION_COMPLETE: ogs_info("%s Registration complete", amf_ue->supi); - if (amf_ue->rm_state == RM_STATE_DEREGISTERED){ - int i; - ogs_assert(amf_ue->num_of_slice <= OGS_MAX_NUM_OF_SLICE); - for (i = 0; i < amf_ue->num_of_slice; i++) { - amf_metrics_inst_by_slice_add(&amf_ue->nr_tai.plmn_id, - &amf_ue->slicei.s_nssai, - AMF_METR_GAUGE_RM_REGISTEREDSUBNBR, 1); - } - } - amf_ue->rm_state = RM_STATE_REGISTERED; CLEAR_AMF_UE_TIMER(amf_ue->t3550); @@ -1480,7 +1479,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, + amf_ue, 0, NULL)); } OGS_FSM_TRAN(s, &gmm_state_authentication); break; @@ -1646,7 +1646,7 @@ OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, amf_npcf_am_policy_control_build_create, - amf_ue, NULL)); + amf_ue, 0, NULL)); OGS_FSM_TRAN(s, &gmm_state_initial_context_setup); break; } @@ -1669,7 +1669,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, + amf_ue, 0, NULL)); } OGS_FSM_TRAN(s, &gmm_state_authentication);
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/namf-handler.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/namf-handler.c
Changed
@@ -499,37 +499,38 @@ return OGS_OK; } -static int network_deregister ( - amf_ue_t *amf_ue, OpenAPI_deregistration_reason_e dereg_reason) { +static int do_network_initiated_de_register( + amf_ue_t *amf_ue, OpenAPI_deregistration_reason_e dereg_reason) +{ if ((CM_CONNECTED(amf_ue)) && - (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_registered))) - { - amf_ue->network_initiated_de_reg = true; + (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_registered))) { ogs_assert(OGS_OK == nas_5gs_send_de_registration_request(amf_ue, dereg_reason)); amf_sbi_send_release_all_sessions( - amf_ue, AMF_RELEASE_SM_CONTEXT_NO_STATE); + amf_ue, AMF_NETWORK_INITIATED_DE_REGISTERED); if ((ogs_list_count(&amf_ue->sess_list) == 0) && - (PCF_AM_POLICY_ASSOCIATED(amf_ue))) - { + (PCF_AM_POLICY_ASSOCIATED(amf_ue))) { ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, - amf_npcf_am_policy_control_build_delete, amf_ue, NULL)); + amf_npcf_am_policy_control_build_delete, + amf_ue, AMF_NETWORK_INITIATED_DE_REGISTERED, NULL)); } OGS_FSM_TRAN(&amf_ue->sm, &gmm_state_de_registered); return OGS_OK; - } - else if (CM_IDLE(amf_ue)) { + + } else if (CM_IDLE(amf_ue)) { /* TODO: need to page UE */ - /*ngap_send_paging(amf_ue);*/ - return OGS_OK; + ogs_error("Not implemented : need to page UE"); + return OGS_ERROR; } else { - return OGS_ERROR; + ogs_fatal("Invalid State"); + ogs_assert_if_reached(); + return OGS_ERROR; } } @@ -588,8 +589,8 @@ * session associated with non-emergency service as described in clause 4.3.4. */ - if (network_deregister( - amf_ue, DeregistrationData->dereg_reason) == -1) { + if (do_network_initiated_de_register( + amf_ue, DeregistrationData->dereg_reason) != OGS_OK) { status = OGS_SBI_HTTP_STATUS_BAD_REQUEST; ogs_error("%s Deregistration notification for UE in wrong state", amf_ue->supi); @@ -823,8 +824,7 @@ } - OpenAPI_list_for_each(ModificationNotification->notify_items, node) - { + OpenAPI_list_for_each(ModificationNotification->notify_items, node) { OpenAPI_notify_item_t *item = node->data; char *saveptr = NULL; @@ -854,12 +854,11 @@ CASE(OGS_SBI_RESOURCE_NAME_AM_DATA) OpenAPI_lnode_t *node_ci; - OpenAPI_list_for_each(item->changes, node_ci) - { + OpenAPI_list_for_each(item->changes, node_ci) { OpenAPI_change_item_t *change_item = node_ci->data; - if (update_rat_res(change_item, amf_ue->rat_restrictions) - || update_ambr(change_item, &amf_ue->ue_ambr, - &ambr_changed)) { + if (update_rat_res(change_item, amf_ue->rat_restrictions) || + update_ambr(change_item, &amf_ue->ue_ambr, + &ambr_changed)) { status = OGS_SBI_HTTP_STATUS_BAD_REQUEST; goto cleanup; } @@ -879,7 +878,8 @@ } if (amf_ue_is_rat_restricted(amf_ue)) { - if (network_deregister(amf_ue, OpenAPI_deregistration_reason_REREGISTRATION_REQUIRED) == -1) { + if (do_network_initiated_de_register(amf_ue, + OpenAPI_deregistration_reason_REREGISTRATION_REQUIRED) != OGS_OK) { status = OGS_SBI_HTTP_STATUS_BAD_REQUEST; ogs_error("%s Deregistration notification for UE in wrong state", amf_ue->supi); @@ -888,7 +888,7 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_SDM, NULL, - amf_nudm_sdm_build_subscription_delete, amf_ue, NULL)); + amf_nudm_sdm_build_subscription_delete, amf_ue, 0, NULL)); } else if (ambr_changed) { ogs_pkbuf_t *ngapbuf;
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/ngap-handler.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/ngap-handler.c
Changed
@@ -1571,6 +1571,32 @@ * to prevent retransmission of NAS messages. */ CLEAR_AMF_UE_ALL_TIMERS(amf_ue); + + /* + * TS 24.501 + * 5.3.7 Handling of the periodic registration update timer and + * + * Start AMF_TIMER_MOBILE_REACHABLE + * mobile reachable timer + * The network supervises the periodic registration update procedure + * of the UE by means of the mobile reachable timer. + * If the UE is not registered for emergency services, + * the mobile reachable timer shall be longer than the value of timer + * T3512. In this case, by default, the mobile reachable timer is + * 4 minutes greater than the value of timer T3512. + * The mobile reachable timer shall be reset and started with the + * value as indicated above, when the AMF releases the NAS signalling + * connection for the UE. + * + * TODO: If the UE is registered for emergency services, the AMF shall + * set the mobile reachable timer with a value equal to timer T3512. + */ + if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_registered) && + ran_ue->ue_ctx_rel_action == NGAP_UE_CTX_REL_NG_REMOVE_AND_UNLINK) { + + ogs_timer_start(amf_ue->mobile_reachable.timer, + ogs_time_from_sec(amf_self()->time.t3512.value + 240)); + } } switch (ran_ue->ue_ctx_rel_action) {
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/nsmf-handler.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/nsmf-handler.c
Changed
@@ -236,7 +236,7 @@ OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, amf_npcf_am_policy_control_build_create, - amf_ue, NULL)); + amf_ue, 0, NULL)); } else { CLEAR_AMF_UE_TIMER(amf_ue->t3550); ogs_assert(OGS_OK == @@ -821,7 +821,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, - amf_npcf_am_policy_control_build_create, amf_ue, NULL)); + amf_npcf_am_policy_control_build_create, + amf_ue, 0, NULL)); } else { CLEAR_AMF_UE_TIMER(amf_ue->t3550); ogs_assert(OGS_OK == @@ -866,7 +867,8 @@ /* Not reached here */ ogs_assert_if_reached(); - } else if (state == AMF_RELEASE_SM_CONTEXT_NO_STATE) { + } else if (state == AMF_RELEASE_SM_CONTEXT_NO_STATE || + state == AMF_NETWORK_INITIATED_DE_REGISTERED) { /* NO_STATE */ if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_authentication)) { @@ -874,7 +876,8 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NAUSF_AUTH, NULL, - amf_nausf_auth_build_authenticate, amf_ue, NULL)); + amf_nausf_auth_build_authenticate, + amf_ue, 0, NULL)); } else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_de_registered)) { @@ -893,7 +896,7 @@ amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, amf_npcf_am_policy_control_build_delete, - amf_ue, NULL)); + amf_ue, state, NULL)); } else if (OGS_FSM_CHECK(&amf_ue->sm, gmm_state_registered)) { /*
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/nudm-handler.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/nudm-handler.c
Changed
@@ -23,7 +23,7 @@ #include "nas-path.h" int amf_nudm_sdm_handle_provisioned( - amf_ue_t *amf_ue, ogs_sbi_message_t *recvmsg) + amf_ue_t *amf_ue, int state, ogs_sbi_message_t *recvmsg) { int i; @@ -157,7 +157,7 @@ amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_SDM, NULL, amf_nudm_sdm_build_get, - amf_ue, (char *)OGS_SBI_RESOURCE_NAME_SMF_SELECT_DATA)); + amf_ue, state, (char *)OGS_SBI_RESOURCE_NAME_SMF_SELECT_DATA)); break; CASE(OGS_SBI_RESOURCE_NAME_SMF_SELECT_DATA) @@ -230,7 +230,8 @@ amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_SDM, NULL, amf_nudm_sdm_build_get, - amf_ue, (char *)OGS_SBI_RESOURCE_NAME_UE_CONTEXT_IN_SMF_DATA)); + amf_ue, state, + (char *)OGS_SBI_RESOURCE_NAME_UE_CONTEXT_IN_SMF_DATA)); break; CASE(OGS_SBI_RESOURCE_NAME_UE_CONTEXT_IN_SMF_DATA) @@ -241,14 +242,15 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, - amf_npcf_am_policy_control_build_create, amf_ue, NULL)); + amf_npcf_am_policy_control_build_create, + amf_ue, state, NULL)); } else { ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NUDM_SDM, NULL, - amf_nudm_sdm_build_subscription, amf_ue, - (char *)OGS_SBI_RESOURCE_NAME_AM_DATA)); + amf_nudm_sdm_build_subscription, + amf_ue, state, (char *)OGS_SBI_RESOURCE_NAME_AM_DATA)); } break; @@ -300,7 +302,7 @@ ogs_assert(true == amf_ue_sbi_discover_and_send( OGS_SBI_SERVICE_TYPE_NPCF_AM_POLICY_CONTROL, NULL, - amf_npcf_am_policy_control_build_create, amf_ue, NULL)); + amf_npcf_am_policy_control_build_create, amf_ue, state, NULL)); break; DEFAULT
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/nudm-handler.h -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/nudm-handler.h
Changed
@@ -27,7 +27,7 @@ #include "context.h" int amf_nudm_sdm_handle_provisioned( - amf_ue_t *amf_ue, ogs_sbi_message_t *recvmsg); + amf_ue_t *amf_ue, int state, ogs_sbi_message_t *recvmsg); #ifdef __cplusplus }
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/sbi-path.c -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/sbi-path.c
Changed
@@ -90,7 +90,7 @@ ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option, ogs_sbi_request_t *(*build)(amf_ue_t *amf_ue, void *data), - amf_ue_t *amf_ue, void *data) + amf_ue_t *amf_ue, int state, void *data) { ogs_sbi_xact_t *xact = NULL; @@ -109,6 +109,8 @@ return false; } + xact->state = state; + if (ogs_sbi_discover_and_send(xact) != true) { ogs_error("amf_ue_sbi_discover_and_send() failed"); ogs_sbi_xact_remove(xact);
View file
open5gs_2.5.5.76.bfd5c.tar.xz/src/amf/sbi-path.h -> open5gs_2.5.5.77.9f4a9.tar.xz/src/amf/sbi-path.h
Changed
@@ -36,13 +36,11 @@ bool amf_sbi_send_request( ogs_sbi_nf_instance_t *nf_instance, ogs_sbi_xact_t *xact); -bool amf_ue_sbi_discover_and_send( - ogs_sbi_service_type_e service_type, - ogs_sbi_discovery_option_t *discovery_option, - ogs_sbi_request_t *(*build)(amf_ue_t *amf_ue, void *data), - amf_ue_t *amf_ue, void *data); #define AMF_CREATE_SM_CONTEXT_NO_STATE 0 + +#define AMF_NETWORK_INITIATED_DE_REGISTERED 1 + #define AMF_UPDATE_SM_CONTEXT_ACTIVATED 11 #define AMF_UPDATE_SM_CONTEXT_SETUP_FAIL 12 #define AMF_UPDATE_SM_CONTEXT_DEACTIVATED 13 @@ -64,6 +62,12 @@ #define AMF_REMOVE_S1_CONTEXT_BY_LO_CONNREFUSED 51 #define AMF_REMOVE_S1_CONTEXT_BY_RESET_ALL 52 #define AMF_REMOVE_S1_CONTEXT_BY_RESET_PARTIAL 53 + +bool amf_ue_sbi_discover_and_send( + ogs_sbi_service_type_e service_type, + ogs_sbi_discovery_option_t *discovery_option, + ogs_sbi_request_t *(*build)(amf_ue_t *amf_ue, void *data), + amf_ue_t *amf_ue, int state, void *data); bool amf_sess_sbi_discover_and_send( ogs_sbi_service_type_e service_type, ogs_sbi_discovery_option_t *discovery_option,
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.