Remove Link Reject and link-local RLOC. (#913)

This commit is contained in:
Jonathan Hui
2016-11-02 21:16:26 -07:00
committed by GitHub
parent bb97cbee17
commit 6d0cfceadb
10 changed files with 8 additions and 121 deletions
-1
View File
@@ -56,7 +56,6 @@ View IPv6 addresses assigned to Node 1's Thread interface:
```bash
> ipaddr
fdde:ad00:beef:0:0:ff:fe00:0
fe80:0:0:0:0:ff:fe00:0
fdde:ad00:beef:0:558:f56b:d688:799
fe80:0:0:0:f3d9:2a82:c8d8:fe43
Done
-1
View File
@@ -766,7 +766,6 @@ List all IPv6 addresses assigned to the Thread interface.
```bash
> ipaddr
fdde:ad00:beef:0:0:ff:fe00:0
fe80:0:0:0:0:ff:fe00:0
fdde:ad00:beef:0:558:f56b:d688:799
fe80:0:0:0:f3d9:2a82:c8d8:fe43
Done
+1 -10
View File
@@ -1120,15 +1120,6 @@ ThreadError Mac::ProcessReceiveSecurity(Frame &aFrame, const Address &aSrcAddr,
aFrame.SetSecurityValid(true);
exit:
if (error == kThreadError_Security)
{
for (Receiver *receiver = mReceiveHead; receiver; receiver = receiver->mNext)
{
receiver->HandleReceivedFrame(aFrame, error);
}
}
return error;
}
@@ -1292,7 +1283,7 @@ void Mac::ReceiveDoneTask(Frame *aFrame, ThreadError aError)
for (Receiver *receiver = mReceiveHead; receiver; receiver = receiver->mNext)
{
receiver->HandleReceivedFrame(*aFrame, kThreadError_None);
receiver->HandleReceivedFrame(*aFrame);
}
break;
+2 -3
View File
@@ -97,10 +97,9 @@ public:
*
* @param[in] aContext A pointer to arbitrary context information.
* @param[in] aFrame A reference to the MAC frame.
* @param[in] aError Any errors that occurred during reception.
*
*/
typedef void (*ReceiveFrameHandler)(void *aContext, Frame &aFrame, ThreadError aError);
typedef void (*ReceiveFrameHandler)(void *aContext, Frame &aFrame);
/**
* This constructor creates a MAC receiver client.
@@ -116,7 +115,7 @@ public:
}
private:
void HandleReceivedFrame(Frame &frame, ThreadError error) { mReceiveFrameHandler(mContext, frame, error); }
void HandleReceivedFrame(Frame &frame) { mReceiveFrameHandler(mContext, frame); }
ReceiveFrameHandler mReceiveFrameHandler;
void *mContext;
+3 -30
View File
@@ -1358,19 +1358,18 @@ exit:
mScheduleTransmissionTask.Post();
}
void MeshForwarder::HandleReceivedFrame(void *aContext, Mac::Frame &aFrame, ThreadError aError)
void MeshForwarder::HandleReceivedFrame(void *aContext, Mac::Frame &aFrame)
{
static_cast<MeshForwarder *>(aContext)->HandleReceivedFrame(aFrame, aError);
static_cast<MeshForwarder *>(aContext)->HandleReceivedFrame(aFrame);
}
void MeshForwarder::HandleReceivedFrame(Mac::Frame &aFrame, ThreadError aError)
void MeshForwarder::HandleReceivedFrame(Mac::Frame &aFrame)
{
ThreadMessageInfo messageInfo;
Mac::Address macDest;
Mac::Address macSource;
uint8_t *payload;
uint8_t payloadLength;
Ip6::Address destination;
uint8_t commandId;
Child *child = NULL;
ThreadError error = kThreadError_None;
@@ -1385,32 +1384,6 @@ void MeshForwarder::HandleReceivedFrame(Mac::Frame &aFrame, ThreadError aError)
}
SuccessOrExit(error = aFrame.GetSrcAddr(macSource));
if (aError == kThreadError_Security)
{
memset(&destination, 0, sizeof(destination));
destination.mFields.m16[0] = HostSwap16(0xfe80);
switch (macSource.mLength)
{
case 2:
destination.mFields.m16[5] = HostSwap16(0x00ff);
destination.mFields.m16[6] = HostSwap16(0xfe00);
destination.mFields.m16[7] = HostSwap16(macSource.mShortAddress);
break;
case 8:
destination.SetIid(macSource.mExtAddress);
break;
default:
ExitNow(error = kThreadError_Parse);
}
mMle.SendLinkReject(destination);
ExitNow(error = kThreadError_Security);
}
SuccessOrExit(aFrame.GetDstAddr(macDest));
if ((child = mMle.GetChild(macSource)) != NULL)
+2 -2
View File
@@ -200,8 +200,8 @@ private:
ThreadError UpdateMeshRoute(Message &aMessage);
ThreadError HandleDatagram(Message &aMessage, const ThreadMessageInfo &aMessageInfo);
static void HandleReceivedFrame(void *aContext, Mac::Frame &aFrame, ThreadError aError);
void HandleReceivedFrame(Mac::Frame &aFrame, ThreadError aError);
static void HandleReceivedFrame(void *aContext, Mac::Frame &aFrame);
void HandleReceivedFrame(Mac::Frame &aFrame);
static ThreadError HandleFrameRequest(void *aContext, Mac::Frame &aFrame);
ThreadError HandleFrameRequest(Mac::Frame &aFrame);
-24
View File
@@ -86,7 +86,6 @@ Mle::Mle(ThreadNetif &aThreadNetif) :
memset(&mParent, 0, sizeof(mParent));
memset(&mChildIdRequest, 0, sizeof(mChildIdRequest));
memset(&mLinkLocal64, 0, sizeof(mLinkLocal64));
memset(&mLinkLocal16, 0, sizeof(mLinkLocal16));
memset(&mMeshLocal64, 0, sizeof(mMeshLocal64));
memset(&mMeshLocal16, 0, sizeof(mMeshLocal16));
memset(&mLinkLocalAllThreadNodes, 0, sizeof(mLinkLocalAllThreadNodes));
@@ -101,15 +100,6 @@ Mle::Mle(ThreadNetif &aThreadNetif) :
mLinkLocal64.mValidLifetime = 0xffffffff;
mNetif.AddUnicastAddress(mLinkLocal64);
// link-local 16
memset(&mLinkLocal16, 0, sizeof(mLinkLocal16));
mLinkLocal16.GetAddress().mFields.m16[0] = HostSwap16(0xfe80);
mLinkLocal16.GetAddress().mFields.m16[5] = HostSwap16(0x00ff);
mLinkLocal16.GetAddress().mFields.m16[6] = HostSwap16(0xfe00);
mLinkLocal16.mPrefixLength = 64;
mLinkLocal16.mPreferredLifetime = 0xffffffff;
mLinkLocal16.mValidLifetime = 0xffffffff;
// Leader Aloc
memset(&mLeaderAloc, 0, sizeof(mLeaderAloc));
mLeaderAloc.mPrefixLength = 128;
@@ -244,7 +234,6 @@ ThreadError Mle::Stop(bool aClearNetworkDatasets)
otLogFuncEntry();
mKeyManager.Stop();
SetStateDetached();
mNetif.RemoveUnicastAddress(mLinkLocal16);
mNetif.RemoveUnicastAddress(mMeshLocal16);
if (mDeviceState == kDeviceStateLeader)
@@ -596,19 +585,10 @@ uint16_t Mle::GetRloc16(void) const
ThreadError Mle::SetRloc16(uint16_t aRloc16)
{
mNetif.RemoveUnicastAddress(mLinkLocal16);
mNetif.RemoveUnicastAddress(mMeshLocal16);
if (aRloc16 != Mac::kShortAddrInvalid)
{
// link-local 16
// add link-local 16 only for sleepy end device
if ((mDeviceMode & ModeTlv::kModeRxOnWhenIdle) == 0)
{
mLinkLocal16.GetAddress().mFields.m16[7] = HostSwap16(aRloc16);
mNetif.AddUnicastAddress(mLinkLocal16);
}
// mesh-local 16
mMeshLocal16.GetAddress().mFields.m16[7] = HostSwap16(aRloc16);
mNetif.AddUnicastAddress(mMeshLocal16);
@@ -1825,10 +1805,6 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
mMleRouter.HandleLinkAcceptAndRequest(aMessage, aMessageInfo, keySequence);
break;
case Header::kCommandLinkReject:
mMleRouter.HandleLinkReject(aMessage, aMessageInfo);
break;
case Header::kCommandAdvertisement:
HandleAdvertisement(aMessage, aMessageInfo);
break;
-1
View File
@@ -1253,7 +1253,6 @@ private:
Ip6::NetifUnicastAddress mLeaderAloc;
Ip6::NetifUnicastAddress mLinkLocal16;
Ip6::NetifUnicastAddress mLinkLocal64;
Ip6::NetifUnicastAddress mMeshLocal64;
Ip6::NetifUnicastAddress mMeshLocal16;
-37
View File
@@ -975,43 +975,6 @@ exit:
return error;
}
ThreadError MleRouter::SendLinkReject(const Ip6::Address &aDestination)
{
ThreadError error = kThreadError_None;
Message *message;
VerifyOrExit((message = NewMessage()) != NULL, ;);
message->SetLinkSecurityEnabled(false);
SuccessOrExit(error = AppendHeader(*message, Header::kCommandLinkReject));
SuccessOrExit(error = AppendStatus(*message, StatusTlv::kError));
SuccessOrExit(error = SendMessage(*message, aDestination));
otLogInfoMle("Sent link reject");
exit:
if (error != kThreadError_None && message != NULL)
{
message->Free();
}
return error;
}
ThreadError MleRouter::HandleLinkReject(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
Mac::ExtAddress macAddr;
(void)aMessage;
otLogInfoMle("Received link reject");
macAddr.Set(aMessageInfo.GetPeerAddr());
return kThreadError_None;
}
Child *MleRouter::NewChild(void)
{
for (int i = 0; i < mMaxChildrenAllowed; i++)
-12
View File
@@ -596,17 +596,6 @@ public:
*/
ThreadError CheckReachability(uint16_t aMeshSource, uint16_t aMeshDest, Ip6::Header &aIp6Header);
/**
* This method generates an MLE Link Reject.
*
* @param[in] aDestination A reference to the destination.
*
* @retval kThreadError_None Successfully generated the MLE Link Reject message.
* @retval kThreadError_NoBufs Insufficient buffers to generate the MLE Link Reject message.
*
*/
ThreadError SendLinkReject(const Ip6::Address &aDestination);
/**
* This method checks if a given Router ID has correct value.
*
@@ -655,7 +644,6 @@ private:
bool request);
ThreadError HandleLinkAcceptAndRequest(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo,
uint32_t aKeySequence);
ThreadError HandleLinkReject(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
ThreadError HandleAdvertisement(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
ThreadError HandleParentRequest(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
ThreadError HandleChildIdRequest(const Message &aMessage, const Ip6::MessageInfo &aMessageInfo,