From ed3444eef5e9e57705645b500dbd6c5af453703f Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Tue, 1 Mar 2022 22:02:02 +0900 Subject: [PATCH] Need to increase NF ref_count 1. UE registered and PDU established. 2. PCF does not receive Heartbeat. - PCF De-registered state. - Since PDU is established, SMF should not remove NF instance 3. PCF re-registered. - HERE, WE NEED TO INCREASE NF REFERENCE COUNT. Otherwise, NF instance will be removed if PCF is de-registered state 4. UE sends PDU release request. 5. Because SMF knows PCF NF instance, SMF can send PCF delete --- src/amf/nnrf-handler.c | 4 ++++ src/ausf/nnrf-handler.c | 4 ++++ src/bsf/nnrf-handler.c | 4 ++++ src/nssf/nnrf-handler.c | 2 ++ src/pcf/nnrf-handler.c | 4 ++++ src/smf/nnrf-handler.c | 4 ++++ src/udm/nnrf-handler.c | 4 ++++ src/udr/nnrf-handler.c | 2 ++ tests/af/nnrf-handler.c | 4 ++++ 9 files changed, 32 insertions(+) diff --git a/src/amf/nnrf-handler.c b/src/amf/nnrf-handler.c index f1bd07249..6056b09a3 100644 --- a/src/amf/nnrf-handler.c +++ b/src/amf/nnrf-handler.c @@ -182,6 +182,8 @@ bool amf_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, amf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -341,6 +343,8 @@ void amf_nnrf_handle_nf_discover_search_result( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, amf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/ausf/nnrf-handler.c b/src/ausf/nnrf-handler.c index b2702fdc9..7467a0392 100644 --- a/src/ausf/nnrf-handler.c +++ b/src/ausf/nnrf-handler.c @@ -179,6 +179,8 @@ bool ausf_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, ausf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -282,6 +284,8 @@ void ausf_nnrf_handle_nf_discover( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, ausf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/bsf/nnrf-handler.c b/src/bsf/nnrf-handler.c index 9cf19847a..c0bd7d670 100644 --- a/src/bsf/nnrf-handler.c +++ b/src/bsf/nnrf-handler.c @@ -180,6 +180,8 @@ bool bsf_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, bsf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -283,6 +285,8 @@ void bsf_nnrf_handle_nf_discover( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, bsf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/nssf/nnrf-handler.c b/src/nssf/nnrf-handler.c index f7c8bb10c..f2e296e98 100644 --- a/src/nssf/nnrf-handler.c +++ b/src/nssf/nnrf-handler.c @@ -179,6 +179,8 @@ bool nssf_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, nssf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/pcf/nnrf-handler.c b/src/pcf/nnrf-handler.c index babedf497..19276832e 100644 --- a/src/pcf/nnrf-handler.c +++ b/src/pcf/nnrf-handler.c @@ -180,6 +180,8 @@ bool pcf_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, pcf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -285,6 +287,8 @@ void pcf_nnrf_handle_nf_discover( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, pcf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/smf/nnrf-handler.c b/src/smf/nnrf-handler.c index 8c5adb34f..dab4316a0 100644 --- a/src/smf/nnrf-handler.c +++ b/src/smf/nnrf-handler.c @@ -180,6 +180,8 @@ bool smf_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, smf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -283,6 +285,8 @@ void smf_nnrf_handle_nf_discover( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, smf_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/udm/nnrf-handler.c b/src/udm/nnrf-handler.c index 5d34acf12..55de06ac6 100644 --- a/src/udm/nnrf-handler.c +++ b/src/udm/nnrf-handler.c @@ -180,6 +180,8 @@ bool udm_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, udm_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -283,6 +285,8 @@ void udm_nnrf_handle_nf_discover( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, udm_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/src/udr/nnrf-handler.c b/src/udr/nnrf-handler.c index 0962e71b2..801e08ead 100644 --- a/src/udr/nnrf-handler.c +++ b/src/udr/nnrf-handler.c @@ -180,6 +180,8 @@ bool udr_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, udr_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); diff --git a/tests/af/nnrf-handler.c b/tests/af/nnrf-handler.c index 7192f1232..3108736fe 100644 --- a/tests/af/nnrf-handler.c +++ b/tests/af/nnrf-handler.c @@ -184,6 +184,8 @@ bool af_nnrf_handle_nf_status_notify( ogs_info("[%s] (NRF-notify) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, af_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL); @@ -287,6 +289,8 @@ void af_nnrf_handle_nf_discover( ogs_info("[%s] (NF-discover) NF registered", nf_instance->id); } else { + nf_instance->reference_count++; + OGS_FSM_TRAN(&nf_instance->sm, af_nf_state_registered); ogs_fsm_dispatch(&nf_instance->sm, NULL);