diff --git a/src/core/api/dataset_api.cpp b/src/core/api/dataset_api.cpp index 90c10d985..fcb2ec47b 100644 --- a/src/core/api/dataset_api.cpp +++ b/src/core/api/dataset_api.cpp @@ -100,8 +100,8 @@ otError otDatasetSendMgmtActiveGet(otInstance *aInstan uint8_t aLength, const otIp6Address *aAddress) { - return AsCoreType(aInstance).Get().SendGetRequest(AsCoreType(aDatasetComponents), - aTlvTypes, aLength, aAddress); + return AsCoreType(aInstance).Get().SendGetRequest( + AsCoreType(aDatasetComponents), aTlvTypes, aLength, AsCoreTypePtr(aAddress)); } otError otDatasetSendMgmtActiveSet(otInstance *aInstance, @@ -121,8 +121,8 @@ otError otDatasetSendMgmtPendingGet(otInstance *aInsta uint8_t aLength, const otIp6Address *aAddress) { - return AsCoreType(aInstance).Get().SendGetRequest(AsCoreType(aDatasetComponents), - aTlvTypes, aLength, aAddress); + return AsCoreType(aInstance).Get().SendGetRequest( + AsCoreType(aDatasetComponents), aTlvTypes, aLength, AsCoreTypePtr(aAddress)); } otError otDatasetSendMgmtPendingSet(otInstance *aInstance, diff --git a/src/core/meshcop/announce_begin_client.cpp b/src/core/meshcop/announce_begin_client.cpp index 077f60fa4..f9a9176cf 100644 --- a/src/core/meshcop/announce_begin_client.cpp +++ b/src/core/meshcop/announce_begin_client.cpp @@ -51,9 +51,8 @@ Error AnnounceBeginClient::SendRequest(uint32_t aChannelMask, uint16_t aPeriod, const Ip6::Address &aAddress) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message = nullptr; + Error error = kErrorNone; + Coap::Message *message = nullptr; VerifyOrExit(Get().IsActive(), error = kErrorInvalidState); VerifyOrExit((message = Get().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); @@ -69,9 +68,7 @@ Error AnnounceBeginClient::SendRequest(uint32_t aChannelMask, SuccessOrExit(error = Tlv::Append(*message, aCount)); SuccessOrExit(error = Tlv::Append(*message, aPeriod)); - messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, aAddress)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/meshcop/border_agent.cpp b/src/core/meshcop/border_agent.cpp index cf270cfbb..c06343dde 100644 --- a/src/core/meshcop/border_agent.cpp +++ b/src/core/meshcop/border_agent.cpp @@ -507,7 +507,6 @@ Error Manager::EvictActiveCommissioner(void) Error error = kErrorNone; uint16_t sessionId; uint16_t baRloc16; - Tmf::MessageInfo messageInfo(GetInstance()); OwnedPtr message; SuccessOrExit(error = Get().FindBorderAgentRloc(baRloc16)); @@ -519,9 +518,8 @@ Error Manager::EvictActiveCommissioner(void) SuccessOrExit(error = Tlv::Append(*message, StateTlv::kReject)); SuccessOrExit(error = Tlv::Append(*message, sessionId)); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - - error = Get().SendMessage(message.PassOwnership(), messageInfo); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message)); + message.Release(); exit: return error; @@ -695,7 +693,6 @@ Error Manager::CoapDtlsSession::ForwardToLeader(const Coap::Msg &aMsg, Uri aUri) { Error error = kErrorNone; OwnedPtr forwardContext; - Tmf::MessageInfo messageInfo(GetInstance()); OwnedPtr message; OffsetRange offsetRange; Coap::Token token; @@ -720,10 +717,9 @@ Error Manager::CoapDtlsSession::ForwardToLeader(const Coap::Msg &aMsg, Uri aUri) offsetRange.InitFromMessageOffsetToEnd(aMsg.mMessage); SuccessOrExit(error = message->AppendBytesFromMessage(aMsg.mMessage, offsetRange)); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo, - HandleLeaderResponseToFwdTmf, forwardContext.Get())); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleLeaderResponseToFwdTmf, + forwardContext.Get())); + message.Release(); // Release the ownership of `forwardContext` since `SendMessage()` // will own it. We take back ownership when the callback @@ -1010,7 +1006,6 @@ void Manager::CoapDtlsSession::HandleTmfRelayTx(Coap::Msg &aMsg) Error error = kErrorNone; uint16_t joinerRouterRloc; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); OffsetRange offsetRange; VerifyOrExit(aMsg.IsNonConfirmablePostRequest()); @@ -1036,9 +1031,8 @@ void Manager::CoapDtlsSession::HandleTmfRelayTx(Coap::Msg &aMsg) offsetRange.InitFromMessageOffsetToEnd(aMsg.mMessage); SuccessOrExit(error = message->AppendBytesFromMessage(aMsg.mMessage, offsetRange)); - messageInfo.SetSockAddrToRlocPeerAddrTo(joinerRouterRloc); - - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo)); + SuccessOrExit(error = Get().SendMessageToRloc(*message, joinerRouterRloc)); + message.Release(); LogInfo("Forward %s to joiner router 0x%04x", UriToString(), joinerRouterRloc); diff --git a/src/core/meshcop/border_agent_admitter.cpp b/src/core/meshcop/border_agent_admitter.cpp index f23eab5ba..9c99c691d 100644 --- a/src/core/meshcop/border_agent_admitter.cpp +++ b/src/core/meshcop/border_agent_admitter.cpp @@ -894,15 +894,12 @@ exit: Error Admitter::CommissionerPetitioner::SendToLeader(OwnedPtr aMessage, Coap::ResponseHandler aHandler) { - Error error; - Tmf::MessageInfo messageInfo(GetInstance()); - - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); + Error error; // On success the message ownership is transferred. - SuccessOrExit(error = Get().SendMessage(*aMessage, messageInfo, aHandler, - (aHandler != nullptr) ? this : nullptr)); + SuccessOrExit( + error = Get().SendMessageToLeaderAloc(*aMessage, aHandler, (aHandler != nullptr) ? this : nullptr)); aMessage.Release(); exit: diff --git a/src/core/meshcop/commissioner.cpp b/src/core/meshcop/commissioner.cpp index 545990a6d..216476874 100644 --- a/src/core/meshcop/commissioner.cpp +++ b/src/core/meshcop/commissioner.cpp @@ -605,7 +605,6 @@ Error Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8_t { Error error = kErrorNone; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); message.Reset(Get().NewPriorityConfirmablePostMessage(kUriCommissionerGet)); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -615,9 +614,8 @@ Error Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8_t SuccessOrExit(error = Tlv::AppendTlv(*message, Tlv::kGet, aTlvs, aLength)); } - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo, - HandleMgmtCommissionerGetResponse, this)); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleMgmtCommissionerGetResponse, this)); + message.Release(); LogInfo("Sent %s to leader", UriToString()); @@ -640,7 +638,6 @@ Error Commissioner::SendMgmtCommissionerSetRequest(const CommissioningDataset &a { Error error = kErrorNone; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); message.Reset(Get().NewPriorityConfirmablePostMessage(kUriCommissionerSet)); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -672,9 +669,8 @@ Error Commissioner::SendMgmtCommissionerSetRequest(const CommissioningDataset &a SuccessOrExit(error = message->AppendBytes(aTlvs, aLength)); } - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo, - HandleMgmtCommissionerSetResponse, this)); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleMgmtCommissionerSetResponse, this)); + message.Release(); LogInfo("Sent %s to leader", UriToString()); @@ -702,7 +698,6 @@ Error Commissioner::SendPetition(void) { Error error = kErrorNone; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); mTransmitAttempts++; @@ -711,9 +706,8 @@ Error Commissioner::SendPetition(void) SuccessOrExit(error = Tlv::Append(*message, mCommissionerId)); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo, - HandleLeaderPetitionResponse, this)); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleLeaderPetitionResponse, this)); + message.Release(); LogInfo("Sent %s", UriToString()); @@ -774,7 +768,6 @@ void Commissioner::SendKeepAlive(uint16_t aSessionId) { Error error = kErrorNone; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); message.Reset(Get().NewPriorityConfirmablePostMessage(kUriLeaderKeepAlive)); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -784,9 +777,8 @@ void Commissioner::SendKeepAlive(uint16_t aSessionId) SuccessOrExit(error = Tlv::Append(*message, aSessionId)); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo, - HandleLeaderKeepAliveResponse, this)); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleLeaderKeepAliveResponse, this)); + message.Release(); LogInfo("Sent %s", UriToString()); @@ -985,7 +977,6 @@ Error Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInfo Error error = kErrorNone; ExtendedTlv tlv; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); Kek kek; Get().ExtractKek(kek); @@ -1007,9 +998,8 @@ Error Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInfo SuccessOrExit(error = message->Append(tlv)); SuccessOrExit(error = message->AppendBytesFromMessage(aMessage, 0, aMessage.GetLength())); - messageInfo.SetSockAddrToRlocPeerAddrTo(mJoinerRloc); - - SuccessOrExit(error = Get().SendMessage(message.PassOwnership(), messageInfo)); + SuccessOrExit(error = Get().SendMessageToRloc(*message, mJoinerRloc)); + message.Release(); aMessage.Free(); diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 8350f96e1..b22a9b211 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -465,9 +465,8 @@ exit: Error DatasetManager::SendSetRequest(const Dataset &aDataset) { - Error error = kErrorNone; - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error = kErrorNone; + Coap::Message *message = nullptr; VerifyOrExit(!mMgmtPending, error = kErrorAlready); @@ -475,9 +474,8 @@ Error DatasetManager::SendSetRequest(const Dataset &aDataset) VerifyOrExit(message != nullptr, error = kErrorNoBufs); SuccessOrExit(error = message->AppendBytes(aDataset.GetBytes(), aDataset.GetLength())); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo, HandleMgmtSetResponse, this)); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleMgmtSetResponse, this)); mMgmtPending = true; LogInfo("Sent dataset set request to leader"); @@ -621,12 +619,11 @@ exit: Error DatasetManager::SendGetRequest(const Dataset::Components &aDatasetComponents, const uint8_t *aTlvTypes, uint8_t aLength, - const otIp6Address *aAddress) const + const Ip6::Address *aAddress) const { - Error error = kErrorNone; - Coap::Message *message; - Tmf::MessageInfo messageInfo(GetInstance()); - TlvList tlvList; + Error error = kErrorNone; + Coap::Message *message; + TlvList tlvList; if (aDatasetComponents.IsPresent()) { @@ -706,15 +703,16 @@ Error DatasetManager::SendGetRequest(const Dataset::Components &aDatasetComponen SuccessOrExit(error = Tlv::AppendTlv(*message, Tlv::kGet, tlvList.GetArrayBuffer(), tlvList.GetLength())); } - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - if (aAddress != nullptr) { - // Use leader ALOC if `aAddress` is `nullptr`. - messageInfo.SetPeerAddr(AsCoreType(aAddress)); + error = Get().SendMessageTo(*message, *aAddress); + } + else + { + error = Get().SendMessageToLeaderAloc(*message); } - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error); LogInfo("sent dataset get request"); diff --git a/src/core/meshcop/dataset_manager.hpp b/src/core/meshcop/dataset_manager.hpp index 29b553000..beef36b85 100644 --- a/src/core/meshcop/dataset_manager.hpp +++ b/src/core/meshcop/dataset_manager.hpp @@ -212,7 +212,7 @@ public: Error SendGetRequest(const Dataset::Components &aDatasetComponents, const uint8_t *aTlvTypes, uint8_t aLength, - const otIp6Address *aAddress) const; + const Ip6::Address *aAddress) const; /** * Processes a MGMT_GET request message and prepares the response. diff --git a/src/core/meshcop/energy_scan_client.cpp b/src/core/meshcop/energy_scan_client.cpp index a653849e5..4d1c8d1a2 100644 --- a/src/core/meshcop/energy_scan_client.cpp +++ b/src/core/meshcop/energy_scan_client.cpp @@ -54,9 +54,8 @@ Error EnergyScanClient::SendQuery(uint32_t aChannelMas otCommissionerEnergyReportCallback aCallback, void *aContext) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message = nullptr; + Error error = kErrorNone; + Coap::Message *message = nullptr; VerifyOrExit(Get().IsActive(), error = kErrorInvalidState); VerifyOrExit((message = Get().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); @@ -73,8 +72,7 @@ Error EnergyScanClient::SendQuery(uint32_t aChannelMas SuccessOrExit(error = Tlv::Append(*message, aPeriod)); SuccessOrExit(error = Tlv::Append(*message, aScanDuration)); - messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, aAddress)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/meshcop/joiner_router.cpp b/src/core/meshcop/joiner_router.cpp index a494e9183..74b05fc17 100644 --- a/src/core/meshcop/joiner_router.cpp +++ b/src/core/meshcop/joiner_router.cpp @@ -116,12 +116,11 @@ void JoinerRouter::SetJoinerUdpPort(uint16_t aJoinerUdpPort) void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageInfo) { - Error error; - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); - ExtendedTlv tlv; - uint16_t borderAgentRloc; - OffsetRange offsetRange; + Error error; + Coap::Message *message = nullptr; + ExtendedTlv tlv; + uint16_t borderAgentRloc; + OffsetRange offsetRange; LogInfo("JoinerRouter::HandleUdpReceive"); @@ -141,9 +140,7 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a SuccessOrExit(error = message->Append(tlv)); SuccessOrExit(error = message->AppendBytesFromMessage(aMessage, offsetRange)); - messageInfo.SetSockAddrToRlocPeerAddrTo(borderAgentRloc); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageToRloc(*message, borderAgentRloc)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/meshcop/meshcop_leader.cpp b/src/core/meshcop/meshcop_leader.cpp index 9c23e88de..73382ec37 100644 --- a/src/core/meshcop/meshcop_leader.cpp +++ b/src/core/meshcop/meshcop_leader.cpp @@ -177,15 +177,13 @@ exit: void Leader::SendDatasetChanged(const Ip6::Address &aAddress) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message; + Error error = kErrorNone; + Coap::Message *message; message = Get().NewPriorityConfirmablePostMessage(kUriDatasetChanged); VerifyOrExit(message != nullptr, error = kErrorNoBufs); - messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, aAddress)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/meshcop/panid_query_client.cpp b/src/core/meshcop/panid_query_client.cpp index 104c96b5d..de5c068fa 100644 --- a/src/core/meshcop/panid_query_client.cpp +++ b/src/core/meshcop/panid_query_client.cpp @@ -52,9 +52,8 @@ Error PanIdQueryClient::SendQuery(uint16_t aPanId, otCommissionerPanIdConflictCallback aCallback, void *aContext) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message = nullptr; + Error error = kErrorNone; + Coap::Message *message = nullptr; VerifyOrExit(Get().IsActive(), error = kErrorInvalidState); VerifyOrExit((message = Get().NewPriorityMessage()) != nullptr, error = kErrorNoBufs); @@ -69,8 +68,7 @@ Error PanIdQueryClient::SendQuery(uint16_t aPanId, SuccessOrExit(error = Tlv::Append(*message, aPanId)); - messageInfo.SetSockAddrToRlocPeerAddrTo(aAddress); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, aAddress)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/thread/address_resolver.cpp b/src/core/thread/address_resolver.cpp index 02daf0752..7f4f5fe36 100644 --- a/src/core/thread/address_resolver.cpp +++ b/src/core/thread/address_resolver.cpp @@ -611,18 +611,15 @@ exit: Error AddressResolver::SendAddressQuery(const Ip6::Address &aEid) { - Error error; - Coap::Message *message; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error; + Coap::Message *message; message = Get().NewPriorityNonConfirmablePostMessage(kUriAddressQuery); VerifyOrExit(message != nullptr, error = kErrorNoBufs); SuccessOrExit(error = Tlv::Append(*message, aEid)); - messageInfo.SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, Ip6::Address::GetRealmLocalAllRoutersMulticast())); LogInfo("Sent %s for %s", UriToString(), aEid.ToString().AsCString()); @@ -720,9 +717,8 @@ void AddressResolver::SendAddressError(const Ip6::Address &aTarget, const Ip6::InterfaceIdentifier &aMeshLocalIid, const Ip6::Address &aDestination) { - Error error; - Coap::Message *message; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error; + Coap::Message *message; VerifyOrExit((message = Get().NewMessage()) != nullptr, error = kErrorNoBufs); @@ -732,9 +728,7 @@ void AddressResolver::SendAddressError(const Ip6::Address &aTarget, SuccessOrExit(error = Tlv::Append(*message, aTarget)); SuccessOrExit(error = Tlv::Append(*message, aMeshLocalIid)); - messageInfo.SetSockAddrToRlocPeerAddrTo(aDestination); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, aDestination)); LogInfo("Sent %s for target %s", UriToString(), aTarget.ToString().AsCString()); @@ -877,9 +871,8 @@ void AddressResolver::SendAddressQueryResponse(const Ip6::Address &a const uint32_t *aLastTransactionTime, const Ip6::Address &aDestination) { - Error error; - Coap::Message *message; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error; + Coap::Message *message; message = Get().NewPriorityConfirmablePostMessage(kUriAddressNotify); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -893,9 +886,7 @@ void AddressResolver::SendAddressQueryResponse(const Ip6::Address &a SuccessOrExit(error = Tlv::Append(*message, *aLastTransactionTime)); } - messageInfo.SetSockAddrToRlocPeerAddrTo(aDestination); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, aDestination)); LogInfo("Sent %s for target %s", UriToString(), aTarget.ToString().AsCString()); diff --git a/src/core/thread/anycast_locator.cpp b/src/core/thread/anycast_locator.cpp index 44a1cf014..1492a0da3 100644 --- a/src/core/thread/anycast_locator.cpp +++ b/src/core/thread/anycast_locator.cpp @@ -47,9 +47,8 @@ AnycastLocator::AnycastLocator(Instance &aInstance) Error AnycastLocator::Locate(const Ip6::Address &aAnycastAddress, LocatorCallback aCallback, void *aContext) { - Error error = kErrorNone; - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error = kErrorNone; + Coap::Message *message = nullptr; VerifyOrExit((aCallback != nullptr) && Get().IsAnycastLocator(aAnycastAddress), error = kErrorInvalidArgs); @@ -62,9 +61,7 @@ Error AnycastLocator::Locate(const Ip6::Address &aAnycastAddress, LocatorCallbac IgnoreError(Get().AbortTransaction(HandleResponse, this)); } - messageInfo.SetSockAddrToRlocPeerAddrTo(aAnycastAddress); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo, HandleResponse, this)); + SuccessOrExit(error = Get().SendMessageTo(*message, aAnycastAddress, HandleResponse, this)); mCallback.Set(aCallback, aContext); diff --git a/src/core/thread/dua_manager.cpp b/src/core/thread/dua_manager.cpp index 6167e8a5f..88e8b2d47 100644 --- a/src/core/thread/dua_manager.cpp +++ b/src/core/thread/dua_manager.cpp @@ -418,10 +418,10 @@ void DuaManager::UpdateTimeTickerRegistration(void) void DuaManager::PerformNextRegistration(void) { - Error error = kErrorNone; - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); - Ip6::Address dua; + Error error = kErrorNone; + Coap::Message *message = nullptr; + Ip6::Address dua; + Ip6::Address destAddr; VerifyOrExit(Get().IsAttached()); VerifyOrExit(Get().HasPrimary()); @@ -503,17 +503,14 @@ void DuaManager::PerformNextRegistration(void) uint8_t pbbrServiceId; SuccessOrExit(error = Get().GetServiceId(pbbrServiceId)); - Get().GetServiceAloc(pbbrServiceId, messageInfo.GetPeerAddr()); + Get().GetServiceAloc(pbbrServiceId, destAddr); } else { - messageInfo.GetPeerAddr().SetToRoutingLocator(Get().GetMeshLocalPrefix(), - Get().GetServer16()); + destAddr.SetToRoutingLocator(Get().GetMeshLocalPrefix(), Get().GetServer16()); } - messageInfo.SetSockAddrToRloc(); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo, HandleDuaResponse, this)); + SuccessOrExit(error = Get().SendMessageTo(*message, destAddr, HandleDuaResponse, this)); mIsDuaPending = true; mRegisteringDua = dua; @@ -700,9 +697,8 @@ exit: #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_TMF_PROXY_DUA_ENABLE void DuaManager::SendAddressNotification(Ip6::Address &aAddress, DuaStatus aStatus, const Child &aChild) { - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); - Error error; + Coap::Message *message = nullptr; + Error error; message = Get().NewPriorityConfirmablePostMessage(kUriDuaRegistrationNotify); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -710,9 +706,7 @@ void DuaManager::SendAddressNotification(Ip6::Address &aAddress, DuaStatus aStat SuccessOrExit(error = Tlv::Append(*message, aStatus)); SuccessOrExit(error = Tlv::Append(*message, aAddress)); - messageInfo.SetSockAddrToRlocPeerAddrTo(aChild.GetRloc16()); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageToRloc(*message, aChild.GetRloc16())); LogInfo("Sent %s for child %04x DUA %s", UriToString(), aChild.GetRloc16(), aAddress.ToString().AsCString()); diff --git a/src/core/thread/energy_scan_server.cpp b/src/core/thread/energy_scan_server.cpp index 50bf0aff5..f2687ce1b 100644 --- a/src/core/thread/energy_scan_server.cpp +++ b/src/core/thread/energy_scan_server.cpp @@ -172,17 +172,14 @@ exit: void EnergyScanServer::SendReport(void) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - uint16_t offset; + Error error = kErrorNone; + uint16_t offset; // Update the Energy List TLV length in Report message offset = mReportMessage->GetLength() - mNumScanResults - sizeof(uint8_t); mReportMessage->Write(offset, mNumScanResults); - messageInfo.SetSockAddrToRlocPeerAddrTo(mCommissioner); - - SuccessOrExit(error = Get().SendMessage(*mReportMessage, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*mReportMessage, mCommissioner)); mReportMessage.Release(); LogInfo("Sent %s", UriToString()); diff --git a/src/core/thread/mle_ftd.cpp b/src/core/thread/mle_ftd.cpp index e1389cc59..e79caa11e 100644 --- a/src/core/thread/mle_ftd.cpp +++ b/src/core/thread/mle_ftd.cpp @@ -3258,9 +3258,9 @@ void Mle::SetRouterId(uint8_t aRouterId) Error Mle::SendAddressSolicit(RouterUpgradeReason aReason) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message = nullptr; + Error error = kErrorNone; + Coap::Message *message = nullptr; + Ip6::Address leaderRloc; VerifyOrExit(!mAddressSolicitPending); @@ -3280,12 +3280,12 @@ Error Mle::SendAddressSolicit(RouterUpgradeReason aReason) SuccessOrExit(error = Tlv::Append(*message, otPlatTimeGetXtalAccuracy())); #endif - messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc(); + GetLeaderRloc(leaderRloc); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo, HandleAddressSolicitResponse, this)); + SuccessOrExit(error = Get().SendMessageTo(*message, leaderRloc, HandleAddressSolicitResponse, this)); mAddressSolicitPending = true; - Log(kMessageSend, kTypeAddressSolicit, messageInfo.GetPeerAddr()); + Log(kMessageSend, kTypeAddressSolicit, leaderRloc); exit: FreeMessageOnError(message, error); @@ -3294,9 +3294,9 @@ exit: void Mle::SendAddressRelease(void) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message; + Error error = kErrorNone; + Coap::Message *message; + Ip6::Address leaderRloc; message = Get().NewPriorityConfirmablePostMessage(kUriAddressRelease); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -3304,11 +3304,11 @@ void Mle::SendAddressRelease(void) SuccessOrExit(error = Tlv::Append(*message, Rloc16FromRouterId(mRouterId))); SuccessOrExit(error = Tlv::Append(*message, Get().GetExtAddress())); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc(); + GetLeaderRloc(leaderRloc); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, leaderRloc)); - Log(kMessageSend, kTypeAddressRelease, messageInfo.GetPeerAddr()); + Log(kMessageSend, kTypeAddressRelease, leaderRloc); exit: FreeMessageOnError(message, error); diff --git a/src/core/thread/mlr_manager.cpp b/src/core/thread/mlr_manager.cpp index 682b8094b..9786ff0c0 100644 --- a/src/core/thread/mlr_manager.cpp +++ b/src/core/thread/mlr_manager.cpp @@ -358,10 +358,10 @@ Error MlrManager::SendMlrMessage(const Ip6::Address *aAddresses, { OT_UNUSED_VARIABLE(aTimeout); - Error error = kErrorNone; - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); - Ip6AddressesTlv addressesTlv; + Error error = kErrorNone; + Coap::Message *message = nullptr; + Ip6::Address destAddr; + Ip6AddressesTlv addressesTlv; VerifyOrExit(Get().HasPrimary(), error = kErrorInvalidState); @@ -393,17 +393,14 @@ Error MlrManager::SendMlrMessage(const Ip6::Address *aAddresses, uint8_t pbbrServiceId; SuccessOrExit(error = Get().GetServiceId(pbbrServiceId)); - Get().GetServiceAloc(pbbrServiceId, messageInfo.GetPeerAddr()); + Get().GetServiceAloc(pbbrServiceId, destAddr); } else { - messageInfo.GetPeerAddr().SetToRoutingLocator(Get().GetMeshLocalPrefix(), - Get().GetServer16()); + destAddr.SetToRoutingLocator(Get().GetMeshLocalPrefix(), Get().GetServer16()); } - messageInfo.SetSockAddrToRloc(); - - error = Get().SendMessage(*message, messageInfo, aResponseHandler, aContext); + error = Get().SendMessageTo(*message, destAddr, aResponseHandler, aContext); LogInfo("Sent MLR.req: addressNum=%d", aAddressNum); diff --git a/src/core/thread/network_data_notifier.cpp b/src/core/thread/network_data_notifier.cpp index 68c31509b..898a3950f 100644 --- a/src/core/thread/network_data_notifier.cpp +++ b/src/core/thread/network_data_notifier.cpp @@ -183,9 +183,8 @@ exit: Error Notifier::SendServerDataNotification(uint16_t aOldRloc16, const NetworkData *aNetworkData) { - Error error = kErrorNone; - Coap::Message *message; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error = kErrorNone; + Coap::Message *message; message = Get().NewPriorityConfirmablePostMessage(kUriServerData); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -205,8 +204,7 @@ Error Notifier::SendServerDataNotification(uint16_t aOldRloc16, const NetworkDat SuccessOrExit(error = Tlv::Append(*message, aOldRloc16)); } - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrExit(error = Get().SendMessage(*message, messageInfo, HandleCoapResponse, this)); + SuccessOrExit(error = Get().SendMessageToLeaderAloc(*message, HandleCoapResponse, this)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/thread/network_diagnostic.cpp b/src/core/thread/network_diagnostic.cpp index c3a3c0c42..1e5813488 100644 --- a/src/core/thread/network_diagnostic.cpp +++ b/src/core/thread/network_diagnostic.cpp @@ -50,25 +50,6 @@ Server::Server(Instance &aInstance) { } -void Server::PrepareMessageInfoForDest(const Ip6::Address &aDestination, Tmf::MessageInfo &aMessageInfo) const -{ - if (aDestination.IsMulticast()) - { - aMessageInfo.SetMulticastLoop(true); - } - - if (aDestination.IsLinkLocalUnicastOrMulticast()) - { - aMessageInfo.SetSockAddr(Get().GetLinkLocalAddress()); - } - else - { - aMessageInfo.SetSockAddrToRloc(); - } - - aMessageInfo.SetPeerAddr(aDestination); -} - Error Server::AppendIp6AddressList(Message &aMessage) { Error error; @@ -599,11 +580,10 @@ exit: void Server::SendAnswer(const Ip6::Address &aDestination, const Message &aRequest) { - Error error = kErrorNone; - Coap::Message *answer = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); - AnswerTlv answerTlv; - uint16_t queryId; + Error error = kErrorNone; + Coap::Message *answer = nullptr; + AnswerTlv answerTlv; + uint16_t queryId; answer = Get().NewConfirmablePostMessage(kUriDiagnosticGetAnswer); VerifyOrExit(answer != nullptr, error = kErrorNoBufs); @@ -620,9 +600,7 @@ void Server::SendAnswer(const Ip6::Address &aDestination, const Message &aReques answerTlv.Init(0, AnswerTlv::kIsLast); SuccessOrExit(answer->Append(answerTlv)); - PrepareMessageInfoForDest(aDestination, messageInfo); - - error = Get().SendMessage(*answer, messageInfo); + error = Get().SendMessageAllowMulticastLoop(*answer, aDestination); exit: FreeMessageOnError(answer, error); @@ -778,18 +756,15 @@ void Server::SendNextAnswer(Coap::Message &aAnswer, const Ip6::Address &aDestina // This method send the given next `aAnswer` associated with // a query to the `aDestination`. - Error error = kErrorNone; - Coap::Message *nextAnswer = IsLastAnswer(aAnswer) ? nullptr : aAnswer.GetNextCoapMessage(); - Tmf::MessageInfo messageInfo(GetInstance()); + Error error = kErrorNone; + Coap::Message *nextAnswer = IsLastAnswer(aAnswer) ? nullptr : aAnswer.GetNextCoapMessage(); mAnswerQueue.Dequeue(aAnswer); - PrepareMessageInfoForDest(aDestination, messageInfo); - // When sending the message, we pass `nextAnswer` as `aContext` // to be used when invoking callback `HandleAnswerResponse()`. - error = Get().SendMessage(aAnswer, messageInfo, HandleAnswerResponse, nextAnswer); + error = Get().SendMessageAllowMulticastLoop(aAnswer, aDestination, HandleAnswerResponse, nextAnswer); if (error != kErrorNone) { @@ -1052,9 +1027,8 @@ Error Client::SendCommand(Uri aUri, Coap::ResponseHandler aHandler, void *aContext) { - Error error; - Coap::Message *message = nullptr; - Tmf::MessageInfo messageInfo(GetInstance()); + Error error; + Coap::Message *message = nullptr; switch (aUri) { @@ -1084,9 +1058,7 @@ Error Client::SendCommand(Uri aUri, SuccessOrExit(error = Tlv::Append(*message, ++mQueryId)); } - Get().PrepareMessageInfoForDest(aDestination, messageInfo); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo, aHandler, aContext)); + SuccessOrExit(error = Get().SendMessageAllowMulticastLoop(*message, aDestination, aHandler, aContext)); LogInfo("Sent %s to %s", UriToString(aUri), aDestination.ToString().AsCString()); diff --git a/src/core/thread/network_diagnostic.hpp b/src/core/thread/network_diagnostic.hpp index b0313024d..a5d87ad3e 100644 --- a/src/core/thread/network_diagnostic.hpp +++ b/src/core/thread/network_diagnostic.hpp @@ -147,7 +147,6 @@ private: Error AppendIp6AddressList(Message &aMessage); Error AppendMacCounters(Message &aMessage); Error AppendRequestedTlvs(const Message &aRequest, Message &aResponse); - void PrepareMessageInfoForDest(const Ip6::Address &aDestination, Tmf::MessageInfo &aMessageInfo) const; #if OPENTHREAD_CONFIG_BLE_TCAT_ENABLE Error AppendRequestedTlvsForTcat(const Message &aRequest, Message &aResponse, OffsetRange &aOffsetRange); diff --git a/src/core/thread/panid_query_server.cpp b/src/core/thread/panid_query_server.cpp index 18e540611..007ec7b68 100644 --- a/src/core/thread/panid_query_server.cpp +++ b/src/core/thread/panid_query_server.cpp @@ -89,9 +89,8 @@ void PanIdQueryServer::HandleScanResult(const ScanResult *aScanResult) void PanIdQueryServer::SendConflict(void) { - Error error = kErrorNone; - Tmf::MessageInfo messageInfo(GetInstance()); - Coap::Message *message; + Error error = kErrorNone; + Coap::Message *message; message = Get().NewPriorityConfirmablePostMessage(kUriPanIdConflict); VerifyOrExit(message != nullptr, error = kErrorNoBufs); @@ -100,9 +99,7 @@ void PanIdQueryServer::SendConflict(void) SuccessOrExit(error = Tlv::Append(*message, mPanId)); - messageInfo.SetSockAddrToRlocPeerAddrTo(mCommissioner); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageTo(*message, mCommissioner)); LogInfo("Sent %s", UriToString()); diff --git a/src/core/thread/tmf.cpp b/src/core/thread/tmf.cpp index 7a8b58a9a..b88a2e737 100644 --- a/src/core/thread/tmf.cpp +++ b/src/core/thread/tmf.cpp @@ -38,41 +38,6 @@ namespace ot { namespace Tmf { -//---------------------------------------------------------------------------------------------------------------------- -// MessageInfo - -void MessageInfo::SetSockAddrToRloc(void) { SetSockAddr(Get().GetMeshLocalRloc()); } - -void MessageInfo::SetSockAddrToRlocPeerAddrToLeaderAloc(void) -{ - SetSockAddrToRloc(); - Get().GetLeaderAloc(GetPeerAddr()); -} - -void MessageInfo::SetSockAddrToRlocPeerAddrToLeaderRloc(void) -{ - SetSockAddrToRloc(); - Get().GetLeaderRloc(GetPeerAddr()); -} - -void MessageInfo::SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(void) -{ - SetSockAddrToRloc(); - SetPeerAddr(Ip6::Address::GetRealmLocalAllRoutersMulticast()); -} - -void MessageInfo::SetSockAddrToRlocPeerAddrTo(uint16_t aRloc16) -{ - SetSockAddrToRloc(); - GetPeerAddr().SetToRoutingLocator(Get().GetMeshLocalPrefix(), aRloc16); -} - -void MessageInfo::SetSockAddrToRlocPeerAddrTo(const Ip6::Address &aPeerAddress) -{ - SetSockAddrToRloc(); - SetPeerAddr(aPeerAddress); -} - //---------------------------------------------------------------------------------------------------------------------- // Agent @@ -229,6 +194,81 @@ exit: return isTmf; } +Error Agent::SendMessageTo(Message &aMessage, const Ip6::Address &aDest) +{ + return SendMessageTo(aMessage, aDest, nullptr, nullptr); +} + +Error Agent::SendMessageTo(Message &aMessage, const Ip6::Address &aDest, ResponseHandler aHandler, void *aContext) +{ + return Send(aMessage, aDest, /* aAllowMulticastLoop */ false, aHandler, aContext); +} + +Error Agent::SendMessageAllowMulticastLoop(Message &aMessage, const Ip6::Address &aDest) +{ + return SendMessageAllowMulticastLoop(aMessage, aDest, nullptr, nullptr); +} + +Error Agent::SendMessageAllowMulticastLoop(Message &aMessage, + const Ip6::Address &aDest, + ResponseHandler aHandler, + void *aContext) +{ + return Send(aMessage, aDest, /* aAllowMulticastLoop */ true, aHandler, aContext); +} + +Error Agent::Send(Message &aMessage, + const Ip6::Address &aDest, + bool aAllowMulticastLoop, + ResponseHandler aHandler, + void *aContext) +{ + Ip6::MessageInfo messageInfo; + + messageInfo.SetPeerAddr(aDest); + PrepareMessageInfo(messageInfo); + messageInfo.SetMulticastLoop(aAllowMulticastLoop); + + return SendMessage(aMessage, messageInfo, aHandler, aContext); +} + +Error Agent::SendMessageToRloc(Message &aMessage, uint16_t aRloc16) +{ + return SendMessageToRloc(aMessage, aRloc16, nullptr, nullptr); +} + +Error Agent::SendMessageToRloc(Message &aMessage, uint16_t aRloc16, ResponseHandler aHandler, void *aContext) +{ + Ip6::MessageInfo messageInfo; + + messageInfo.GetPeerAddr().SetToRoutingLocator(Get().GetMeshLocalPrefix(), aRloc16); + PrepareMessageInfo(messageInfo); + + return SendMessage(aMessage, messageInfo, aHandler, aContext); +} + +Error Agent::SendMessageToLeaderAloc(Message &aMessage) { return SendMessageToLeaderAloc(aMessage, nullptr, nullptr); } + +Error Agent::SendMessageToLeaderAloc(Message &aMessage, ResponseHandler aHandler, void *aContext) +{ + Ip6::MessageInfo messageInfo; + + Get().GetLeaderAloc(messageInfo.GetPeerAddr()); + PrepareMessageInfo(messageInfo); + + return SendMessage(aMessage, messageInfo, aHandler, aContext); +} + +void Agent::PrepareMessageInfo(Ip6::MessageInfo &aMessageInfo) const +{ + // `GetPeerAddr()` must be already set. + + aMessageInfo.SetPeerPort(kUdpPort); + aMessageInfo.SetSockAddr(aMessageInfo.GetPeerAddr().IsLinkLocalUnicastOrMulticast() + ? Get().GetLinkLocalAddress() + : Get().GetMeshLocalRloc()); +} + uint8_t Agent::PriorityToDscp(Message::Priority aPriority) { uint8_t dscp = Ip6::kDscpTmfNormalPriority; diff --git a/src/core/thread/tmf.hpp b/src/core/thread/tmf.hpp index ac0466573..24fa49c47 100644 --- a/src/core/thread/tmf.hpp +++ b/src/core/thread/tmf.hpp @@ -83,66 +83,9 @@ namespace Tmf { constexpr uint16_t kUdpPort = 61631; ///< TMF UDP Port -typedef Coap::Message Message; ///< A TMF message. -typedef Coap::Msg Msg; ///< A TMF message along with its `Ip6::MessageInfo`. - -/** - * 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: - /** - * 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); - } - - /** - * Sets the local socket address to mesh-local RLOC address. - */ - void SetSockAddrToRloc(void); - - /** - * Sets the local socket address to RLOC address and the peer socket address to leader ALOC. - */ - void SetSockAddrToRlocPeerAddrToLeaderAloc(void); - - /** - * Sets the local socket address to RLOC address and the peer socket address to leader RLOC. - */ - void SetSockAddrToRlocPeerAddrToLeaderRloc(void); - - /** - * Sets the local socket address to RLOC address and the peer socket address to realm-local all - * routers multicast address. - */ - void SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(void); - - /** - * 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); - - /** - * 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); -}; +typedef Coap::Message Message; ///< A TMF message. +typedef Coap::Msg Msg; ///< A TMF message along with its `Ip6::MessageInfo`. +typedef Coap::ResponseHandler ResponseHandler; ///< A TMF message response handler function pointer. /** * Implements functionality of the Thread TMF agent. @@ -183,6 +126,103 @@ public: */ bool IsTmfMessage(const Ip6::Address &aSourceAddress, const Ip6::Address &aDestAddress, uint16_t aDestPort) const; + /** + * Sends a TMF message to a given destination address. + * + * @param[in] aMessage The message to send. + * @param[in] aDest The destination IPv6 address. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageTo(Message &aMessage, const Ip6::Address &aDest); + + /** + * Sends a TMF message to a given destination address. + * + * @param[in] aMessage The message to send. + * @param[in] aDest The destination IPv6 address. + * @param[in] aHandler The `ResponseHandler` callback function. + * @param[in] aContext A pointer to arbitrary context information used with @p aHandler. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageTo(Message &aMessage, const Ip6::Address &aDest, ResponseHandler aHandler, void *aContext); + + /** + * Sends a TMF message to a given destination address and allows multicast loop. + * + * @param[in] aMessage The message to send. + * @param[in] aDest The destination IPv6 address. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageAllowMulticastLoop(Message &aMessage, const Ip6::Address &aDest); + + /** + * Sends a TMF message to a given destination address and allows multicast loop. + * + * @param[in] aMessage The message to send. + * @param[in] aDest The destination IPv6 address. + * @param[in] aHandler The `ResponseHandler` callback function. + * @param[in] aContext A pointer to arbitrary context information used with @p aHandler. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageAllowMulticastLoop(Message &aMessage, + const Ip6::Address &aDest, + ResponseHandler aHandler, + void *aContext); + + /** + * Sends a TMF message to a router RLOC based on a given RLOC16. + * + * @param[in] aMessage The message to send. + * @param[in] aRloc16 The RLOC16 to use for peer address. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageToRloc(Message &aMessage, uint16_t aRloc16); + + /** + * Sends a TMF message to a router RLOC based on a given RLOC16. + * + * @param[in] aMessage The message to send. + * @param[in] aRloc16 The RLOC16 to use for peer address. + * @param[in] aHandler The `ResponseHandler` callback function. + * @param[in] aContext A pointer to arbitrary context information used with @p aHandler. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageToRloc(Message &aMessage, uint16_t aRloc16, ResponseHandler aHandler, void *aContext); + + /** + * Sends a TMF message to the Leader ALOC. + * + * @param[in] aMessage The message to send. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageToLeaderAloc(Message &aMessage); + + /** + * Sends a TMF message to the Leader ALOC. + * + * @param[in] aMessage The message to send. + * @param[in] aHandler The `ResponseHandler` callback function. + * @param[in] aContext A pointer to arbitrary context information used with @p aHandler. + * + * @retval kErrorNone Successfully sent the message. + * @retval kErrorNoBufs Insufficient buffers available to send the message. + */ + Error SendMessageToLeaderAloc(Message &aMessage, ResponseHandler aHandler, void *aContext); + /** * Converts a TMF message priority to IPv6 header DSCP value. * @@ -204,6 +244,12 @@ public: private: template void HandleTmf(Msg &aMsg); + void PrepareMessageInfo(Ip6::MessageInfo &aMessageInfo) const; + Error Send(Message &aMessage, + const Ip6::Address &aDest, + bool aAllowMulticastLoop, + ResponseHandler aHandler, + void *aContext); static bool HandleResource(CoapBase &aCoapBase, const char *aUriPath, Msg &aMsg); bool HandleResource(const char *aUriPath, Msg &aMsg); static Error Filter(void *aContext, const Msg &aRxMsg); diff --git a/src/core/utils/history_tracker_client.cpp b/src/core/utils/history_tracker_client.cpp index 50e7ee7f6..3b1e2e609 100644 --- a/src/core/utils/history_tracker_client.cpp +++ b/src/core/utils/history_tracker_client.cpp @@ -79,7 +79,6 @@ Error Client::SendQuery(Tlv::Type aTlvType, uint16_t aMaxEntries, uint32_t aMaxE { Error error = kErrorNone; OwnedPtr message; - Tmf::MessageInfo messageInfo(GetInstance()); RequestTlv requestTlv; VerifyOrExit(Get().IsAttached(), error = kErrorInvalidState); @@ -94,10 +93,7 @@ Error Client::SendQuery(Tlv::Type aTlvType, uint16_t aMaxEntries, uint32_t aMaxE requestTlv.Init(aTlvType, aMaxEntries, aMaxEntryAge); SuccessOrExit(error = message->Append(requestTlv)); - messageInfo.SetSockAddrToRloc(); - messageInfo.GetPeerAddr().SetToRoutingLocator(Get().GetMeshLocalPrefix(), aRloc16); - - SuccessOrExit(error = Get().SendMessage(*message, messageInfo)); + SuccessOrExit(error = Get().SendMessageToRloc(*message, aRloc16)); message.Release(); LogInfo("Sent %s for TLV %u to 0x%04x", UriToString(), aTlvType, aRloc16); diff --git a/src/core/utils/history_tracker_server.cpp b/src/core/utils/history_tracker_server.cpp index 7f64f52e8..7b86ee5f0 100644 --- a/src/core/utils/history_tracker_server.cpp +++ b/src/core/utils/history_tracker_server.cpp @@ -211,18 +211,15 @@ exit: void Server::SendNextAnswer(Coap::Message &aAnswer, const Ip6::Address &aDestination) { - Error error = kErrorNone; - Coap::Message *nextAnswer = IsLastAnswer(aAnswer) ? nullptr : aAnswer.GetNextCoapMessage(); - Tmf::MessageInfo messageInfo(GetInstance()); + Error error = kErrorNone; + Coap::Message *nextAnswer = IsLastAnswer(aAnswer) ? nullptr : aAnswer.GetNextCoapMessage(); mAnswerQueue.Dequeue(aAnswer); - PrepareMessageInfoForDest(aDestination, messageInfo); - // When sending the message, we pass `nextAnswer` as `aContext` // to be used when invoking callback `HandleAnswerResponse()`. - error = Get().SendMessage(aAnswer, messageInfo, HandleAnswerResponse, nextAnswer); + error = Get().SendMessageAllowMulticastLoop(aAnswer, aDestination, HandleAnswerResponse, nextAnswer); if (error != kErrorNone) { @@ -238,25 +235,6 @@ void Server::SendNextAnswer(Coap::Message &aAnswer, const Ip6::Address &aDestina } } -void Server::PrepareMessageInfoForDest(const Ip6::Address &aDestination, Tmf::MessageInfo &aMessageInfo) const -{ - if (aDestination.IsMulticast()) - { - aMessageInfo.SetMulticastLoop(true); - } - - if (aDestination.IsLinkLocalUnicastOrMulticast()) - { - aMessageInfo.SetSockAddr(Get().GetLinkLocalAddress()); - } - else - { - aMessageInfo.SetSockAddrToRloc(); - } - - aMessageInfo.SetPeerAddr(aDestination); -} - void Server::HandleAnswerResponse(void *aContext, Coap::Msg *aMsg, Error aResult) { Coap::Message *nextAnswer = static_cast(aContext); diff --git a/src/core/utils/history_tracker_server.hpp b/src/core/utils/history_tracker_server.hpp index c207f9551..73e8b4105 100644 --- a/src/core/utils/history_tracker_server.hpp +++ b/src/core/utils/history_tracker_server.hpp @@ -88,7 +88,6 @@ private: void PrepareAndSendAnswers(const Ip6::Address &aDestination, const Message &aRequest); Error CheckAnswerLength(Coap::Message *&aAnswer, AnswerInfo &aInfo); void SendNextAnswer(Coap::Message &aAnswer, const Ip6::Address &aDestination); - void PrepareMessageInfoForDest(const Ip6::Address &aDestination, Tmf::MessageInfo &aMessageInfo) const; Error AppendNetworkInfo(Coap::Message *&aAnswer, AnswerInfo &aInfo, const RequestTlv &aRequestTlv); static void HandleAnswerResponse(void *aContext, Coap::Msg *aMsg, Error aResult); diff --git a/tests/nexus/test_9_2_10.cpp b/tests/nexus/test_9_2_10.cpp index b290791e3..439a991aa 100644 --- a/tests/nexus/test_9_2_10.cpp +++ b/tests/nexus/test_9_2_10.cpp @@ -276,9 +276,7 @@ void Test9_2_10(void) SuccessOrQuit(Tlv::Append(*message, MeshCoP::ChannelTlvValue(0, kSecondaryChannel))); SuccessOrQuit(Tlv::Append(*message, kSecondaryPanId)); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); diff --git a/tests/nexus/test_9_2_12.cpp b/tests/nexus/test_9_2_12.cpp index b1377e3d4..2a268b15e 100644 --- a/tests/nexus/test_9_2_12.cpp +++ b/tests/nexus/test_9_2_12.cpp @@ -235,10 +235,7 @@ void Test9_2_12(void) SuccessOrQuit(MeshCoP::Tlv::Append(*message, kAnnounceCount)); SuccessOrQuit(MeshCoP::Tlv::Append(*message, kAnnouncePeriod)); - Tmf::MessageInfo messageInfo(leader1.GetInstance()); - messageInfo.SetPeerAddr(router1.Get().GetMeshLocalRloc()); - - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageTo(*message, router1.Get().GetMeshLocalRloc())); } nexus.AdvanceTime(kResponseTime); diff --git a/tests/nexus/test_9_2_13.cpp b/tests/nexus/test_9_2_13.cpp index 5f906a534..5e136bfad 100644 --- a/tests/nexus/test_9_2_13.cpp +++ b/tests/nexus/test_9_2_13.cpp @@ -112,9 +112,7 @@ static void SendMgmtEnergyScanQuery(Node &aCommissioner, const Ip6::Address &aDe SuccessOrQuit(Tlv::Append(*message, kScanPeriod)); SuccessOrQuit(Tlv::Append(*message, kScanDuration)); - Tmf::MessageInfo messageInfo(aCommissioner.GetInstance()); - messageInfo.SetPeerAddr(aDestAddr); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageTo(*message, aDestAddr)); } void Test9_2_13(void) diff --git a/tests/nexus/test_9_2_15.cpp b/tests/nexus/test_9_2_15.cpp index 17d6d215d..b23750ea8 100644 --- a/tests/nexus/test_9_2_15.cpp +++ b/tests/nexus/test_9_2_15.cpp @@ -166,9 +166,7 @@ void SendPendingSet(Node &aCommissioner, SuccessOrQuit(Tlv::Append(*message, *aPanId)); } - Tmf::MessageInfo messageInfo(aCommissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } void Test9_2_15(void) @@ -531,9 +529,7 @@ void Test9_2_15(void) Coap::Message *message = agent.NewPriorityConfirmablePostMessage(kUriActiveGet); VerifyOrQuit(message != nullptr); - Tmf::MessageInfo messageInfo(leader.GetInstance()); - messageInfo.SetPeerAddr(dut.Get().GetMeshLocalEid()); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageTo(*message, dut.Get().GetMeshLocalEid())); } Log("---------------------------------------------------------------------------------------"); diff --git a/tests/nexus/test_9_2_16.cpp b/tests/nexus/test_9_2_16.cpp index 07745de02..138cffda0 100644 --- a/tests/nexus/test_9_2_16.cpp +++ b/tests/nexus/test_9_2_16.cpp @@ -282,9 +282,7 @@ void Test9_2_16(void) } SuccessOrQuit(Tlv::Append(*message, kDelayTimerStep3)); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -439,9 +437,7 @@ void Test9_2_16(void) SuccessOrQuit(Tlv::Append(*message, kPanIdStep11)); SuccessOrQuit(Tlv::Append(*message, kDelayTimerStep11)); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -493,9 +489,7 @@ void Test9_2_16(void) SuccessOrQuit(Tlv::Append(*message, pskc)); } - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -622,9 +616,7 @@ void Test9_2_16(void) Coap::Message *message = agent.NewPriorityConfirmablePostMessage(kUriActiveGet); VerifyOrQuit(message != nullptr); - Tmf::MessageInfo messageInfo(leader.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrTo(router2.Get().GetRloc16()); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToRloc(*message, router2.Get().GetRloc16())); } Log("---------------------------------------------------------------------------------------"); diff --git a/tests/nexus/test_9_2_18.cpp b/tests/nexus/test_9_2_18.cpp index ef183320d..b95eed534 100644 --- a/tests/nexus/test_9_2_18.cpp +++ b/tests/nexus/test_9_2_18.cpp @@ -264,9 +264,7 @@ void Test9_2_18(void) dataset.SetFrom(activeDatasetInfo); SuccessOrQuit(message->AppendBytes(dataset.GetBytes(), dataset.GetLength())); } - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kStabilizationTime); @@ -321,9 +319,7 @@ void Test9_2_18(void) dataset.SetFrom(pendingDatasetInfo1); SuccessOrQuit(message->AppendBytes(dataset.GetBytes(), dataset.GetLength())); } - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kStabilizationTime); @@ -383,9 +379,7 @@ void Test9_2_18(void) dataset.SetFrom(pendingDatasetInfo2); SuccessOrQuit(message->AppendBytes(dataset.GetBytes(), dataset.GetLength())); } - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kStabilizationTime); diff --git a/tests/nexus/test_9_2_2.cpp b/tests/nexus/test_9_2_2.cpp index 98351e3dc..e86c4f946 100644 --- a/tests/nexus/test_9_2_2.cpp +++ b/tests/nexus/test_9_2_2.cpp @@ -143,9 +143,7 @@ void Test9_2_2(void) AppendSteeringDataTlv(*message); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } /** @@ -190,9 +188,7 @@ void Test9_2_2(void) AppendSteeringDataTlv(*message); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } /** @@ -236,9 +232,7 @@ void Test9_2_2(void) SuccessOrQuit(Tlv::Append(*message, sessionId)); SuccessOrQuit(Tlv::Append(*message, kBorderAgentRloc)); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } /** @@ -274,9 +268,7 @@ void Test9_2_2(void) SuccessOrQuit(Tlv::Append(*message, kBorderAgentRloc)); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } /** @@ -309,9 +301,7 @@ void Test9_2_2(void) AppendSteeringDataTlv(*message); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } /** @@ -346,9 +336,7 @@ void Test9_2_2(void) SuccessOrQuit(Tlv::Append(*message, Mle::ChannelTlvValue(11))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } /** diff --git a/tests/nexus/test_9_2_4.cpp b/tests/nexus/test_9_2_4.cpp index 0dbe0d08a..e5746eb6d 100644 --- a/tests/nexus/test_9_2_4.cpp +++ b/tests/nexus/test_9_2_4.cpp @@ -363,9 +363,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit( Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicy, sizeof(kSecurityPolicy))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -400,9 +398,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) Coap::Message *message = agent.NewPriorityConfirmablePostMessage(kUriActiveGet); VerifyOrQuit(message != nullptr); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -470,9 +466,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit( Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicy, sizeof(kSecurityPolicy))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -541,9 +535,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit( Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicy, sizeof(kSecurityPolicy))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -611,9 +603,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit(Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicyStep10, sizeof(kSecurityPolicyStep10))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -675,9 +665,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit(Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicyStep10, sizeof(kSecurityPolicyStep10))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -738,9 +726,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit(Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicyStep10, sizeof(kSecurityPolicyStep10))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -801,9 +787,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit(Tlv::AppendTlv(*message, MeshCoP::Tlv::kSecurityPolicy, kSecurityPolicyStep10, sizeof(kSecurityPolicyStep10))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -867,9 +851,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) SuccessOrQuit( Tlv::AppendTlv(*message, MeshCoP::Tlv::kSteeringData, kSteeringDataStep18, sizeof(kSteeringDataStep18))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); @@ -932,9 +914,7 @@ void RunTest9_2_4(Topology aTopology, const char *aJsonFile) sizeof(kSecurityPolicyStep10))); SuccessOrQuit(Tlv::AppendTlv(*message, kFutureTlvType, kFutureTlvValue, sizeof(kFutureTlvValue))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------"); diff --git a/tests/nexus/test_9_2_6.cpp b/tests/nexus/test_9_2_6.cpp index 058847b96..038f32cba 100644 --- a/tests/nexus/test_9_2_6.cpp +++ b/tests/nexus/test_9_2_6.cpp @@ -220,9 +220,7 @@ void Test9_2_6(void) Tlv::Append(*message, steeringData.GetData(), steeringData.GetLength())); } - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kResponseTime); @@ -308,9 +306,7 @@ void Test9_2_6(void) SuccessOrQuit(Tlv::Append(*message, kNetworkName)); SuccessOrQuit(Tlv::Append(*message, AsCoreType(reinterpret_cast(kPskc)))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kResponseTime); @@ -516,9 +512,7 @@ void Test9_2_6(void) SuccessOrQuit(Tlv::Append(*message, kDelayTimerTime)); SuccessOrQuit(Tlv::Append(*message, Mle::ChannelTlvValue(kSecondaryChannel))); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kResponseTime); diff --git a/tests/nexus/test_9_2_7.cpp b/tests/nexus/test_9_2_7.cpp index a3c327154..a8d54405b 100644 --- a/tests/nexus/test_9_2_7.cpp +++ b/tests/nexus/test_9_2_7.cpp @@ -291,9 +291,7 @@ void Test9_2_7(void) SuccessOrQuit(updatedDataset.WriteTlvsFrom(datasetInfo)); SuccessOrQuit(message->AppendBytes(updatedDataset.GetBytes(), updatedDataset.GetLength())); - Tmf::MessageInfo messageInfo(router.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } nexus.AdvanceTime(kResponseTime); @@ -417,9 +415,7 @@ void Test9_2_7(void) SuccessOrQuit(message->AppendBytes(dataset.GetBytes(), dataset.GetLength())); - Tmf::MessageInfo messageInfo(router.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } // Wait for acceptance and retransmissions if needed @@ -550,9 +546,7 @@ void Test9_2_7(void) SuccessOrQuit(Tlv::Append(*message, MeshCoP::ChannelTlvValue(0, kSecondaryChannel))); SuccessOrQuit(Tlv::Append(*message, kPanIdStep17)); - Tmf::MessageInfo messageInfo(commissioner.GetInstance()); - messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc(); - SuccessOrQuit(agent.SendMessage(*message, messageInfo)); + SuccessOrQuit(agent.SendMessageToLeaderAloc(*message)); } Log("---------------------------------------------------------------------------------------");