From 3e214bd17a6f98b3c5bd069de57609d7e7650182 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Mon, 24 Jan 2022 10:10:58 -0800 Subject: [PATCH] [cli] inline simple sub-command process methods (#7347) --- src/cli/cli.cpp | 393 +++++++++++++++++------------------------------- src/cli/cli.hpp | 17 --- 2 files changed, 139 insertions(+), 271 deletions(-) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 5fbdfcd3e..23e3638a2 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -2029,35 +2029,6 @@ exit: return error; } -otError Interpreter::ProcessIpAddrAdd(Arg aArgs[]) -{ - otError error; - otNetifAddress aAddress; - - SuccessOrExit(error = aArgs[0].ParseAsIp6Address(aAddress.mAddress)); - aAddress.mPrefixLength = 64; - aAddress.mPreferred = true; - aAddress.mValid = true; - aAddress.mAddressOrigin = OT_ADDRESS_ORIGIN_MANUAL; - - error = otIp6AddUnicastAddress(GetInstancePtr(), &aAddress); - -exit: - return error; -} - -otError Interpreter::ProcessIpAddrDel(Arg aArgs[]) -{ - otError error; - otIp6Address address; - - SuccessOrExit(error = aArgs[0].ParseAsIp6Address(address)); - error = otIp6RemoveUnicastAddress(GetInstancePtr(), &address); - -exit: - return error; -} - const char *Interpreter::AddressOriginToString(uint8_t aOrigin) { static const char *const kOriginStrings[4] = { @@ -2104,11 +2075,22 @@ otError Interpreter::ProcessIpAddr(Arg aArgs[]) } else if (aArgs[0] == "add") { - error = ProcessIpAddrAdd(aArgs + 1); + otNetifAddress address; + + SuccessOrExit(error = aArgs[1].ParseAsIp6Address(address.mAddress)); + address.mPrefixLength = 64; + address.mPreferred = true; + address.mValid = true; + address.mAddressOrigin = OT_ADDRESS_ORIGIN_MANUAL; + + error = otIp6AddUnicastAddress(GetInstancePtr(), &address); } else if (aArgs[0] == "del") { - error = ProcessIpAddrDel(aArgs + 1); + otIp6Address address; + + SuccessOrExit(error = aArgs[1].ParseAsIp6Address(address)); + error = otIp6RemoveUnicastAddress(GetInstancePtr(), &address); } else if (aArgs[0] == "linklocal") { @@ -2127,57 +2109,6 @@ otError Interpreter::ProcessIpAddr(Arg aArgs[]) error = OT_ERROR_INVALID_COMMAND; } - return error; -} - -otError Interpreter::ProcessIpMulticastAddrAdd(Arg aArgs[]) -{ - otIp6Address address; - -#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE - otError error = OT_ERROR_INVALID_ARGS; - for (Arg *arg = &aArgs[0]; !arg->IsEmpty(); arg++) - { - SuccessOrExit(error = arg->ParseAsIp6Address(address)); - SuccessOrExit(error = otIp6SubscribeMulticastAddress(GetInstancePtr(), &address)); - } -#else - otError error; - SuccessOrExit(error = aArgs[0].ParseAsIp6Address(address)); - error = otIp6SubscribeMulticastAddress(GetInstancePtr(), &address); -#endif -exit: - return error; -} - -otError Interpreter::ProcessIpMulticastAddrDel(Arg aArgs[]) -{ - otError error; - otIp6Address address; - - SuccessOrExit(error = aArgs[0].ParseAsIp6Address(address)); - error = otIp6UnsubscribeMulticastAddress(GetInstancePtr(), &address); - -exit: - return error; -} - -otError Interpreter::ProcessMulticastPromiscuous(Arg aArgs[]) -{ - otError error = OT_ERROR_NONE; - - if (aArgs[0].IsEmpty()) - { - OutputEnabledDisabledStatus(otIp6IsMulticastPromiscuousEnabled(GetInstancePtr())); - } - else - { - bool enable; - - SuccessOrExit(error = ParseEnableOrDisable(aArgs[0], enable)); - otIp6SetMulticastPromiscuousEnabled(GetInstancePtr(), enable); - } - exit: return error; } @@ -2196,15 +2127,41 @@ otError Interpreter::ProcessIpMulticastAddr(Arg aArgs[]) } else if (aArgs[0] == "add") { - error = ProcessIpMulticastAddrAdd(aArgs + 1); + aArgs++; + + do + { + otIp6Address address; + + SuccessOrExit(error = aArgs->ParseAsIp6Address(address)); + SuccessOrExit(error = otIp6SubscribeMulticastAddress(GetInstancePtr(), &address)); + } +#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE + while (!(++aArgs)->IsEmpty()); +#else + while (false); +#endif } else if (aArgs[0] == "del") { - error = ProcessIpMulticastAddrDel(aArgs + 1); + otIp6Address address; + + SuccessOrExit(error = aArgs[1].ParseAsIp6Address(address)); + error = otIp6UnsubscribeMulticastAddress(GetInstancePtr(), &address); } else if (aArgs[0] == "promiscuous") { - error = ProcessMulticastPromiscuous(aArgs + 1); + if (aArgs[1].IsEmpty()) + { + OutputEnabledDisabledStatus(otIp6IsMulticastPromiscuousEnabled(GetInstancePtr())); + } + else + { + bool enable; + + SuccessOrExit(error = ParseEnableOrDisable(aArgs[1], enable)); + otIp6SetMulticastPromiscuousEnabled(GetInstancePtr(), enable); + } } else if (aArgs[0] == "llatn") { @@ -2219,6 +2176,7 @@ otError Interpreter::ProcessIpMulticastAddr(Arg aArgs[]) error = OT_ERROR_INVALID_COMMAND; } +exit: return error; } @@ -2750,45 +2708,39 @@ otError Interpreter::ProcessMlr(Arg aArgs[]) if (aArgs[0] == "reg") { - error = ProcessMlrReg(aArgs + 1); - } + otIp6Address addresses[kIp6AddressesNumMax]; + uint32_t timeout; + bool hasTimeout = false; + uint8_t numAddresses = 0; - return error; -} - -otError Interpreter::ProcessMlrReg(Arg aArgs[]) -{ - otError error = OT_ERROR_NONE; - otIp6Address addresses[kIp6AddressesNumMax]; - uint32_t timeout; - bool hasTimeout = false; - uint8_t numAddresses = 0; - - while (aArgs->ParseAsIp6Address(addresses[numAddresses]) == OT_ERROR_NONE) - { aArgs++; - numAddresses++; - if (numAddresses == OT_ARRAY_LENGTH(addresses)) + while (aArgs->ParseAsIp6Address(addresses[numAddresses]) == OT_ERROR_NONE) { - break; + aArgs++; + numAddresses++; + + if (numAddresses == OT_ARRAY_LENGTH(addresses)) + { + break; + } } + + if (aArgs->ParseAsUint32(timeout) == OT_ERROR_NONE) + { + aArgs++; + hasTimeout = true; + } + + VerifyOrExit(aArgs->IsEmpty() && (numAddresses > 0), error = OT_ERROR_INVALID_ARGS); + + SuccessOrExit(error = otIp6RegisterMulticastListeners(GetInstancePtr(), addresses, numAddresses, + hasTimeout ? &timeout : nullptr, + Interpreter::HandleMlrRegResult, this)); + + error = OT_ERROR_PENDING; } - if (aArgs->ParseAsUint32(timeout) == OT_ERROR_NONE) - { - aArgs++; - hasTimeout = true; - } - - VerifyOrExit(aArgs->IsEmpty() && (numAddresses > 0), error = OT_ERROR_INVALID_ARGS); - - SuccessOrExit(error = otIp6RegisterMulticastListeners(GetInstancePtr(), addresses, numAddresses, - hasTimeout ? &timeout : nullptr, - Interpreter::HandleMlrRegResult, this)); - - error = OT_ERROR_PENDING; - exit: return error; } @@ -3614,70 +3566,42 @@ exit: return error; } -otError Interpreter::ProcessPrefixAdd(Arg aArgs[]) -{ - otError error = OT_ERROR_NONE; - otBorderRouterConfig config; - - SuccessOrExit(error = ParsePrefix(aArgs, config)); - error = otBorderRouterAddOnMeshPrefix(GetInstancePtr(), &config); - -exit: - return error; -} - -otError Interpreter::ProcessPrefixRemove(Arg aArgs[]) -{ - otError error = OT_ERROR_NONE; - otIp6Prefix prefix; - - SuccessOrExit(error = aArgs[0].ParseAsIp6Prefix(prefix)); - - error = otBorderRouterRemoveOnMeshPrefix(GetInstancePtr(), &prefix); - -exit: - return error; -} - -otError Interpreter::ProcessPrefixList(void) -{ - otNetworkDataIterator iterator = OT_NETWORK_DATA_ITERATOR_INIT; - otBorderRouterConfig config; - - while (otBorderRouterGetNextOnMeshPrefix(GetInstancePtr(), &iterator, &config) == OT_ERROR_NONE) - { - mNetworkData.OutputPrefix(config); - } - -#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE - if (otBackboneRouterGetState(GetInstancePtr()) == OT_BACKBONE_ROUTER_STATE_DISABLED) - { - SuccessOrExit(otBackboneRouterGetDomainPrefix(GetInstancePtr(), &config)); - OutputFormat("- "); - mNetworkData.OutputPrefix(config); - } - // Else already printed via above while loop. -exit: -#endif - - return OT_ERROR_NONE; -} - otError Interpreter::ProcessPrefix(Arg aArgs[]) { otError error = OT_ERROR_NONE; if (aArgs[0].IsEmpty()) { - error = ProcessPrefixList(); + otNetworkDataIterator iterator = OT_NETWORK_DATA_ITERATOR_INIT; + otBorderRouterConfig config; + + while (otBorderRouterGetNextOnMeshPrefix(GetInstancePtr(), &iterator, &config) == OT_ERROR_NONE) + { + mNetworkData.OutputPrefix(config); + } + +#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE + if (otBackboneRouterGetState(GetInstancePtr()) == OT_BACKBONE_ROUTER_STATE_DISABLED) + { + SuccessOrExit(otBackboneRouterGetDomainPrefix(GetInstancePtr(), &config)); + OutputFormat("- "); + mNetworkData.OutputPrefix(config); + } +#endif } else if (aArgs[0] == "add") { - error = ProcessPrefixAdd(aArgs + 1); + otBorderRouterConfig config; + + SuccessOrExit(error = ParsePrefix(aArgs + 1, config)); + error = otBorderRouterAddOnMeshPrefix(GetInstancePtr(), &config); } else if (aArgs[0] == "remove") { - error = ProcessPrefixRemove(aArgs + 1); + otIp6Prefix prefix; + + SuccessOrExit(error = aArgs[1].ParseAsIp6Prefix(prefix)); + error = otBorderRouterRemoveOnMeshPrefix(GetInstancePtr(), &prefix); } else if (aArgs[0] == "meshlocal") { @@ -3688,6 +3612,7 @@ otError Interpreter::ProcessPrefix(Arg aArgs[]) error = OT_ERROR_INVALID_COMMAND; } +exit: return error; } #endif // OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE @@ -3822,65 +3747,40 @@ exit: return error; } -otError Interpreter::ProcessRouteAdd(Arg aArgs[]) -{ - otError error; - otExternalRouteConfig config; - - SuccessOrExit(error = ParseRoute(aArgs, config)); - error = otBorderRouterAddRoute(GetInstancePtr(), &config); - -exit: - return error; -} - -otError Interpreter::ProcessRouteRemove(Arg aArgs[]) -{ - otError error = OT_ERROR_NONE; - otIp6Prefix prefix; - - SuccessOrExit(error = aArgs[0].ParseAsIp6Prefix(prefix)); - - error = otBorderRouterRemoveRoute(GetInstancePtr(), &prefix); - -exit: - return error; -} - -otError Interpreter::ProcessRouteList(void) -{ - otNetworkDataIterator iterator = OT_NETWORK_DATA_ITERATOR_INIT; - otExternalRouteConfig config; - - while (otBorderRouterGetNextRoute(GetInstancePtr(), &iterator, &config) == OT_ERROR_NONE) - { - mNetworkData.OutputRoute(config); - } - - return OT_ERROR_NONE; -} - otError Interpreter::ProcessRoute(Arg aArgs[]) { otError error = OT_ERROR_NONE; if (aArgs[0].IsEmpty()) { - error = ProcessRouteList(); + otNetworkDataIterator iterator = OT_NETWORK_DATA_ITERATOR_INIT; + otExternalRouteConfig config; + + while (otBorderRouterGetNextRoute(GetInstancePtr(), &iterator, &config) == OT_ERROR_NONE) + { + mNetworkData.OutputRoute(config); + } } else if (aArgs[0] == "add") { - error = ProcessRouteAdd(aArgs + 1); + otExternalRouteConfig config; + + SuccessOrExit(error = ParseRoute(aArgs + 1, config)); + error = otBorderRouterAddRoute(GetInstancePtr(), &config); } else if (aArgs[0] == "remove") { - error = ProcessRouteRemove(aArgs + 1); + otIp6Prefix prefix; + + SuccessOrExit(error = aArgs[1].ParseAsIp6Prefix(prefix)); + error = otBorderRouterRemoveRoute(GetInstancePtr(), &prefix); } else { error = OT_ERROR_INVALID_COMMAND; } +exit: return error; } #endif // OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE @@ -4690,64 +4590,49 @@ otError Interpreter::ProcessMac(Arg aArgs[]) if (aArgs[0] == "retries") { - error = ProcessMacRetries(aArgs + 1); + if (aArgs[1] == "direct") + { + error = ProcessGetSet(aArgs + 2, otLinkGetMaxFrameRetriesDirect, otLinkSetMaxFrameRetriesDirect); + } +#if OPENTHREAD_FTD + else if (aArgs[1] == "indirect") + { + error = ProcessGetSet(aArgs + 2, otLinkGetMaxFrameRetriesIndirect, otLinkSetMaxFrameRetriesIndirect); + } +#endif + else + { + error = OT_ERROR_INVALID_ARGS; + } } #if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE else if (aArgs[0] == "send") { - error = ProcessMacSend(aArgs + 1); + VerifyOrExit(aArgs[2].IsEmpty(), error = OT_ERROR_INVALID_ARGS); + + if (aArgs[1] == "datarequest") + { + error = otLinkSendDataRequest(GetInstancePtr()); + } + else if (aArgs[1] == "emptydata") + { + error = otLinkSendEmptyData(GetInstancePtr()); + } + else + { + error = OT_ERROR_INVALID_ARGS; + } } #endif else { error = OT_ERROR_INVALID_COMMAND; - } - - return error; -} - -otError Interpreter::ProcessMacRetries(Arg aArgs[]) -{ - otError error = OT_ERROR_NONE; - - if (aArgs[0] == "direct") - { - error = ProcessGetSet(aArgs + 1, otLinkGetMaxFrameRetriesDirect, otLinkSetMaxFrameRetriesDirect); - } -#if OPENTHREAD_FTD - else if (aArgs[0] == "indirect") - { - error = ProcessGetSet(aArgs + 1, otLinkGetMaxFrameRetriesIndirect, otLinkSetMaxFrameRetriesIndirect); - } -#endif - else - { - error = OT_ERROR_INVALID_ARGS; - } - - return error; -} - -#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE -otError Interpreter::ProcessMacSend(Arg aArgs[]) -{ - otError error = OT_ERROR_INVALID_ARGS; - - VerifyOrExit(aArgs[1].IsEmpty()); - - if (aArgs[0] == "datarequest") - { - error = otLinkSendDataRequest(GetInstancePtr()); - } - else if (aArgs[0] == "emptydata") - { - error = otLinkSendEmptyData(GetInstancePtr()); + ExitNow(); // To silence unused `exit` label warning when `REFERENCE_DEVICE_ENABLE` is not enabled. } exit: return error; } -#endif #if OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE otError Interpreter::ProcessTrel(Arg aArgs[]) diff --git a/src/cli/cli.hpp b/src/cli/cli.hpp index ebd71c7f1..2611cbafc 100644 --- a/src/cli/cli.hpp +++ b/src/cli/cli.hpp @@ -407,12 +407,7 @@ private: otError ProcessFem(Arg aArgs[]); otError ProcessIfconfig(Arg aArgs[]); otError ProcessIpAddr(Arg aArgs[]); - otError ProcessIpAddrAdd(Arg aArgs[]); - otError ProcessIpAddrDel(Arg aArgs[]); otError ProcessIpMulticastAddr(Arg aArgs[]); - otError ProcessIpMulticastAddrAdd(Arg aArgs[]); - otError ProcessIpMulticastAddrDel(Arg aArgs[]); - otError ProcessMulticastPromiscuous(Arg aArgs[]); #if OPENTHREAD_CONFIG_JOINER_ENABLE otError ProcessJoiner(Arg aArgs[]); #endif @@ -446,8 +441,6 @@ private: #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_TMF_PROXY_MLR_ENABLE && OPENTHREAD_CONFIG_COMMISSIONER_ENABLE otError ProcessMlr(Arg aArgs[]); - otError ProcessMlrReg(Arg aArgs[]); - static void HandleMlrRegResult(void * aContext, otError aError, uint8_t aMlrStatus, @@ -497,9 +490,6 @@ private: otError ProcessPollPeriod(Arg aArgs[]); #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE otError ProcessPrefix(Arg aArgs[]); - otError ProcessPrefixAdd(Arg aArgs[]); - otError ProcessPrefixRemove(Arg aArgs[]); - otError ProcessPrefixList(void); #endif otError ProcessPromiscuous(Arg aArgs[]); #if OPENTHREAD_FTD @@ -519,9 +509,6 @@ private: #endif #if OPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE otError ProcessRoute(Arg aArgs[]); - otError ProcessRouteAdd(Arg aArgs[]); - otError ProcessRouteRemove(Arg aArgs[]); - otError ProcessRouteList(void); #endif #if OPENTHREAD_FTD otError ProcessRouter(Arg aArgs[]); @@ -558,10 +545,6 @@ private: otError ProcessMacFilterRss(Arg aArgs[]); #endif otError ProcessMac(Arg aArgs[]); - otError ProcessMacRetries(Arg aArgs[]); -#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE - otError ProcessMacSend(Arg aArgs[]); -#endif #if OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE otError ProcessTrel(Arg aArgs[]); #endif