Fix bugs in MGMT_ANNOUNCE_BEGIN.ntf/MGMT_ED_SCAN.qry/MGMT_PANID_QUERY.qry (#1732)

* Fix bugs in MGMT_ANNOUNCE_BEGIN.ntf/MGMT_ED_SCAN.qry/MGMT_PANID_QUERY.qry
1) specify mMeshLocal16 as source address for such notification or query
2) not SendEmptyAck for multicast notification or query
3) not re-selectsource for SendEmptyAck of unicast notification or query

* update for comments
This commit is contained in:
rongli
2017-05-08 09:12:02 -07:00
committed by Jonathan Hui
parent fbfd76a990
commit 589d02ae7a
7 changed files with 19 additions and 15 deletions
@@ -106,6 +106,7 @@ ThreadError AnnounceBeginClient::SendRequest(uint32_t aChannelMask, uint8_t aCou
period.SetPeriod(aPeriod);
SuccessOrExit(error = message->Append(&period, sizeof(period)));
messageInfo.SetSockAddr(mNetif.GetMle().GetMeshLocal16());
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(kCoapUdpPort);
messageInfo.SetInterfaceId(mNetif.GetInterfaceId());
+1 -1
View File
@@ -119,6 +119,7 @@ ThreadError EnergyScanClient::SendQuery(uint32_t aChannelMask, uint8_t aCount, u
scanDuration.SetScanDuration(aScanDuration);
SuccessOrExit(error = message->Append(&scanDuration, sizeof(scanDuration)));
messageInfo.SetSockAddr(mNetif.GetMle().GetMeshLocal16());
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(kCoapUdpPort);
messageInfo.SetInterfaceId(mNetif.GetInterfaceId());
@@ -175,7 +176,6 @@ void EnergyScanClient::HandleReport(Coap::Header &aHeader, Message &aMessage, co
mCallback(channelMask.GetMask(), energyList.list, energyList.tlv.GetLength(), mContext);
}
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent energy scan report response");
+1 -1
View File
@@ -104,6 +104,7 @@ ThreadError PanIdQueryClient::SendQuery(uint16_t aPanId, uint32_t aChannelMask,
panId.SetPanId(aPanId);
SuccessOrExit(error = message->Append(&panId, sizeof(panId)));
messageInfo.SetSockAddr(mNetif.GetMle().GetMeshLocal16());
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(kCoapUdpPort);
messageInfo.SetInterfaceId(mNetif.GetInterfaceId());
@@ -154,7 +155,6 @@ void PanIdQueryClient::HandleConflict(Coap::Header &aHeader, Message &aMessage,
mCallback(panId.GetPanId(), channelMask.GetMask(), mContext);
}
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent panid query conflict response");
+1 -1
View File
@@ -439,7 +439,7 @@ void AddressResolver::HandleAddressError(Coap::Header &aHeader, Message &aMessag
otLogInfoArp(GetInstance(), "Received address error notification");
if (!aMessageInfo.GetSockAddr().IsMulticast())
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
{
if (mNetif.GetCoapServer().SendEmptyAck(aHeader, aMessageInfo) == kThreadError_None)
{
+5 -4
View File
@@ -125,10 +125,11 @@ void AnnounceBeginServer::HandleRequest(Coap::Header &aHeader, Message &aMessage
SendAnnounce(channelMask.GetMask(), count.GetCount(), period.GetPeriod());
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent announce begin response");
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
{
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent announce begin response");
}
exit:
return;
+5 -4
View File
@@ -118,10 +118,11 @@ void EnergyScanServer::HandleRequest(Coap::Header &aHeader, Message &aMessage, c
mCommissioner = aMessageInfo.GetPeerAddr();
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent energy scan query response");
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
{
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent energy scan query response");
}
exit:
return;
+5 -4
View File
@@ -96,10 +96,11 @@ void PanIdQueryServer::HandleQuery(Coap::Header &aHeader, Message &aMessage, con
mPanId = panId.GetPanId();
mTimer.Start(kScanDelay);
memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr));
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent panid query response");
if (aHeader.IsConfirmable() && !aMessageInfo.GetSockAddr().IsMulticast())
{
SuccessOrExit(mNetif.GetCoapServer().SendEmptyAck(aHeader, responseInfo));
otLogInfoMeshCoP(GetInstance(), "sent panid query response");
}
exit:
return;