[mac-filter] misc enhancements (#5151)

This commit contains some smaller enhancements in `Mac::Filter`:

- Use C++11 range-based `for` loop when iterating over filter entries
- Define `Filter:Mode` enum (mirror of `otMacFilterAddressMode`)
- Change `Filter::SetMode()` and `otLinkFilterSetAddressMode()` to
  return `void`.
- Simplify `Filter::Apply()` implementation.
- Add new separate public OT and internal APIs to set/clear default
  RSS-In (e.g., `SetDefaultRssIn()`/`ClearDefaultRssIn()`).
- Return no error (instead of `ALREADY`) from `Filter::AddAddress()`
  and its corresponding public `otLinkFilter` API when entry is already
  present in the list.
- Do not return `NOT_FOUND` error from `Filter::Remove{Address/RssIn}()`.
- Update public `otLinkFilter{API}` documentation.
- Update NCP and CLI code to adopt new `otLinkFilter` APIs.
This commit is contained in:
Abtin Keshavarzian
2020-06-29 08:59:34 -07:00
committed by GitHub
parent ce1b8e6762
commit 6f1fc2e6c2
7 changed files with 245 additions and 298 deletions
+9 -9
View File
@@ -3755,17 +3755,17 @@ otError Interpreter::ProcessMacFilterAddress(uint8_t aArgsLength, char *aArgs[])
if (strcmp(aArgs[0], "disable") == 0)
{
VerifyOrExit(aArgsLength == 1, error = OT_ERROR_INVALID_ARGS);
SuccessOrExit(error = otLinkFilterSetAddressMode(mInstance, OT_MAC_FILTER_ADDRESS_MODE_DISABLED));
otLinkFilterSetAddressMode(mInstance, OT_MAC_FILTER_ADDRESS_MODE_DISABLED);
}
else if (strcmp(aArgs[0], "whitelist") == 0)
{
VerifyOrExit(aArgsLength == 1, error = OT_ERROR_INVALID_ARGS);
SuccessOrExit(error = otLinkFilterSetAddressMode(mInstance, OT_MAC_FILTER_ADDRESS_MODE_WHITELIST));
otLinkFilterSetAddressMode(mInstance, OT_MAC_FILTER_ADDRESS_MODE_WHITELIST);
}
else if (strcmp(aArgs[0], "blacklist") == 0)
{
VerifyOrExit(aArgsLength == 1, error = OT_ERROR_INVALID_ARGS);
SuccessOrExit(error = otLinkFilterSetAddressMode(mInstance, OT_MAC_FILTER_ADDRESS_MODE_BLACKLIST));
otLinkFilterSetAddressMode(mInstance, OT_MAC_FILTER_ADDRESS_MODE_BLACKLIST);
}
else if (strcmp(aArgs[0], "add") == 0)
{
@@ -3791,7 +3791,7 @@ otError Interpreter::ProcessMacFilterAddress(uint8_t aArgsLength, char *aArgs[])
VerifyOrExit(aArgsLength == 2, error = OT_ERROR_INVALID_ARGS);
VerifyOrExit(Hex2Bin(aArgs[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
error = OT_ERROR_INVALID_ARGS);
SuccessOrExit(error = otLinkFilterRemoveAddress(mInstance, &extAddr));
otLinkFilterRemoveAddress(mInstance, &extAddr);
}
else if (strcmp(aArgs[0], "clear") == 0)
{
@@ -3857,7 +3857,7 @@ otError Interpreter::ProcessMacFilterRss(uint8_t aArgsLength, char *aArgs[])
if (strcmp(aArgs[1], "*") == 0)
{
SuccessOrExit(error = otLinkFilterAddRssIn(mInstance, nullptr, rss));
otLinkFilterSetDefaultRssIn(mInstance, rss);
}
else
{
@@ -3875,7 +3875,7 @@ otError Interpreter::ProcessMacFilterRss(uint8_t aArgsLength, char *aArgs[])
if (strcmp(aArgs[1], "*") == 0)
{
SuccessOrExit(error = otLinkFilterAddRssIn(mInstance, nullptr, rss));
otLinkFilterSetDefaultRssIn(mInstance, rss);
}
else
{
@@ -3891,19 +3891,19 @@ otError Interpreter::ProcessMacFilterRss(uint8_t aArgsLength, char *aArgs[])
if (strcmp(aArgs[1], "*") == 0)
{
SuccessOrExit(error = otLinkFilterRemoveRssIn(mInstance, nullptr));
otLinkFilterClearDefaultRssIn(mInstance);
}
else
{
VerifyOrExit(Hex2Bin(aArgs[1], extAddr.m8, OT_EXT_ADDRESS_SIZE) == OT_EXT_ADDRESS_SIZE,
error = OT_ERROR_INVALID_ARGS);
SuccessOrExit(error = otLinkFilterRemoveRssIn(mInstance, &extAddr));
otLinkFilterRemoveRssIn(mInstance, &extAddr);
}
}
else if (strcmp(aArgs[0], "clear") == 0)
{
otLinkFilterClearRssIn(mInstance);
otLinkFilterClearAllRssIn(mInstance);
}
else
{