mirror of
https://github.com/espressif/openthread.git
synced 2026-09-01 14:59:54 +00:00
[cli] return OT_ERROR_INVALID_ARGS for invalid arguments (#4639)
- Remove argument parsing failure from semantic of OT_ERROR_PARSE. - Add OT_ERROR_INVALID_COMMAND to indicate invalid CLI command error. - return OT_ERROR_INVALID_ARGS for invalid CLI arguments.
This commit is contained in:
@@ -396,7 +396,7 @@ const struct PlatformDiagCommand sCommands[] = {
|
||||
|
||||
otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *aOutput, size_t aOutputMaxLen)
|
||||
{
|
||||
otError error = OT_ERROR_NOT_IMPLEMENTED;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < otARRAY_LENGTH(sCommands); i++)
|
||||
|
||||
@@ -88,7 +88,7 @@ typedef enum otError
|
||||
OT_ERROR_BUSY = 5,
|
||||
|
||||
/**
|
||||
* Failed to parse message or arguments.
|
||||
* Failed to parse message.
|
||||
*/
|
||||
OT_ERROR_PARSE = 6,
|
||||
|
||||
@@ -223,6 +223,11 @@ typedef enum otError
|
||||
*/
|
||||
OT_ERROR_LINK_MARGIN_LOW = 34,
|
||||
|
||||
/**
|
||||
* Input (CLI) command is invalid.
|
||||
*/
|
||||
OT_ERROR_INVALID_COMMAND = 35,
|
||||
|
||||
/**
|
||||
* The number of defined errors.
|
||||
*/
|
||||
|
||||
@@ -67,7 +67,7 @@ extern "C" {
|
||||
*
|
||||
* @retval OT_ERROR_INVALID_ARGS The command is supported but invalid arguments provided.
|
||||
* @retval OT_ERROR_NONE The command is successfully process.
|
||||
* @retval OT_ERROR_NOT_IMPLEMENTED The command is not supported.
|
||||
* @retval OT_ERROR_INVALID_COMMAND The command is not valid or not supported.
|
||||
*
|
||||
*/
|
||||
otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *aOutput, size_t aOutputMaxLen);
|
||||
|
||||
+52
-59
@@ -361,14 +361,14 @@ otError Interpreter::ParseLong(char *aString, long &aLong)
|
||||
{
|
||||
char *endptr;
|
||||
aLong = strtol(aString, &endptr, 0);
|
||||
return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_PARSE;
|
||||
return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_INVALID_ARGS;
|
||||
}
|
||||
|
||||
otError Interpreter::ParseUnsignedLong(char *aString, unsigned long &aUnsignedLong)
|
||||
{
|
||||
char *endptr;
|
||||
aUnsignedLong = strtoul(aString, &endptr, 0);
|
||||
return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_PARSE;
|
||||
return (*endptr == '\0') ? OT_ERROR_NONE : OT_ERROR_INVALID_ARGS;
|
||||
}
|
||||
|
||||
otError Interpreter::ParsePingInterval(const char *aString, uint32_t &aInterval)
|
||||
@@ -400,14 +400,14 @@ otError Interpreter::ParsePingInterval(const char *aString, uint32_t &aInterval)
|
||||
else if (*aString == '.')
|
||||
{
|
||||
// Accept only one dot character.
|
||||
VerifyOrExit(factor == msFactor, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(factor == msFactor, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
// Start analyzing hundreds of milliseconds.
|
||||
factor /= 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
|
||||
aString++;
|
||||
@@ -999,7 +999,7 @@ void Interpreter::ProcessDelayTimerMin(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
error = OT_ERROR_INVALID_ARGS;
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -1078,7 +1078,7 @@ void Interpreter::ProcessDns(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -1174,7 +1174,7 @@ void Interpreter::ProcessExtAddress(int argc, char *argv[])
|
||||
{
|
||||
otExtAddress extAddress;
|
||||
|
||||
VerifyOrExit(Hex2Bin(argv[0], extAddress.m8, sizeof(otExtAddress)) >= 0, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(Hex2Bin(argv[0], extAddress.m8, sizeof(otExtAddress)) >= 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
error = otLinkSetExtendedAddress(mInstance, &extAddress);
|
||||
}
|
||||
@@ -1222,7 +1222,7 @@ void Interpreter::ProcessExtPanId(int argc, char *argv[])
|
||||
{
|
||||
otExtendedPanId extPanId;
|
||||
|
||||
VerifyOrExit(Hex2Bin(argv[0], extPanId.m8, sizeof(extPanId)) >= 0, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(Hex2Bin(argv[0], extPanId.m8, sizeof(extPanId)) >= 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
error = otThreadSetExtendedPanId(mInstance, &extPanId);
|
||||
}
|
||||
@@ -1343,7 +1343,7 @@ void Interpreter::ProcessIpAddr(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1442,7 +1442,7 @@ void Interpreter::ProcessIpMulticastAddr(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1570,7 +1570,7 @@ void Interpreter::ProcessPskc(int argc, char *argv[])
|
||||
{
|
||||
otPskc pskc;
|
||||
|
||||
VerifyOrExit(Hex2Bin(argv[0], pskc.m8, sizeof(pskc)) == OT_PSKC_MAX_SIZE, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(Hex2Bin(argv[0], pskc.m8, sizeof(pskc)) == OT_PSKC_MAX_SIZE, error = OT_ERROR_INVALID_ARGS);
|
||||
SuccessOrExit(error = otThreadSetPskc(mInstance, &pskc));
|
||||
}
|
||||
|
||||
@@ -1598,7 +1598,7 @@ void Interpreter::ProcessMasterKey(int argc, char *argv[])
|
||||
{
|
||||
otMasterKey key;
|
||||
|
||||
VerifyOrExit(Hex2Bin(argv[0], key.m8, sizeof(key.m8)) == OT_MASTER_KEY_SIZE, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(Hex2Bin(argv[0], key.m8, sizeof(key.m8)) == OT_MASTER_KEY_SIZE, error = OT_ERROR_INVALID_ARGS);
|
||||
SuccessOrExit(error = otThreadSetMasterKey(mInstance, &key));
|
||||
}
|
||||
|
||||
@@ -1662,7 +1662,7 @@ void Interpreter::ProcessMode(int argc, char *argv[])
|
||||
break;
|
||||
|
||||
default:
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1797,7 +1797,7 @@ void Interpreter::ProcessService(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -2264,14 +2264,12 @@ otError Interpreter::ProcessPrefixAdd(int argc, char *argv[])
|
||||
otError error = OT_ERROR_NONE;
|
||||
otBorderRouterConfig config;
|
||||
int argcur = 0;
|
||||
char * prefixLengthStr;
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
memset(&config, 0, sizeof(otBorderRouterConfig));
|
||||
|
||||
char *prefixLengthStr;
|
||||
char *endptr;
|
||||
|
||||
if ((prefixLengthStr = strchr(argv[argcur], '/')) == NULL)
|
||||
{
|
||||
ExitNow();
|
||||
@@ -2281,11 +2279,11 @@ otError Interpreter::ProcessPrefixAdd(int argc, char *argv[])
|
||||
|
||||
SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &config.mPrefix.mPrefix));
|
||||
|
||||
config.mPrefix.mLength = static_cast<uint8_t>(strtol(prefixLengthStr, &endptr, 0));
|
||||
|
||||
if (*endptr != '\0')
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
unsigned long length;
|
||||
|
||||
SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length));
|
||||
config.mPrefix.mLength = static_cast<uint8_t>(length);
|
||||
}
|
||||
|
||||
argcur++;
|
||||
@@ -2339,7 +2337,7 @@ otError Interpreter::ProcessPrefixAdd(int argc, char *argv[])
|
||||
break;
|
||||
|
||||
default:
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2358,14 +2356,12 @@ otError Interpreter::ProcessPrefixRemove(int argc, char *argv[])
|
||||
otError error = OT_ERROR_NONE;
|
||||
struct otIp6Prefix prefix;
|
||||
int argcur = 0;
|
||||
char * prefixLengthStr;
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
memset(&prefix, 0, sizeof(otIp6Prefix));
|
||||
|
||||
char *prefixLengthStr;
|
||||
char *endptr;
|
||||
|
||||
if ((prefixLengthStr = strchr(argv[argcur], '/')) == NULL)
|
||||
{
|
||||
ExitNow();
|
||||
@@ -2375,11 +2371,11 @@ otError Interpreter::ProcessPrefixRemove(int argc, char *argv[])
|
||||
|
||||
SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &prefix.mPrefix));
|
||||
|
||||
prefix.mLength = static_cast<uint8_t>(strtol(prefixLengthStr, &endptr, 0));
|
||||
|
||||
if (*endptr != '\0')
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
unsigned long length;
|
||||
|
||||
SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length));
|
||||
prefix.mLength = static_cast<uint8_t>(length);
|
||||
}
|
||||
|
||||
error = otBorderRouterRemoveOnMeshPrefix(mInstance, &prefix);
|
||||
@@ -2472,7 +2468,7 @@ void Interpreter::ProcessPrefix(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -2532,12 +2528,10 @@ otError Interpreter::ProcessRouteAdd(int argc, char *argv[])
|
||||
otError error = OT_ERROR_NONE;
|
||||
otExternalRouteConfig config;
|
||||
int argcur = 0;
|
||||
char * prefixLengthStr;
|
||||
|
||||
memset(&config, 0, sizeof(otExternalRouteConfig));
|
||||
|
||||
char *prefixLengthStr;
|
||||
char *endptr;
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
if ((prefixLengthStr = strchr(argv[argcur], '/')) == NULL)
|
||||
@@ -2549,11 +2543,11 @@ otError Interpreter::ProcessRouteAdd(int argc, char *argv[])
|
||||
|
||||
SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &config.mPrefix.mPrefix));
|
||||
|
||||
config.mPrefix.mLength = static_cast<uint8_t>(strtol(prefixLengthStr, &endptr, 0));
|
||||
|
||||
if (*endptr != '\0')
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
unsigned long length;
|
||||
|
||||
SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length));
|
||||
config.mPrefix.mLength = static_cast<uint8_t>(length);
|
||||
}
|
||||
|
||||
argcur++;
|
||||
@@ -2578,7 +2572,7 @@ otError Interpreter::ProcessRouteAdd(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2593,10 +2587,9 @@ otError Interpreter::ProcessRouteRemove(int argc, char *argv[])
|
||||
otError error = OT_ERROR_NONE;
|
||||
struct otIp6Prefix prefix;
|
||||
int argcur = 0;
|
||||
char * prefixLengthStr;
|
||||
|
||||
memset(&prefix, 0, sizeof(struct otIp6Prefix));
|
||||
char *prefixLengthStr;
|
||||
char *endptr;
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
@@ -2609,11 +2602,11 @@ otError Interpreter::ProcessRouteRemove(int argc, char *argv[])
|
||||
|
||||
SuccessOrExit(error = otIp6AddressFromString(argv[argcur], &prefix.mPrefix));
|
||||
|
||||
prefix.mLength = static_cast<uint8_t>(strtol(prefixLengthStr, &endptr, 0));
|
||||
|
||||
if (*endptr != '\0')
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
unsigned long length;
|
||||
|
||||
SuccessOrExit(error = ParseUnsignedLong(prefixLengthStr, length));
|
||||
prefix.mLength = static_cast<uint8_t>(length);
|
||||
}
|
||||
|
||||
error = otBorderRouterRemoveRoute(mInstance, &prefix);
|
||||
@@ -2676,7 +2669,7 @@ void Interpreter::ProcessRoute(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -3030,7 +3023,7 @@ void Interpreter::ProcessSntp(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -3156,7 +3149,7 @@ void Interpreter::ProcessThread(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -3274,7 +3267,7 @@ void Interpreter::ProcessMacFilter(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
error = OT_ERROR_INVALID_ARGS;
|
||||
error = OT_ERROR_INVALID_COMMAND;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3400,7 +3393,7 @@ otError Interpreter::ProcessMacFilterAddress(int argc, char *argv[])
|
||||
{
|
||||
VerifyOrExit(argc >= 2, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
error = otLinkFilterAddAddress(mInstance, &extAddr);
|
||||
|
||||
@@ -3419,7 +3412,7 @@ otError Interpreter::ProcessMacFilterAddress(int argc, char *argv[])
|
||||
{
|
||||
VerifyOrExit(argc == 2, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
SuccessOrExit(error = otLinkFilterRemoveAddress(mInstance, &extAddr));
|
||||
}
|
||||
else if (strcmp(argv[0], "clear") == 0)
|
||||
@@ -3429,7 +3422,7 @@ otError Interpreter::ProcessMacFilterAddress(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
error = OT_ERROR_INVALID_ARGS;
|
||||
error = OT_ERROR_INVALID_COMMAND;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3481,7 +3474,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[])
|
||||
VerifyOrExit(argc == 3, error = OT_ERROR_INVALID_ARGS);
|
||||
SuccessOrExit(error = ParseLong(argv[2], value));
|
||||
linkquality = static_cast<uint8_t>(value);
|
||||
VerifyOrExit(linkquality <= 3, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(linkquality <= 3, error = OT_ERROR_INVALID_ARGS);
|
||||
rss = otLinkConvertLinkQualityToRss(mInstance, linkquality);
|
||||
|
||||
if (strcmp(argv[1], "*") == 0)
|
||||
@@ -3491,7 +3484,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[])
|
||||
else
|
||||
{
|
||||
VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
SuccessOrExit(error = otLinkFilterAddRssIn(mInstance, &extAddr, rss));
|
||||
}
|
||||
@@ -3509,7 +3502,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[])
|
||||
else
|
||||
{
|
||||
VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
SuccessOrExit(error = otLinkFilterAddRssIn(mInstance, &extAddr, rss));
|
||||
}
|
||||
@@ -3525,7 +3518,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[])
|
||||
else
|
||||
{
|
||||
VerifyOrExit(Hex2Bin(argv[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
SuccessOrExit(error = otLinkFilterRemoveRssIn(mInstance, &extAddr));
|
||||
}
|
||||
@@ -3536,7 +3529,7 @@ otError Interpreter::ProcessMacFilterRss(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
error = OT_ERROR_INVALID_ARGS;
|
||||
error = OT_ERROR_INVALID_COMMAND;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3558,7 +3551,7 @@ void Interpreter::ProcessMac(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
error = OT_ERROR_INVALID_ARGS;
|
||||
error = OT_ERROR_INVALID_COMMAND;
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -3676,7 +3669,7 @@ void Interpreter::ProcessLine(char *aBuf, uint16_t aBufLength, Server &aServer)
|
||||
|
||||
if (i == mUserCommandsLength)
|
||||
{
|
||||
AppendResult(OT_ERROR_PARSE);
|
||||
AppendResult(OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3719,7 +3712,7 @@ void Interpreter::ProcessNetworkDiagnostic(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
ExitNow(error = OT_ERROR_INVALID_COMMAND);
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
+5
-5
@@ -126,8 +126,8 @@ public:
|
||||
* @param[in] aString A pointer to the ASCII string.
|
||||
* @param[out] aLong A reference to where the parsed long is placed.
|
||||
*
|
||||
* @retval OT_ERROR_NONE Successfully parsed the ASCII string.
|
||||
* @retval OT_ERROR_PARSE Could not parse the ASCII string.
|
||||
* @retval OT_ERROR_NONE Successfully parsed the ASCII string.
|
||||
* @retval OT_ERROR_INVALID_ARGS @p aString is not a valid long integer.
|
||||
*
|
||||
*/
|
||||
static otError ParseLong(char *aString, long &aLong);
|
||||
@@ -138,8 +138,8 @@ public:
|
||||
* @param[in] aString A pointer to the ASCII string.
|
||||
* @param[out] aUnsignedLong A reference to where the parsed unsigned long is placed.
|
||||
*
|
||||
* @retval OT_ERROR_NONE Successfully parsed the ASCII string.
|
||||
* @retval OT_ERROR_PARSE Could not parse the ASCII string.
|
||||
* @retval OT_ERROR_NONE Successfully parsed the ASCII string.
|
||||
* @retval OT_ERROR_INVALID_ARGS @p aString is not a valid unsigned long integer.
|
||||
*
|
||||
*/
|
||||
static otError ParseUnsignedLong(char *aString, unsigned long &aUnsignedLong);
|
||||
@@ -153,8 +153,8 @@ public:
|
||||
* @param[in] aAllowTruncate TRUE if @p aBinLength may be less than what is required
|
||||
* to convert @p aHex to binary representation, FALSE otherwise.
|
||||
*
|
||||
* @returns The number of bytes in the binary representation, or -1 if @p aHex is not a valid hex string
|
||||
*
|
||||
* @returns The number of bytes in the binary representation.
|
||||
*/
|
||||
static int Hex2Bin(const char *aHex, uint8_t *aBin, uint16_t aBinLength, bool aAllowTruncate = false);
|
||||
|
||||
|
||||
@@ -512,7 +512,7 @@ exit:
|
||||
|
||||
otError Coap::Process(int argc, char *argv[])
|
||||
{
|
||||
otError error = OT_ERROR_PARSE;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
|
||||
if (argc < 1)
|
||||
{
|
||||
|
||||
@@ -220,7 +220,7 @@ otError CoapSecure::ProcessRequest(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
|
||||
// Destination IPv6 address
|
||||
@@ -389,7 +389,7 @@ otError CoapSecure::ProcessX509(int argc, char *argv[])
|
||||
|
||||
otError CoapSecure::Process(int argc, char *argv[])
|
||||
{
|
||||
otError error = OT_ERROR_PARSE;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
|
||||
if (argc < 1)
|
||||
{
|
||||
|
||||
@@ -126,7 +126,8 @@ otError Commissioner::ProcessJoiner(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[2], addr.m8, sizeof(addr)) == sizeof(addr), error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[2], addr.m8, sizeof(addr)) == sizeof(addr),
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
addrPtr = &addr;
|
||||
}
|
||||
|
||||
@@ -191,7 +192,7 @@ otError Commissioner::ProcessMgmtGet(int argc, char *argv[])
|
||||
VerifyOrExit(static_cast<size_t>(value) <= (sizeof(tlvs) - static_cast<size_t>(length)),
|
||||
error = OT_ERROR_NO_BUFS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs + length, static_cast<uint16_t>(value)) >= 0,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
length += value;
|
||||
}
|
||||
else
|
||||
@@ -244,7 +245,7 @@ otError Commissioner::ProcessMgmtSet(int argc, char *argv[])
|
||||
VerifyOrExit(static_cast<size_t>(length) <= OT_STEERING_DATA_MAX_LENGTH, error = OT_ERROR_NO_BUFS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[index], dataset.mSteeringData.m8, static_cast<uint16_t>(length)) >=
|
||||
0,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
dataset.mSteeringData.mLength = static_cast<uint8_t>(length);
|
||||
length = 0;
|
||||
}
|
||||
@@ -261,7 +262,7 @@ otError Commissioner::ProcessMgmtSet(int argc, char *argv[])
|
||||
length = static_cast<int>((strlen(argv[index]) + 1) / 2);
|
||||
VerifyOrExit(static_cast<size_t>(length) <= sizeof(tlvs), error = OT_ERROR_NO_BUFS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs, static_cast<uint16_t>(length)) >= 0,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -387,7 +388,7 @@ otError Commissioner::ProcessStop(int argc, char *argv[])
|
||||
|
||||
otError Commissioner::Process(int argc, char *argv[])
|
||||
{
|
||||
otError error = OT_ERROR_INVALID_ARGS;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
|
||||
if (argc < 1)
|
||||
{
|
||||
|
||||
+12
-11
@@ -184,7 +184,7 @@ otError Dataset::Print(otOperationalDataset &aDataset)
|
||||
|
||||
otError Dataset::Process(int argc, char *argv[])
|
||||
{
|
||||
otError error = OT_ERROR_PARSE;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
|
||||
if (argc == 0)
|
||||
{
|
||||
@@ -370,7 +370,7 @@ otError Dataset::ProcessExtPanId(int argc, char *argv[])
|
||||
uint8_t extPanId[OT_EXT_PAN_ID_SIZE];
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[0], extPanId, sizeof(extPanId)) >= 0, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[0], extPanId, sizeof(extPanId)) >= 0, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
memcpy(sDataset.mExtendedPanId.m8, extPanId, sizeof(sDataset.mExtendedPanId));
|
||||
sDataset.mComponents.mIsExtendedPanIdPresent = true;
|
||||
@@ -385,7 +385,8 @@ otError Dataset::ProcessMasterKey(int argc, char *argv[])
|
||||
uint8_t key[OT_MASTER_KEY_SIZE];
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit((Interpreter::Hex2Bin(argv[0], key, sizeof(key))) == OT_MASTER_KEY_SIZE, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit((Interpreter::Hex2Bin(argv[0], key, sizeof(key))) == OT_MASTER_KEY_SIZE,
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
memcpy(sDataset.mMasterKey.m8, key, sizeof(sDataset.mMasterKey));
|
||||
sDataset.mComponents.mIsMasterKeyPresent = true;
|
||||
@@ -415,7 +416,7 @@ otError Dataset::ProcessNetworkName(int argc, char *argv[])
|
||||
size_t length;
|
||||
|
||||
VerifyOrExit(argc > 0, error = OT_ERROR_INVALID_ARGS);
|
||||
VerifyOrExit((length = strlen(argv[0])) <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_PARSE);
|
||||
VerifyOrExit((length = strlen(argv[0])) <= OT_NETWORK_NAME_MAX_SIZE, error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
memset(&sDataset.mNetworkName, 0, sizeof(sDataset.mNetworkName));
|
||||
memcpy(sDataset.mNetworkName.m8, argv[0], length);
|
||||
@@ -488,7 +489,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[])
|
||||
dataset.mComponents.mIsMasterKeyPresent = true;
|
||||
VerifyOrExit((length = Interpreter::Hex2Bin(argv[index], dataset.mMasterKey.m8,
|
||||
sizeof(dataset.mMasterKey.m8))) == OT_MASTER_KEY_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
length = 0;
|
||||
}
|
||||
else if (strcmp(argv[index], "networkname") == 0)
|
||||
@@ -496,7 +497,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[])
|
||||
VerifyOrExit(++index < argc, error = OT_ERROR_INVALID_ARGS);
|
||||
dataset.mComponents.mIsNetworkNamePresent = true;
|
||||
VerifyOrExit((length = static_cast<int>(strlen(argv[index]))) <= OT_NETWORK_NAME_MAX_SIZE,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
memset(&dataset.mNetworkName, 0, sizeof(sDataset.mNetworkName));
|
||||
memcpy(dataset.mNetworkName.m8, argv[index], static_cast<size_t>(length));
|
||||
length = 0;
|
||||
@@ -507,7 +508,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[])
|
||||
dataset.mComponents.mIsExtendedPanIdPresent = true;
|
||||
VerifyOrExit(
|
||||
Interpreter::Hex2Bin(argv[index], dataset.mExtendedPanId.m8, sizeof(dataset.mExtendedPanId.m8)) >= 0,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
else if (strcmp(argv[index], "localprefix") == 0)
|
||||
{
|
||||
@@ -550,7 +551,7 @@ otError Dataset::ProcessMgmtSetCommand(int argc, char *argv[])
|
||||
length = static_cast<int>((strlen(argv[index]) + 1) / 2);
|
||||
VerifyOrExit(static_cast<size_t>(length) <= sizeof(tlvs), error = OT_ERROR_NO_BUFS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs, static_cast<uint16_t>(length)) >= 0,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -638,7 +639,7 @@ otError Dataset::ProcessMgmtGetCommand(int argc, char *argv[])
|
||||
VerifyOrExit(static_cast<size_t>(value) <= (sizeof(tlvs) - static_cast<size_t>(length)),
|
||||
error = OT_ERROR_NO_BUFS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[index], tlvs + length, static_cast<uint16_t>(value)) >= 0,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
length += value;
|
||||
}
|
||||
else if (strcmp(argv[index], "address") == 0)
|
||||
@@ -683,7 +684,7 @@ otError Dataset::ProcessPskc(int argc, char *argv[])
|
||||
length = static_cast<uint16_t>((strlen(argv[0]) + 1) / 2);
|
||||
VerifyOrExit(length <= OT_PSKC_MAX_SIZE, error = OT_ERROR_NO_BUFS);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[0], sDataset.mPskc.m8 + OT_PSKC_MAX_SIZE - length, length) == length,
|
||||
error = OT_ERROR_PARSE);
|
||||
error = OT_ERROR_INVALID_ARGS);
|
||||
|
||||
sDataset.mComponents.mIsPskcPresent = true;
|
||||
|
||||
@@ -729,7 +730,7 @@ otError Dataset::ProcessSecurityPolicy(int argc, char *argv[])
|
||||
break;
|
||||
|
||||
default:
|
||||
ExitNow(error = OT_ERROR_PARSE);
|
||||
ExitNow(error = OT_ERROR_INVALID_ARGS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ otError Joiner::ProcessStop(int argc, char *argv[])
|
||||
|
||||
otError Joiner::Process(int argc, char *argv[])
|
||||
{
|
||||
otError error = OT_ERROR_INVALID_ARGS;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
|
||||
if (argc < 1)
|
||||
{
|
||||
|
||||
+1
-1
@@ -260,7 +260,7 @@ exit:
|
||||
|
||||
otError UdpExample::Process(int argc, char *argv[])
|
||||
{
|
||||
otError error = OT_ERROR_PARSE;
|
||||
otError error = OT_ERROR_INVALID_COMMAND;
|
||||
|
||||
if (argc < 1)
|
||||
{
|
||||
|
||||
@@ -192,6 +192,7 @@ static const char *const sThreadErrorStrings[OT_NUM_ERRORS] = {
|
||||
"NonLowpanDataFrame", // OT_ERROR_NOT_LOWPAN_DATA_FRAME = 32
|
||||
"ReservedError33", // otError 33 is reserved
|
||||
"LinkMarginLow", // OT_ERROR_LINK_MARGIN_LOW = 34
|
||||
"InvalidCommand", // OT_ERROR_INVALID_COMMAND = 35
|
||||
};
|
||||
|
||||
const char *otThreadErrorToString(otError aError)
|
||||
|
||||
@@ -54,7 +54,7 @@ otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *a
|
||||
OT_UNUSED_VARIABLE(aOutput);
|
||||
OT_UNUSED_VARIABLE(aOutputMaxLen);
|
||||
|
||||
return OT_ERROR_NOT_IMPLEMENTED;
|
||||
return OT_ERROR_INVALID_COMMAND;
|
||||
}
|
||||
|
||||
namespace ot {
|
||||
@@ -574,7 +574,7 @@ otError Diags::ProcessCmd(int aArgCount, char *aArgVector[], char *aOutput, size
|
||||
|
||||
exit:
|
||||
// Add more platform specific diagnostics features here.
|
||||
if (error == OT_ERROR_NOT_IMPLEMENTED && aArgCount > 1)
|
||||
if (error == OT_ERROR_INVALID_COMMAND && aArgCount > 1)
|
||||
{
|
||||
snprintf(aOutput, aOutputMaxLen, "diag feature '%s' is not supported\r\n", aArgVector[0]);
|
||||
}
|
||||
|
||||
@@ -520,7 +520,7 @@ otError otPlatDiagProcess(otInstance *aInstance, int argc, char *argv[], char *a
|
||||
OT_UNUSED_VARIABLE(aOutput);
|
||||
OT_UNUSED_VARIABLE(aOutputMaxLen);
|
||||
|
||||
return OT_ERROR_INVALID_ARGS;
|
||||
return OT_ERROR_INVALID_COMMAND;
|
||||
}
|
||||
|
||||
void otPlatDiagModeSet(bool aMode)
|
||||
|
||||
Reference in New Issue
Block a user