mirror of
https://github.com/espressif/openthread.git
synced 2026-09-07 01:30:11 +00:00
Skip Router itself to avoid extra comparison when searching its neighbor. (#1760)
This commit is contained in:
@@ -182,7 +182,7 @@ void Coap::HandleServerResponse(otCoapHeader *aHeader, otMessage *aMessage, otMe
|
||||
ThreadError error = kThreadError_None;
|
||||
otCoapHeader responseHeader;
|
||||
otMessage *responseMessage;
|
||||
otCoapCode responseCode = kCoapCodeEmpty ;
|
||||
otCoapCode responseCode = kCoapCodeEmpty;
|
||||
char responseContent = '0';
|
||||
|
||||
sServer->OutputFormat("Received CoAP request from [%x:%x:%x:%x:%x:%x:%x:%x]: ",
|
||||
|
||||
@@ -86,7 +86,7 @@ void Dhcp6Client::UpdateAddresses(otInstance *aInstance, otDhcpAddress *aAddress
|
||||
void *aContext)
|
||||
{
|
||||
(void)aContext;
|
||||
bool found = false;;
|
||||
bool found = false;
|
||||
bool newAgent = false;
|
||||
otDhcpAddress *address = NULL;
|
||||
otNetworkDataIterator iterator;
|
||||
|
||||
@@ -408,7 +408,7 @@ ThreadError Dhcp6Server::ProcessIaAddress(Message &aMessage, uint16_t aOffset)
|
||||
|
||||
if (otIp6PrefixMatch(option.GetAddress(), &(prefix->mPrefix)) >= prefix->mLength)
|
||||
{
|
||||
mPrefixAgentsMask |= (1 << i);;
|
||||
mPrefixAgentsMask |= (1 << i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,29 +67,28 @@ MleRouter::MleRouter(ThreadNetif &aThreadNetif):
|
||||
mStateUpdateTimer(aThreadNetif.GetIp6().mTimerScheduler, &MleRouter::HandleStateUpdateTimer, this),
|
||||
mAddressSolicit(OPENTHREAD_URI_ADDRESS_SOLICIT, &MleRouter::HandleAddressSolicit, this),
|
||||
mAddressRelease(OPENTHREAD_URI_ADDRESS_RELEASE, &MleRouter::HandleAddressRelease, this),
|
||||
mRouterIdSequence(0),
|
||||
mRouterIdSequenceLastUpdated(0),
|
||||
mMaxChildrenAllowed(kMaxChildren),
|
||||
mChallengeTimeout(0),
|
||||
mNextChildId(kMaxChildId),
|
||||
mNetworkIdTimeout(kNetworkIdTimeout),
|
||||
mRouterUpgradeThreshold(kRouterUpgradeThreshold),
|
||||
mRouterDowngradeThreshold(kRouterDowngradeThreshold),
|
||||
mLeaderWeight(kLeaderWeight),
|
||||
mFixedLeaderPartitionId(0),
|
||||
mRouterRoleEnabled(true),
|
||||
mIsRouterRestoringChildren(false),
|
||||
mPreviousPartitionId(0),
|
||||
mRouterSelectionJitter(kRouterSelectionJitter),
|
||||
mRouterSelectionJitterTimeout(0)
|
||||
{
|
||||
mDeviceMode |= ModeTlv::kModeFFD | ModeTlv::kModeFullNetworkData;
|
||||
|
||||
mChallengeTimeout = 0;
|
||||
mNextChildId = kMaxChildId;
|
||||
mRouterIdSequence = 0;
|
||||
memset(mChildren, 0, sizeof(mChildren));
|
||||
memset(mRouters, 0, sizeof(mRouters));
|
||||
|
||||
mNetworkIdTimeout = kNetworkIdTimeout;
|
||||
mRouterUpgradeThreshold = kRouterUpgradeThreshold;
|
||||
mRouterDowngradeThreshold = kRouterDowngradeThreshold;
|
||||
mLeaderWeight = kLeaderWeight;
|
||||
mFixedLeaderPartitionId = 0;
|
||||
mMaxChildrenAllowed = kMaxChildren;
|
||||
mIsRouterRestoringChildren = false;
|
||||
|
||||
SetRouterId(kInvalidRouterId);
|
||||
mPreviousPartitionId = 0;
|
||||
mRouterIdSequenceLastUpdated = 0;
|
||||
mRouterRoleEnabled = true;
|
||||
}
|
||||
|
||||
bool MleRouter::IsRouterRoleEnabled(void) const
|
||||
@@ -3175,6 +3174,11 @@ Neighbor *MleRouter::GetNeighbor(uint16_t aAddress)
|
||||
|
||||
for (int i = 0; i <= kMaxRouterId; i++)
|
||||
{
|
||||
if (i == mRouterId)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mRouters[i].GetState() == Neighbor::kStateValid && mRouters[i].GetRloc16() == aAddress)
|
||||
{
|
||||
ExitNow(rval = &mRouters[i]);
|
||||
@@ -3215,6 +3219,11 @@ Neighbor *MleRouter::GetNeighbor(const Mac::ExtAddress &aAddress)
|
||||
|
||||
for (int i = 0; i <= kMaxRouterId; i++)
|
||||
{
|
||||
if (i == mRouterId)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mRouters[i].GetState() == Neighbor::kStateValid &&
|
||||
memcmp(&mRouters[i].GetExtAddress(), &aAddress, sizeof(aAddress)) == 0)
|
||||
{
|
||||
@@ -3316,7 +3325,7 @@ Neighbor *MleRouter::GetNeighbor(const Ip6::Address &aAddress)
|
||||
{
|
||||
router = &mRouters[i];
|
||||
|
||||
if (router->GetState() != Neighbor::kStateValid)
|
||||
if (router->GetState() != Neighbor::kStateValid || i == mRouterId)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user