[tmf] add Tmf::MessageInfo (#7589)

This commit adds `Tmf::MessageInfo` which is a sub-class of the
`Ip6::MessageInfo` class intended for use when sending TMF messages.
The peer port number is by default set to the TMF port from the
constructor. This class also provides helper methods for commonly
used patterns, e.g., source or `SockAddr` set to device's RLOC
address and/or the destination or `PeerAddr` set to leader ALOC or
RLOC, or a given address.
This commit is contained in:
Abtin Keshavarzian
2022-04-14 09:26:43 -07:00
committed by GitHub
parent 5e9f6f1e67
commit ba5ebc7296
19 changed files with 189 additions and 127 deletions
+2 -4
View File
@@ -62,7 +62,7 @@ Error AnnounceBeginClient::SendRequest(uint32_t aChannelMask,
{ {
Error error = kErrorNone; Error error = kErrorNone;
MeshCoP::ChannelMaskTlv channelMask; MeshCoP::ChannelMaskTlv channelMask;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = kErrorInvalidState); VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = kErrorInvalidState);
@@ -81,9 +81,7 @@ Error AnnounceBeginClient::SendRequest(uint32_t aChannelMask,
SuccessOrExit(error = Tlv::Append<MeshCoP::CountTlv>(*message, aCount)); SuccessOrExit(error = Tlv::Append<MeshCoP::CountTlv>(*message, aCount));
SuccessOrExit(error = Tlv::Append<MeshCoP::PeriodTlv>(*message, aPeriod)); SuccessOrExit(error = Tlv::Append<MeshCoP::PeriodTlv>(*message, aPeriod));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress);
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
+6 -11
View File
@@ -456,7 +456,7 @@ void BorderAgent::HandleRelayTransmit(const Coap::Message &aMessage)
Error error = kErrorNone; Error error = kErrorNone;
uint16_t joinerRouterRloc; uint16_t joinerRouterRloc;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
uint16_t offset = 0; uint16_t offset = 0;
VerifyOrExit(aMessage.IsNonConfirmablePostRequest()); VerifyOrExit(aMessage.IsNonConfirmablePostRequest());
@@ -472,11 +472,8 @@ void BorderAgent::HandleRelayTransmit(const Coap::Message &aMessage)
SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength() - aMessage.GetOffset())); SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength() - aMessage.GetOffset()));
aMessage.CopyTo(aMessage.GetOffset(), offset, aMessage.GetLength() - aMessage.GetOffset(), *message); aMessage.CopyTo(aMessage.GetOffset(), offset, aMessage.GetLength() - aMessage.GetOffset(), *message);
messageInfo.SetSockPort(Tmf::kUdpPort); messageInfo.SetSockAddrToRlocPeerAddrTo(joinerRouterRloc);
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockPortToTmf();
messageInfo.SetPeerPort(Tmf::kUdpPort);
messageInfo.SetPeerAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.GetPeerAddr().GetIid().SetLocator(joinerRouterRloc);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
@@ -495,7 +492,7 @@ Error BorderAgent::ForwardToLeader(const Coap::Message & aMessage,
{ {
Error error = kErrorNone; Error error = kErrorNone;
ForwardContext * forwardContext = nullptr; ForwardContext * forwardContext = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
uint16_t offset = 0; uint16_t offset = 0;
@@ -523,10 +520,8 @@ Error BorderAgent::ForwardToLeader(const Coap::Message & aMessage,
SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength() - aMessage.GetOffset())); SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength() - aMessage.GetOffset()));
aMessage.CopyTo(aMessage.GetOffset(), offset, aMessage.GetLength() - aMessage.GetOffset(), *message); aMessage.CopyTo(aMessage.GetOffset(), offset, aMessage.GetLength() - aMessage.GetOffset(), *message);
SuccessOrExit(error = Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr())); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
messageInfo.SetPeerPort(Tmf::kUdpPort); messageInfo.SetSockPortToTmf();
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetSockPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleCoapResponse, forwardContext)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleCoapResponse, forwardContext));
+10 -21
View File
@@ -686,7 +686,7 @@ Error Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8_t
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message; Coap::Message * message;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
MeshCoP::Tlv tlv; MeshCoP::Tlv tlv;
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -706,9 +706,7 @@ Error Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8_t
SuccessOrExit(error = message->AppendBytes(aTlvs, aLength)); SuccessOrExit(error = message->AppendBytes(aTlvs, aLength));
} }
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
SuccessOrExit(error = Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr()));
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo,
Commissioner::HandleMgmtCommissionerGetResponse, this)); Commissioner::HandleMgmtCommissionerGetResponse, this));
@@ -745,7 +743,7 @@ Error Commissioner::SendMgmtCommissionerSetRequest(const Dataset &aDataset, cons
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message; Coap::Message * message;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -779,9 +777,7 @@ Error Commissioner::SendMgmtCommissionerSetRequest(const Dataset &aDataset, cons
SuccessOrExit(error = message->AppendBytes(aTlvs, aLength)); SuccessOrExit(error = message->AppendBytes(aTlvs, aLength));
} }
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
SuccessOrExit(error = Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr()));
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo,
Commissioner::HandleMgmtCommissionerSetResponse, this)); Commissioner::HandleMgmtCommissionerSetResponse, this));
@@ -818,7 +814,7 @@ Error Commissioner::SendPetition(void)
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
CommissionerIdTlv commissionerId; CommissionerIdTlv commissionerId;
mTransmitAttempts++; mTransmitAttempts++;
@@ -833,9 +829,7 @@ Error Commissioner::SendPetition(void)
SuccessOrExit(error = commissionerId.AppendTo(*message)); SuccessOrExit(error = commissionerId.AppendTo(*message));
SuccessOrExit(error = Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr())); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
messageInfo.SetPeerPort(Tmf::kUdpPort);
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
SuccessOrExit( SuccessOrExit(
error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, Commissioner::HandleLeaderPetitionResponse, this)); error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, Commissioner::HandleLeaderPetitionResponse, this));
@@ -916,7 +910,7 @@ void Commissioner::SendKeepAlive(uint16_t aSessionId)
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -928,9 +922,7 @@ void Commissioner::SendKeepAlive(uint16_t aSessionId)
SuccessOrExit(error = Tlv::Append<CommissionerSessionIdTlv>(*message, aSessionId)); SuccessOrExit(error = Tlv::Append<CommissionerSessionIdTlv>(*message, aSessionId));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
SuccessOrExit(error = Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr()));
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo,
Commissioner::HandleLeaderKeepAliveResponse, this)); Commissioner::HandleLeaderKeepAliveResponse, this));
@@ -1154,7 +1146,7 @@ Error Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInfo
ExtendedTlv tlv; ExtendedTlv tlv;
Coap::Message * message; Coap::Message * message;
uint16_t offset; uint16_t offset;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Kek kek; Kek kek;
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -1181,10 +1173,7 @@ Error Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInfo
SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength())); SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength()));
aMessage.CopyTo(0, offset, aMessage.GetLength(), *message); aMessage.CopyTo(0, offset, aMessage.GetLength(), *message);
messageInfo.SetPeerAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(mJoinerRloc);
messageInfo.GetPeerAddr().GetIid().SetLocator(mJoinerRloc);
messageInfo.SetPeerPort(Tmf::kUdpPort);
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
+8 -15
View File
@@ -255,7 +255,7 @@ void DatasetManager::SendSet(void)
{ {
Error error; Error error;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Dataset dataset; Dataset dataset;
VerifyOrExit(!mMgmtPending, error = kErrorBusy); VerifyOrExit(!mMgmtPending, error = kErrorBusy);
@@ -287,9 +287,7 @@ void DatasetManager::SendSet(void)
IgnoreError(Read(dataset)); IgnoreError(Read(dataset));
SuccessOrExit(error = message->AppendBytes(dataset.GetBytes(), dataset.GetSize())); SuccessOrExit(error = message->AppendBytes(dataset.GetBytes(), dataset.GetSize()));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
IgnoreError(Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr()));
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit( SuccessOrExit(
error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &DatasetManager::HandleMgmtSetResponse, this)); error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &DatasetManager::HandleMgmtSetResponse, this));
@@ -483,7 +481,7 @@ Error DatasetManager::SendSetRequest(const Dataset::Info & aDatasetInfo,
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit(!mMgmtPending, error = kErrorBusy); VerifyOrExit(!mMgmtPending, error = kErrorBusy);
@@ -526,9 +524,7 @@ Error DatasetManager::SendSetRequest(const Dataset::Info & aDatasetInfo,
SuccessOrExit(error = message->AppendBytes(aTlvs, aLength)); SuccessOrExit(error = message->AppendBytes(aTlvs, aLength));
} }
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
IgnoreError(Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr()));
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleMgmtSetResponse, this)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleMgmtSetResponse, this));
mMgmtSetCallback = aCallback; mMgmtSetCallback = aCallback;
@@ -549,7 +545,7 @@ Error DatasetManager::SendGetRequest(const Dataset::Components &aDatasetComponen
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message; Coap::Message * message;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Tlv tlv; Tlv tlv;
uint8_t datasetTlvs[kMaxDatasetTlvs]; uint8_t datasetTlvs[kMaxDatasetTlvs];
uint8_t length; uint8_t length;
@@ -643,17 +639,14 @@ Error DatasetManager::SendGetRequest(const Dataset::Components &aDatasetComponen
} }
} }
IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
if (aAddress != nullptr) if (aAddress != nullptr)
{ {
// Use leader ALOC if `aAddress` is `nullptr`.
messageInfo.SetPeerAddr(AsCoreType(aAddress)); messageInfo.SetPeerAddr(AsCoreType(aAddress));
} }
else
{
IgnoreError(Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr()));
}
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("sent dataset get request"); LogInfo("sent dataset get request");
+2 -4
View File
@@ -71,7 +71,7 @@ Error EnergyScanClient::SendQuery(uint32_t aChannelMas
{ {
Error error = kErrorNone; Error error = kErrorNone;
MeshCoP::ChannelMaskTlv channelMask; MeshCoP::ChannelMaskTlv channelMask;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = kErrorInvalidState); VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = kErrorInvalidState);
@@ -91,9 +91,7 @@ Error EnergyScanClient::SendQuery(uint32_t aChannelMas
SuccessOrExit(error = Tlv::Append<MeshCoP::PeriodTlv>(*message, aPeriod)); SuccessOrExit(error = Tlv::Append<MeshCoP::PeriodTlv>(*message, aPeriod));
SuccessOrExit(error = Tlv::Append<MeshCoP::ScanDurationTlv>(*message, aScanDuration)); SuccessOrExit(error = Tlv::Append<MeshCoP::ScanDurationTlv>(*message, aScanDuration));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress);
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("sent query"); LogInfo("sent query");
+2 -5
View File
@@ -133,7 +133,7 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a
{ {
Error error; Error error;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
ExtendedTlv tlv; ExtendedTlv tlv;
uint16_t borderAgentRloc; uint16_t borderAgentRloc;
uint16_t offset; uint16_t offset;
@@ -158,10 +158,7 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a
SuccessOrExit(error = message->SetLength(offset + tlv.GetLength())); SuccessOrExit(error = message->SetLength(offset + tlv.GetLength()));
aMessage.CopyTo(aMessage.GetOffset(), offset, tlv.GetLength(), *message); aMessage.CopyTo(aMessage.GetOffset(), offset, tlv.GetLength(), *message);
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(borderAgentRloc);
messageInfo.SetPeerAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.GetPeerAddr().GetIid().SetLocator(borderAgentRloc);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
+2 -4
View File
@@ -230,16 +230,14 @@ exit:
void Leader::SendDatasetChanged(const Ip6::Address &aAddress) void Leader::SendDatasetChanged(const Ip6::Address &aAddress)
{ {
Error error = kErrorNone; Error error = kErrorNone;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message; Coap::Message * message;
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDatasetChanged)); SuccessOrExit(error = message->InitAsConfirmablePost(UriPath::kDatasetChanged));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress);
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("sent dataset changed"); LogInfo("sent dataset changed");
+2 -4
View File
@@ -68,7 +68,7 @@ Error PanIdQueryClient::SendQuery(uint16_t aPanId,
{ {
Error error = kErrorNone; Error error = kErrorNone;
MeshCoP::ChannelMaskTlv channelMask; MeshCoP::ChannelMaskTlv channelMask;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = kErrorInvalidState); VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = kErrorInvalidState);
@@ -86,9 +86,7 @@ Error PanIdQueryClient::SendQuery(uint16_t aPanId,
SuccessOrExit(error = Tlv::Append<MeshCoP::PanIdTlv>(*message, aPanId)); SuccessOrExit(error = Tlv::Append<MeshCoP::PanIdTlv>(*message, aPanId));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress);
messageInfo.SetPeerAddr(aAddress);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("sent panid query"); LogInfo("sent panid query");
+7 -15
View File
@@ -558,7 +558,7 @@ Error AddressResolver::SendAddressQuery(const Ip6::Address &aEid)
{ {
Error error; Error error;
Coap::Message * message; Coap::Message * message;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -568,10 +568,7 @@ Error AddressResolver::SendAddressQuery(const Ip6::Address &aEid)
SuccessOrExit(error = Tlv::Append<ThreadTargetTlv>(*message, aEid)); SuccessOrExit(error = Tlv::Append<ThreadTargetTlv>(*message, aEid));
messageInfo.GetPeerAddr().SetToRealmLocalAllRoutersMulticast(); messageInfo.SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast();
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
@@ -676,7 +673,7 @@ void AddressResolver::SendAddressError(const Ip6::Address & aTarget,
{ {
Error error; Error error;
Coap::Message * message; Coap::Message * message;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs);
@@ -689,16 +686,13 @@ void AddressResolver::SendAddressError(const Ip6::Address & aTarget,
if (aDestination == nullptr) if (aDestination == nullptr)
{ {
messageInfo.GetPeerAddr().SetToRealmLocalAllRoutersMulticast(); messageInfo.SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast();
} }
else else
{ {
messageInfo.SetPeerAddr(*aDestination); messageInfo.SetSockAddrToRlocPeerAddrTo(*aDestination);
} }
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("Sending address error for target %s", aTarget.ToString().AsCString()); LogInfo("Sending address error for target %s", aTarget.ToString().AsCString());
@@ -852,7 +846,7 @@ void AddressResolver::SendAddressQueryResponse(const Ip6::Address & a
{ {
Error error; Error error;
Coap::Message * message; Coap::Message * message;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -869,9 +863,7 @@ void AddressResolver::SendAddressQueryResponse(const Ip6::Address & a
SuccessOrExit(error = Tlv::Append<ThreadLastTransactionTimeTlv>(*message, *aLastTransactionTime)); SuccessOrExit(error = Tlv::Append<ThreadLastTransactionTimeTlv>(*message, *aLastTransactionTime));
} }
messageInfo.SetPeerAddr(aDestination); messageInfo.SetSockAddrToRlocPeerAddrTo(aDestination);
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
+2 -4
View File
@@ -62,7 +62,7 @@ Error AnycastLocator::Locate(const Ip6::Address &aAnycastAddress, Callback aCall
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((aCallback != nullptr) && Get<Mle::Mle>().IsAnycastLocator(aAnycastAddress), VerifyOrExit((aCallback != nullptr) && Get<Mle::Mle>().IsAnycastLocator(aAnycastAddress),
error = kErrorInvalidArgs); error = kErrorInvalidArgs);
@@ -78,9 +78,7 @@ Error AnycastLocator::Locate(const Ip6::Address &aAnycastAddress, Callback aCall
IgnoreError(Get<Tmf::Agent>().AbortTransaction(HandleResponse, this)); IgnoreError(Get<Tmf::Agent>().AbortTransaction(HandleResponse, this));
} }
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(aAnycastAddress);
messageInfo.SetPeerAddr(aAnycastAddress);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleResponse, this)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleResponse, this));
+4 -7
View File
@@ -424,7 +424,7 @@ void DuaManager::PerformNextRegistration(void)
Error error = kErrorNone; Error error = kErrorNone;
Mle::MleRouter & mle = Get<Mle::MleRouter>(); Mle::MleRouter & mle = Get<Mle::MleRouter>();
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Ip6::Address dua; Ip6::Address dua;
VerifyOrExit(mle.IsAttached(), error = kErrorInvalidState); VerifyOrExit(mle.IsAttached(), error = kErrorInvalidState);
@@ -517,8 +517,7 @@ void DuaManager::PerformNextRegistration(void)
Get<BackboneRouter::Leader>().GetServer16()); Get<BackboneRouter::Leader>().GetServer16());
} }
messageInfo.SetPeerPort(Tmf::kUdpPort); messageInfo.SetSockAddrToRloc();
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &DuaManager::HandleDuaResponse, this)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &DuaManager::HandleDuaResponse, this));
@@ -726,7 +725,7 @@ void DuaManager::SendAddressNotification(Ip6::Address & aAddress,
const Child & aChild) const Child & aChild)
{ {
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Error error; Error error;
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -737,9 +736,7 @@ void DuaManager::SendAddressNotification(Ip6::Address & aAddress,
SuccessOrExit(error = Tlv::Append<ThreadStatusTlv>(*message, aStatus)); SuccessOrExit(error = Tlv::Append<ThreadStatusTlv>(*message, aStatus));
SuccessOrExit(error = Tlv::Append<ThreadTargetTlv>(*message, aAddress)); SuccessOrExit(error = Tlv::Append<ThreadTargetTlv>(*message, aAddress));
messageInfo.GetPeerAddr().SetToRoutingLocator(Get<Mle::MleRouter>().GetMeshLocalPrefix(), aChild.GetRloc16()); messageInfo.SetSockAddrToRlocPeerAddrTo(aChild.GetRloc16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
+3 -4
View File
@@ -174,7 +174,7 @@ void EnergyScanServer::SendReport(void)
Error error = kErrorNone; Error error = kErrorNone;
MeshCoP::ChannelMaskTlv channelMask; MeshCoP::ChannelMaskTlv channelMask;
MeshCoP::EnergyListTlv energyList; MeshCoP::EnergyListTlv energyList;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message; Coap::Message * message;
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -191,9 +191,8 @@ void EnergyScanServer::SendReport(void)
SuccessOrExit(error = message->Append(energyList)); SuccessOrExit(error = message->Append(energyList));
SuccessOrExit(error = message->AppendBytes(mScanResults, mScanResultsLength)); SuccessOrExit(error = message->AppendBytes(mScanResults, mScanResultsLength));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(mCommissioner);
messageInfo.SetPeerAddr(mCommissioner);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("sent scan results"); LogInfo("sent scan results");
+5 -9
View File
@@ -3630,7 +3630,7 @@ exit:
Error MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus) Error MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus)
{ {
Error error = kErrorNone; Error error = kErrorNone;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
VerifyOrExit(!mAddressSolicitPending); VerifyOrExit(!mAddressSolicitPending);
@@ -3653,9 +3653,7 @@ Error MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus)
SuccessOrExit(error = AppendXtalAccuracy(*message)); SuccessOrExit(error = AppendXtalAccuracy(*message));
#endif #endif
SuccessOrExit(error = GetLeaderAddress(messageInfo.GetPeerAddr())); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc());
messageInfo.SetSockAddr(GetMeshLocal16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &HandleAddressSolicitResponse, this)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &HandleAddressSolicitResponse, this));
mAddressSolicitPending = true; mAddressSolicitPending = true;
@@ -3670,7 +3668,7 @@ exit:
void MleRouter::SendAddressRelease(void) void MleRouter::SendAddressRelease(void)
{ {
Error error = kErrorNone; Error error = kErrorNone;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message; Coap::Message * message;
VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs);
@@ -3679,12 +3677,10 @@ void MleRouter::SendAddressRelease(void)
SuccessOrExit(error = message->SetPayloadMarker()); SuccessOrExit(error = message->SetPayloadMarker());
SuccessOrExit(error = Tlv::Append<ThreadRloc16Tlv>(*message, Rloc16FromRouterId(mRouterId))); SuccessOrExit(error = Tlv::Append<ThreadRloc16Tlv>(*message, Rloc16FromRouterId(mRouterId)));
SuccessOrExit(error = Tlv::Append<ThreadExtMacAddressTlv>(*message, Get<Mac::Mac>().GetExtAddress())); SuccessOrExit(error = Tlv::Append<ThreadExtMacAddressTlv>(*message, Get<Mac::Mac>().GetExtAddress()));
messageInfo.SetSockAddr(GetMeshLocal16()); SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc());
SuccessOrExit(error = GetLeaderAddress(messageInfo.GetPeerAddr()));
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
Log(kMessageSend, kTypeAddressRelease, messageInfo.GetPeerAddr()); Log(kMessageSend, kTypeAddressRelease, messageInfo.GetPeerAddr());
+2 -3
View File
@@ -399,7 +399,7 @@ Error MlrManager::SendMulticastListenerRegistrationMessage(const otIp6Address *
Error error = kErrorNone; Error error = kErrorNone;
Mle::MleRouter & mle = Get<Mle::MleRouter>(); Mle::MleRouter & mle = Get<Mle::MleRouter>();
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Ip6AddressesTlv addressesTlv; Ip6AddressesTlv addressesTlv;
VerifyOrExit(Get<BackboneRouter::Leader>().HasPrimary(), error = kErrorInvalidState); VerifyOrExit(Get<BackboneRouter::Leader>().HasPrimary(), error = kErrorInvalidState);
@@ -444,8 +444,7 @@ Error MlrManager::SendMulticastListenerRegistrationMessage(const otIp6Address *
Get<BackboneRouter::Leader>().GetServer16()); Get<BackboneRouter::Leader>().GetServer16());
} }
messageInfo.SetPeerPort(Tmf::kUdpPort); messageInfo.SetSockAddrToRloc();
messageInfo.SetSockAddr(mle.GetMeshLocal16());
error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, aResponseHandler, aResponseContext); error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, aResponseHandler, aResponseContext);
+2 -4
View File
@@ -642,7 +642,7 @@ Error NetworkData::SendServerDataNotification(uint16_t aRloc16,
{ {
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs);
@@ -663,9 +663,7 @@ Error NetworkData::SendServerDataNotification(uint16_t aRloc16,
SuccessOrExit(error = Tlv::Append<ThreadRloc16Tlv>(*message, aRloc16)); SuccessOrExit(error = Tlv::Append<ThreadRloc16Tlv>(*message, aRloc16));
} }
IgnoreError(Get<Mle::MleRouter>().GetLeaderAloc(messageInfo.GetPeerAddr())); IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, aHandler, aContext)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, aHandler, aContext));
LogInfo("Sent server data notification"); LogInfo("Sent server data notification");
+6 -9
View File
@@ -81,7 +81,7 @@ Error NetworkDiagnostic::SendDiagnosticGet(const Ip6::Address & aDesti
{ {
Error error; Error error;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
otCoapResponseHandler handler = nullptr; otCoapResponseHandler handler = nullptr;
VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs);
@@ -113,11 +113,10 @@ Error NetworkDiagnostic::SendDiagnosticGet(const Ip6::Address & aDesti
} }
else else
{ {
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRloc();
} }
messageInfo.SetPeerAddr(aDestination); messageInfo.SetPeerAddr(aDestination);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, handler, this)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, handler, this));
@@ -467,7 +466,7 @@ void NetworkDiagnostic::HandleDiagnosticGetQuery(Coap::Message &aMessage, const
Error error = kErrorNone; Error error = kErrorNone;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
NetworkDiagnosticTlv networkDiagnosticTlv; NetworkDiagnosticTlv networkDiagnosticTlv;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit(aMessage.IsPostRequest(), error = kErrorDrop); VerifyOrExit(aMessage.IsPostRequest(), error = kErrorDrop);
@@ -501,11 +500,10 @@ void NetworkDiagnostic::HandleDiagnosticGetQuery(Coap::Message &aMessage, const
} }
else else
{ {
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRloc();
} }
messageInfo.SetPeerAddr(aMessageInfo.GetPeerAddr()); messageInfo.SetPeerAddr(aMessageInfo.GetPeerAddr());
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = FillRequestedTlvs(aMessage, *message, networkDiagnosticTlv)); SuccessOrExit(error = FillRequestedTlvs(aMessage, *message, networkDiagnosticTlv));
@@ -561,7 +559,7 @@ Error NetworkDiagnostic::SendDiagnosticReset(const Ip6::Address &aDestination,
{ {
Error error; Error error;
Coap::Message * message = nullptr; Coap::Message * message = nullptr;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewMessage()) != nullptr, error = kErrorNoBufs);
@@ -583,11 +581,10 @@ Error NetworkDiagnostic::SendDiagnosticReset(const Ip6::Address &aDestination,
} }
else else
{ {
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRloc();
} }
messageInfo.SetPeerAddr(aDestination); messageInfo.SetPeerAddr(aDestination);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
+3 -4
View File
@@ -114,7 +114,7 @@ void PanIdQueryServer::SendConflict(void)
{ {
Error error = kErrorNone; Error error = kErrorNone;
MeshCoP::ChannelMaskTlv channelMask; MeshCoP::ChannelMaskTlv channelMask;
Ip6::MessageInfo messageInfo; Tmf::MessageInfo messageInfo(GetInstance());
Coap::Message * message; Coap::Message * message;
VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); VerifyOrExit((message = Get<Tmf::Agent>().NewPriorityMessage()) != nullptr, error = kErrorNoBufs);
@@ -128,9 +128,8 @@ void PanIdQueryServer::SendConflict(void)
SuccessOrExit(error = Tlv::Append<MeshCoP::PanIdTlv>(*message, mPanId)); SuccessOrExit(error = Tlv::Append<MeshCoP::PanIdTlv>(*message, mPanId));
messageInfo.SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16()); messageInfo.SetSockAddrToRlocPeerAddrTo(mCommissioner);
messageInfo.SetPeerAddr(mCommissioner);
messageInfo.SetPeerPort(Tmf::kUdpPort);
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo)); SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
LogInfo("sent panid conflict"); LogInfo("sent panid conflict");
+42
View File
@@ -38,6 +38,48 @@
namespace ot { namespace ot {
namespace Tmf { namespace Tmf {
//----------------------------------------------------------------------------------------------------------------------
// MessageInfo
void MessageInfo::SetSockAddrToRloc(void)
{
SetSockAddr(Get<Mle::MleRouter>().GetMeshLocal16());
}
Error MessageInfo::SetSockAddrToRlocPeerAddrToLeaderAloc(void)
{
SetSockAddrToRloc();
return Get<Mle::MleRouter>().GetLeaderAloc(GetPeerAddr());
}
Error MessageInfo::SetSockAddrToRlocPeerAddrToLeaderRloc(void)
{
SetSockAddrToRloc();
return Get<Mle::MleRouter>().GetLeaderAddress(GetPeerAddr());
}
void MessageInfo::SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(void)
{
SetSockAddrToRloc();
GetPeerAddr().SetToRealmLocalAllRoutersMulticast();
}
void MessageInfo::SetSockAddrToRlocPeerAddrTo(uint16_t aRloc16)
{
SetSockAddrToRloc();
SetPeerAddr(Get<Mle::MleRouter>().GetMeshLocal16());
GetPeerAddr().GetIid().SetLocator(aRloc16);
}
void MessageInfo::SetSockAddrToRlocPeerAddrTo(const Ip6::Address &aPeerAddress)
{
SetSockAddrToRloc();
SetPeerAddr(aPeerAddress);
}
//----------------------------------------------------------------------------------------------------------------------
// Agent
Error Agent::Start(void) Error Agent::Start(void)
{ {
return Coap::Start(kUdpPort, OT_NETIF_THREAD); return Coap::Start(kUdpPort, OT_NETIF_THREAD);
+79
View File
@@ -37,12 +37,91 @@
#include "openthread-core-config.h" #include "openthread-core-config.h"
#include "coap/coap.hpp" #include "coap/coap.hpp"
#include "common/locator.hpp"
namespace ot { namespace ot {
namespace Tmf { namespace Tmf {
constexpr uint16_t kUdpPort = 61631; ///< TMF UDP Port constexpr uint16_t kUdpPort = 61631; ///< TMF UDP Port
/**
* This class represents message information for a TMF message.
*
* This is sub-class of `Ip6::MessageInfo` intended for use when sending TMF messages.
*
*/
class MessageInfo : public InstanceLocator, public Ip6::MessageInfo
{
public:
/**
* This constructor initializes the `MessageInfo`.
*
* The peer port is set to `Tmf::kUdpPort` and all other properties are cleared (set to zero).
*
* @param[in] aInstance The OpenThread instance.
*
*/
explicit MessageInfo(Instance &aInstance)
: InstanceLocator(aInstance)
{
SetPeerPort(kUdpPort);
}
/**
* This method sets the local socket port to TMF port.
*
*/
void SetSockPortToTmf(void) { SetSockPort(kUdpPort); }
/**
* This method sets the local socket address to mesh-local RLOC address.
*
*/
void SetSockAddrToRloc(void);
/**
* This method sets the local socket address to RLOC address and the peer socket address to leader ALOC.
*
* @retval kErrorNone Successfully set the addresses.
* @retval kErrorDetached Cannot set leader ALOC since device is currently detached.
*
*/
Error SetSockAddrToRlocPeerAddrToLeaderAloc(void);
/**
* This method sets the local socket address to RLOC address and the peer socket address to leader RLOC.
*
* @retval kErrorNone Successfully set the addresses.
* @retval kErrorDetached Cannot set leader RLOC since device is currently detached.
*
*/
Error SetSockAddrToRlocPeerAddrToLeaderRloc(void);
/**
* This method sets the local socket address to RLOC address and the peer socket address to realm-local all
* routers multicast address.
*
*/
void SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(void);
/**
* This method sets the local socket address to RLOC address and the peer socket address to a router RLOC based on
* a given RLOC16.
*
* @param[in] aRloc16 The RLOC16 to use for peer address.
*
*/
void SetSockAddrToRlocPeerAddrTo(uint16_t aRloc16);
/**
* This method sets the local socket address to RLOC address and the peer socket address to a given address.
*
* @param[in] aPeerAddress The peer address.
*
*/
void SetSockAddrToRlocPeerAddrTo(const Ip6::Address &aPeerAddress);
};
/** /**
* This class implements functionality of the Thread TMF agent. * This class implements functionality of the Thread TMF agent.
* *