From 03113e8502ab6153a5f320f00b6f60685fdfc6ef Mon Sep 17 00:00:00 2001 From: Handa Wang <7058128+superwhd@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:33:19 +0800 Subject: [PATCH] [nat64] enhancements for `Translator::UpdateState` (#10564) This commit applies following enhancements to the `Translator::UpdateState`: - Remove the `aAlwaysNotify` parameter to simplify its logic. - Fix an issue that `mState` may not be updated when setting a CIDR. --- src/core/net/nat64_translator.cpp | 17 ++++++----------- src/core/net/nat64_translator.hpp | 2 +- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/core/net/nat64_translator.cpp b/src/core/net/nat64_translator.cpp index 5afe9bfb0..da1e6f870 100644 --- a/src/core/net/nat64_translator.cpp +++ b/src/core/net/nat64_translator.cpp @@ -509,8 +509,10 @@ Error Translator::SetIp4Cidr(const Ip4::Cidr &aCidr) ToUlong(numberOfHosts)); mIp4Cidr = aCidr; - // Always notify the platform when the CIDR is changed. - UpdateState(true /* aAlwaysNotify */); + UpdateState(); + + // Notify the platform when the CIDR is changed. + Get().Signal(kEventNat64TranslatorStateChanged); exit: return err; @@ -634,7 +636,7 @@ void Translator::ProtocolCounters::Count4To6Packet(uint8_t aProtocol, uint64_t a mTotal.m4To6Bytes += aPacketSize; } -void Translator::UpdateState(bool aAlwaysNotify) +void Translator::UpdateState(void) { State newState; @@ -654,14 +656,7 @@ void Translator::UpdateState(bool aAlwaysNotify) newState = kStateDisabled; } - if (aAlwaysNotify) - { - Get().Signal(kEventNat64TranslatorStateChanged); - } - else - { - SuccessOrExit(Get().Update(mState, newState, kEventNat64TranslatorStateChanged)); - } + SuccessOrExit(Get().Update(mState, newState, kEventNat64TranslatorStateChanged)); LogInfo("NAT64 translator is now %s", StateToString(mState)); exit: diff --git a/src/core/net/nat64_translator.hpp b/src/core/net/nat64_translator.hpp index bd29ff690..2335e7a9f 100644 --- a/src/core/net/nat64_translator.hpp +++ b/src/core/net/nat64_translator.hpp @@ -380,7 +380,7 @@ private: using MappingTimer = TimerMilliIn; - void UpdateState(bool aAlwaysNotify = false); + void UpdateState(void); bool mEnabled; State mState;