Eliminate unncessary MLE Child Update Request transmissions. (#1141)

- Separate IPv6 RLOC changed event from IPv6 added/removed.
- Avoid unnecessary side effects when Mle::SetMeshLocalPrefix().
This commit is contained in:
Jonathan Hui
2017-01-12 20:14:45 -08:00
committed by GitHub
parent 8b8f7833e1
commit 2bdea5fad1
7 changed files with 52 additions and 22 deletions
+14 -10
View File
@@ -542,19 +542,22 @@ typedef struct otLinkModeConfig
*/
enum
{
OT_IP6_ADDRESS_ADDED = 1 << 0, ///< IPv6 address was added
OT_IP6_ADDRESS_REMOVED = 1 << 1, ///< IPv6 address was removed
OT_IP6_ADDRESS_ADDED = 1 << 0, ///< IPv6 address was added
OT_IP6_ADDRESS_REMOVED = 1 << 1, ///< IPv6 address was removed
OT_NET_ROLE = 1 << 3, ///< Device role (disabled, detached, child, router, leader) changed
OT_NET_PARTITION_ID = 1 << 4, ///< Partition ID changed
OT_NET_KEY_SEQUENCE_COUNTER = 1 << 5, ///< Thread Key Sequence changed
OT_NET_ROLE = 1 << 3, ///< Device role (disabled, detached, child, router, leader) changed
OT_NET_PARTITION_ID = 1 << 4, ///< Partition ID changed
OT_NET_KEY_SEQUENCE_COUNTER = 1 << 5, ///< Thread Key Sequence changed
OT_THREAD_CHILD_ADDED = 1 << 6, ///< Child was added
OT_THREAD_CHILD_REMOVED = 1 << 7, ///< Child was removed
OT_THREAD_NETDATA_UPDATED = 1 << 8, ///< Thread Network Data updated
OT_THREAD_CHILD_ADDED = 1 << 6, ///< Child was added
OT_THREAD_CHILD_REMOVED = 1 << 7, ///< Child was removed
OT_THREAD_NETDATA_UPDATED = 1 << 8, ///< Thread Network Data updated
OT_IP6_LL_ADDR_CHANGED = 1 << 9, ///< The link-local address has changed
OT_IP6_ML_ADDR_CHANGED = 1 << 10, ///< The mesh-local address has changed
OT_IP6_LL_ADDR_CHANGED = 1 << 9, ///< The link-local address has changed
OT_IP6_ML_ADDR_CHANGED = 1 << 10, ///< The mesh-local address has changed
OT_IP6_RLOC_ADDED = 1 << 11, ///< RLOC was added
OT_IP6_RLOC_REMOVED = 1 << 12, ///< RLOC was removed
};
/**
@@ -905,6 +908,7 @@ typedef struct otNetifAddress
bool mValid : 1; ///< TRUE if the address is valid, FALSE otherwise.
bool mScopeOverrideValid : 1; ///< TRUE if the mScopeOverride value is valid, FALSE othewrise.
unsigned int mScopeOverride : 4; ///< The IPv6 scope of this address.
bool mRloc : 1; ///< TRUE if the address is an RLOC, FALSE otherwise.
struct otNetifAddress *mNext; ///< A pointer to the next network interface address.
} otNetifAddress;