[cli] inline simple sub-command process methods (#7347)

This commit is contained in:
Abtin Keshavarzian
2022-01-24 10:10:58 -08:00
committed by GitHub
parent ca3dd08f26
commit 3e214bd17a
2 changed files with 139 additions and 271 deletions
+139 -254
View File
@@ -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[])
-17
View File
@@ -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