diff --git a/include/openthread/instance.h b/include/openthread/instance.h index 095db491c..b7c7dfa45 100644 --- a/include/openthread/instance.h +++ b/include/openthread/instance.h @@ -52,7 +52,7 @@ extern "C" { * * @note This number versions both OpenThread platform and user APIs. */ -#define OPENTHREAD_API_VERSION (562) +#define OPENTHREAD_API_VERSION (563) /** * @addtogroup api-instance diff --git a/include/openthread/nat64.h b/include/openthread/nat64.h index bcaec32d1..aa52efe79 100644 --- a/include/openthread/nat64.h +++ b/include/openthread/nat64.h @@ -524,6 +524,15 @@ otError otIp4AddressFromString(const char *aString, otIp4Address *aAddress); */ otError otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address); +/** + * Converts a given `otNat64State` to a human-readable string. + * + * @param[in] aState The NAT64 state. + * + * @returns The string representation of @p aState. + */ +const char *otNat64StateToString(otNat64State aState); + /** * @} */ diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index f4a21e823..9c4dc4669 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -645,18 +645,11 @@ template <> otError Interpreter::Process(Arg aArgs[]) */ else if (aArgs[0] == "state") { - static const char *const kNat64State[] = {"Disabled", "NotRunning", "Idle", "Active"}; - - static_assert(0 == OT_NAT64_STATE_DISABLED, "OT_NAT64_STATE_DISABLED value is incorrect"); - static_assert(1 == OT_NAT64_STATE_NOT_RUNNING, "OT_NAT64_STATE_NOT_RUNNING value is incorrect"); - static_assert(2 == OT_NAT64_STATE_IDLE, "OT_NAT64_STATE_IDLE value is incorrect"); - static_assert(3 == OT_NAT64_STATE_ACTIVE, "OT_NAT64_STATE_ACTIVE value is incorrect"); - #if OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE - OutputLine("PrefixManager: %s", kNat64State[otNat64GetPrefixManagerState(GetInstancePtr())]); + OutputLine("PrefixManager: %s", otNat64StateToString(otNat64GetPrefixManagerState(GetInstancePtr()))); #endif #if OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE - OutputLine("Translator: %s", kNat64State[otNat64GetTranslatorState(GetInstancePtr())]); + OutputLine("Translator: %s", otNat64StateToString(otNat64GetTranslatorState(GetInstancePtr()))); #endif } #if OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diff --git a/src/core/api/nat64_api.cpp b/src/core/api/nat64_api.cpp index 32f1bf6cf..c243aa983 100644 --- a/src/core/api/nat64_api.cpp +++ b/src/core/api/nat64_api.cpp @@ -180,3 +180,14 @@ void otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize) AsCoreType(aCidr).ToString(aBuffer, aSize); } + +const char *otNat64StateToString(otNat64State aState) +{ + const char *str = "Unknown"; + + VerifyOrExit(aState <= OT_NAT64_STATE_ACTIVE); + str = Nat64::StateToString(MapEnum(aState)); + +exit: + return str; +} diff --git a/src/core/net/nat64_translator.cpp b/src/core/net/nat64_translator.cpp index 347fdd655..b480bc48b 100644 --- a/src/core/net/nat64_translator.cpp +++ b/src/core/net/nat64_translator.cpp @@ -33,15 +33,11 @@ #include "nat64_translator.hpp" -#if OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE - #include "instance/instance.hpp" namespace ot { namespace Nat64 { -RegisterLogModule("Nat64"); - const char *StateToString(State aState) { static const char *const kStateString[] = { @@ -63,6 +59,10 @@ const char *StateToString(State aState) return kStateString[aState]; } +#if OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE + +RegisterLogModule("Nat64"); + Translator::Translator(Instance &aInstance) : InstanceLocator(aInstance) , mState(kStateDisabled) @@ -914,7 +914,7 @@ void Translator::SetEnabled(bool aEnable) } } +#endif // OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE + } // namespace Nat64 } // namespace ot - -#endif // OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE