mirror of
https://github.com/espressif/openthread.git
synced 2026-06-05 21:14:49 +00:00
update server data register (n/sd -> a/sd) (#356)
This commit is contained in:
@@ -563,18 +563,20 @@ void Leader::HandleServerData(void *aContext, Coap::Header &aHeader, Message &aM
|
||||
void Leader::HandleServerData(Coap::Header &aHeader, Message &aMessage,
|
||||
const Ip6::MessageInfo &aMessageInfo)
|
||||
{
|
||||
ThreadNetworkDataTlv threadNetworkDataTlv;
|
||||
uint8_t tlvsLength;
|
||||
uint8_t tlvs[kMaxSize];
|
||||
uint16_t rloc16;
|
||||
|
||||
otLogInfoNetData("Received network data registration\n");
|
||||
|
||||
tlvsLength = aMessage.GetLength() - aMessage.GetOffset();
|
||||
aMessage.Read(aMessage.GetOffset(), sizeof(threadNetworkDataTlv), &threadNetworkDataTlv);
|
||||
tlvsLength = threadNetworkDataTlv.GetLength();
|
||||
|
||||
aMessage.Read(aMessage.GetOffset(), tlvsLength, tlvs);
|
||||
aMessage.Read(aMessage.GetOffset() + sizeof(threadNetworkDataTlv), tlvsLength, tlvs);
|
||||
rloc16 = HostSwap16(aMessageInfo.mPeerAddr.mFields.m16[7]);
|
||||
|
||||
SendServerDataResponse(aHeader, aMessageInfo, tlvs, tlvsLength);
|
||||
SendServerDataResponse(aHeader, aMessageInfo, NULL, 0);
|
||||
RegisterNetworkData(rloc16, tlvs, tlvsLength);
|
||||
}
|
||||
|
||||
|
||||
@@ -205,6 +205,7 @@ ThreadError Local::Register(const Ip6::Address &aDestination)
|
||||
Coap::Header header;
|
||||
Message *message;
|
||||
Ip6::MessageInfo messageInfo;
|
||||
ThreadNetworkDataTlv threadNetworkDataTlv;
|
||||
|
||||
UpdateRloc();
|
||||
mSocket.Open(&HandleUdpReceive, this);
|
||||
@@ -226,6 +227,9 @@ ThreadError Local::Register(const Ip6::Address &aDestination)
|
||||
|
||||
VerifyOrExit((message = Ip6::Udp::NewMessage(0)) != NULL, error = kThreadError_NoBufs);
|
||||
SuccessOrExit(error = message->Append(header.GetBytes(), header.GetLength()));
|
||||
threadNetworkDataTlv.Init();
|
||||
threadNetworkDataTlv.SetLength(mLength);
|
||||
SuccessOrExit(error = message->Append(&threadNetworkDataTlv, sizeof(threadNetworkDataTlv)));
|
||||
SuccessOrExit(error = message->Append(mTlvs, mLength));
|
||||
|
||||
memset(&messageInfo, 0, sizeof(messageInfo));
|
||||
|
||||
@@ -71,6 +71,9 @@ public:
|
||||
kStatus = 4, ///< Status TLV
|
||||
kLastTransactionTime = 6, ///< Time Since Last Transaction TLV
|
||||
kRouterMask = 7, ///< Router Mask TLV
|
||||
kNDOption = 8, ///< ND Option TLV
|
||||
kNDData = 9, ///< ND Data TLV
|
||||
kThreadNetworkData = 10, ///< Thread Network Data TLV
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -462,6 +465,30 @@ private:
|
||||
uint8_t mAssignedRouterIdMask[BitVectorBytes(Mle::kMaxRouterId)];
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements Thread Network Data TLV generation and parsing.
|
||||
*
|
||||
*/
|
||||
OT_TOOL_PACKED_BEGIN
|
||||
class ThreadNetworkDataTlv: public ThreadTlv
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* This method initializes the TLV.
|
||||
*
|
||||
*/
|
||||
void Init() { SetType(kThreadNetworkData); SetLength(0); }
|
||||
|
||||
/**
|
||||
* This method overrides same method of the base class
|
||||
*
|
||||
* @retval TRUE the TLV appears to be well-formed.
|
||||
*
|
||||
*/
|
||||
bool IsValid() const { return true; }
|
||||
|
||||
} OT_TOOL_PACKED_END;
|
||||
|
||||
} // namespace Thread
|
||||
|
||||
#endif // THREAD_TLVS_HPP_
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace Thread {
|
||||
* The URI Path for Server Data Registration.
|
||||
*
|
||||
*/
|
||||
#define OPENTHREAD_URI_SERVER_DATA "n/sd"
|
||||
#define OPENTHREAD_URI_SERVER_DATA "a/sd"
|
||||
|
||||
} // namespace Thread
|
||||
|
||||
|
||||
Reference in New Issue
Block a user