MAC Address Filtering#

API and Callbacks for the MAC Address Filtering Component.

This plugin artificially limits what the stack hears by filtering the packets just above the lower MAC. The plugin can be configured on the fly via CLI with the short or long address of devices whose packets will be dropped or allowed. There are two lists, a short address list (2-byte node ID) and a long address list (8-byte IEEE address). Each list may be configured as either an allow list or block list. The default is a block list with no addresses configured (accept all packets normally). A separate option allows or drops packets with no address information (e.g., Beacon Requests). NOTE: The radio will still generate and process MAC ACKs for packets. This plugin cannot be used to effect the behavior of MAC ACKs, which are handled by the RAIL library and radio hardware.

Modules#

MacAddressFilterOptionsDescription

LongAddressFilterMatchStruct

ShortAddressFilterMatchStruct

PanIdFilterMatchStruct

MacAddressFilterGlobals

MAC Address Filtering

API#

void

Clear all lists for MAC address filtering.

EmberStatus
emberAfPluginMacAddressFilteringGetStatsForShortAddress(uint8_t index, uint32_t *matchCountForIndexPtr)

Get stats for a short address.

void
emberAfPluginMacAddressFilteringGetStats(bool shortMode, uint32_t *allowedPacketCountPtr, uint32_t *droppedPacketCountPtr, uint32_t *totalPacketCountPtr)

Get MAC address filtering stats. Get the allowed, dropped and total packet counts.

void

Set the decision to manupulate the MAC address filtering tables.

void

Add the short address.

void

Add the long address.

void

Add the panID.

void

Set the short address list type.

void

Set the long address list type.

void

Set the list type of panId list.

Enumerations#

enum
MAC_ADDRESS_MODE_NONE = 0
MAC_ADDRESS_MODE_SHORT = 1
MAC_ADDRESS_MODE_LONG = 2
}
enum
MAC_FILTER_TYPE_NO_ADDRESS = 0
MAC_FILTER_TYPE_SHORT_ADDRESS = 1
MAC_FILTER_TYPE_LONG_ADDRESS = 2
MAC_FILTER_TYPE_PAN_ID = 3
}
enum
ALLOW_PACKET = 0
DROP_PACKET = 1
}

Typedefs#

Macros#

#define
expectCheckpoint (...)
#define
debug (...)
#define
EMBER_TEST_ASSERT (...)
#define
MAC_FILTER_OPTIONS_NO_ADDRESS_MASK (1 << MAC_FILTER_TYPE_NO_ADDRESS)
#define
MAC_FILTER_OPTIONS_SHORT_ADDRESS_LIST_MASK (1 << MAC_FILTER_TYPE_SHORT_ADDRESS)
#define
MAC_FILTER_OPTIONS_LONG_ADDRESS_LIST_MASK (1 << MAC_FILTER_TYPE_LONG_ADDRESS)
#define
MAC_FILTER_OPTIONS_DEST_PAN_ID_LIST_MASK (1 << MAC_FILTER_TYPE_PAN_ID)
#define
MAC_FILTER_OPTIONS_COUNT 4
#define
MAC_FILTER_OPTIONS_DROP_NO_ADDRESS 0x00
#define
MAC_FILTER_OPTIONS_SHORT_ADDRESS_BLACKLIST 0x00
#define
MAC_FILTER_OPTIONS_LONG_ADDRESS_BLACKLIST 0x00
#define
MAC_FILTER_OPTIONS_ALLOW_NO_ADDRESS 0x01
#define
MAC_FILTER_OPTIONS_SHORT_ADDRESS_WHITELIST 0x02
#define
MAC_FILTER_OPTIONS_LONG_ADDRESS_WHITELIST 0x04
#define
MAC_FILTER_OPTIONS_DEST_PAN_ID_WHITELIST 0x08
#define
MAC_FILTER_OPTIONS_DEST_PAN_ID_BLACKLIST 0x00
#define
BROADCAST_PAN_ID 0xFFFF
#define
MAC_FILTER_OPTIONS_DEFAULTS undefined
#define
MAC_FRAME_CONTROL_FRAME_TYPE_MASK 0x0007
#define
MAC_FRAME_CONTROL_FRAME_TYPE_BEACON 0x0000
#define
MAC_FRAME_CONTROL_FRAME_TYPE_DATA 0x0001
#define
MAC_FRAME_CONTROL_FRAME_TYPE_ACK 0x0002
#define
MAC_FRAME_CONTROL_FRAME_TYPE_COMMAND 0x0003
#define
MAC_FRAME_CONTROL_VERSION_MASK 0x3000
#define
MAC_FRAME_CONTROL_VERSION_SHIFT 12
#define
MAC_FRAME_CONTROL_VERSION_2003 0x0000
#define
MAC_FRAME_CONTROL_VERSION_2012 0x0002
#define
MAC_FRAME_CONTROL_SOURCE_ADDRESS_MODE_SHIFT 14
#define
MAC_FRAME_CONTROL_ADDRESS_MODE_MASK 0x0003
#define
MAC_FRAME_CONTROL_ADDRESS_MODE_NONE 0x0000
#define
MAC_FRAME_CONTROL_ADDRESS_MODE_RESERVED 0x0001
#define
MAC_FRAME_CONTROL_ADDRESS_MODE_SHORT 0x0002
#define
MAC_FRAME_CONTROL_ADDRESS_MODE_LONG 0x0003
#define
MAC_FRAME_CONTROL_DEST_ADDRESS_MODE_SHIFT 10
#define
MAC_FRAME_CONTROL_DEST_ADDRESS_MODE_NONE 0x0000
#define
MAC_FRAME_CONTROL_PANID_COMPRESSION 0x0040
#define
WHITELIST_CHARACTER_INDEX 4

API Documentation#

emberAfPluginMacAddressFilteringClearAll#

void emberAfPluginMacAddressFilteringClearAll (void )

Clear all lists for MAC address filtering.

Parameters
N/A

* arguments Ver.: always


Definition at line 225 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringGetStatsForShortAddress#

EmberStatus emberAfPluginMacAddressFilteringGetStatsForShortAddress (uint8_t index, uint32_t * matchCountForIndexPtr)

Get stats for a short address.

Parameters
N/Aindex

Ver.: always

N/AmatchCountForIndexPtr

Ver.: always

Returns

  • EmberStatus status code


Definition at line 235 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringGetStats#

void emberAfPluginMacAddressFilteringGetStats (bool shortMode, uint32_t * allowedPacketCountPtr, uint32_t * droppedPacketCountPtr, uint32_t * totalPacketCountPtr)

Get MAC address filtering stats. Get the allowed, dropped and total packet counts.

Parameters
N/AshortMode

Ver.: always

N/AallowedPacketCountPtr

Ver.: always

N/AdroppedPacketCountPtr

Ver.: always

N/AtotalPacketCountPtr

Ver.: always


Definition at line 245 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringFilterNoAddress#

void emberAfPluginMacAddressFilteringFilterNoAddress (bool filterNoAddress)

Set the decision to manupulate the MAC address filtering tables.

Parameters
N/AfilterNoAddress

Ver.:always


Definition at line 254 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringAddShortAddress#

void emberAfPluginMacAddressFilteringAddShortAddress (EmberNodeId nodeId)

Add the short address.

Parameters
N/AnodeId

Ver.:always


Definition at line 260 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringAddLongAddress#

void emberAfPluginMacAddressFilteringAddLongAddress (EmberEUI64 eui64)

Add the long address.

Parameters
N/Aeui64

Ver.:always


Definition at line 266 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringAddPanId#

void emberAfPluginMacAddressFilteringAddPanId (EmberPanId panId)

Add the panID.

Parameters
N/ApanId

Ver.:always


Definition at line 272 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringSetShortAddressListType#

void emberAfPluginMacAddressFilteringSetShortAddressListType (uint8_t * listType)

Set the short address list type.

Parameters
N/AlistType

Ver.:always, listType can be "set-whitelist" or "set-blacklist".


Definition at line 278 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringSetLongAddressListType#

void emberAfPluginMacAddressFilteringSetLongAddressListType (uint8_t * listType)

Set the long address list type.

Parameters
N/AlistType

Ver.:always, listType can be "set-whitelist" or "set-blacklist".


Definition at line 284 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

emberAfPluginMacAddressFilteringSetPanIdListType#

void emberAfPluginMacAddressFilteringSetPanIdListType (uint8_t * listType)

Set the list type of panId list.

Parameters
N/AlistType

Ver.:always, listType can be "set-whitelist" or "set-blacklist".


Definition at line 290 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

Enumeration Documentation#

MacAddressMode#

MacAddressMode
Enumerator
MAC_ADDRESS_MODE_NONE
MAC_ADDRESS_MODE_SHORT
MAC_ADDRESS_MODE_LONG

Definition at line 133 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

MacFilterType#

MacFilterType
Enumerator
MAC_FILTER_TYPE_NO_ADDRESS
MAC_FILTER_TYPE_SHORT_ADDRESS
MAC_FILTER_TYPE_LONG_ADDRESS
MAC_FILTER_TYPE_PAN_ID

Definition at line 145 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

FilterResult#

FilterResult
Enumerator
ALLOW_PACKET
DROP_PACKET

Definition at line 204 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

Typedef Documentation#

MacAddressFilterOptions#

typedef uint8_t MacAddressFilterOptions

Definition at line 151 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

Variable Documentation#

macAddressFilterData#

MacAddressFilterGlobals macAddressFilterData

Definition at line 211 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h

zeroEui64#

const EmberEUI64 zeroEui64

Definition at line 213 of file app/framework/plugin-soc/mac-address-filtering/mac-address-filtering.h