mirror of
https://github.com/espressif/openthread.git
synced 2026-07-30 07:37:46 +00:00
[mle] enhance RLOC and ALOC address generation (#10391)
This commit enhances the generation of RLOC and ALOC addresses in the
`Mle` class.
Methods retrieving RLOC/ALOC addresses no longer return an `Error` and
are now `void`. The previous check for a valid `GetRloc16()` value,
which returned `kErrorDetach` if unset, is removed because this
scenario only occurred before the device's initial attachment.
Post-attachment, the RLOC16 remains valid even if the device is
detached. This change simplifies the code since RLOC/ALOC address
retrieval happens after the initial attachment.
Additional enhancements include:
- Changing the input parameter order in `GetCommissionerAloc()` to
match `GetServiceAloc()`.
- Using `Ip6::Address::SetToRoutingLocator()` to construct RLOC
addresses, harmonizing address generation and improving code
readability.
This commit is contained in:
@@ -79,7 +79,13 @@ exit:
|
||||
|
||||
otError otThreadGetLeaderRloc(otInstance *aInstance, otIp6Address *aLeaderRloc)
|
||||
{
|
||||
return AsCoreType(aInstance).Get<Mle::MleRouter>().GetLeaderAddress(AsCoreType(aLeaderRloc));
|
||||
Error error = kErrorNone;
|
||||
|
||||
VerifyOrExit(AsCoreType(aInstance).Get<Mle::Mle>().GetRloc16() != Mac::kShortAddrInvalid, error = kErrorDetached);
|
||||
AsCoreType(aInstance).Get<Mle::Mle>().GetLeaderRloc(AsCoreType(aLeaderRloc));
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
otLinkModeConfig otThreadGetLinkMode(otInstance *aInstance)
|
||||
@@ -189,7 +195,13 @@ const otIp6Address *otThreadGetRealmLocalAllThreadNodesMulticastAddress(otInstan
|
||||
|
||||
otError otThreadGetServiceAloc(otInstance *aInstance, uint8_t aServiceId, otIp6Address *aServiceAloc)
|
||||
{
|
||||
return AsCoreType(aInstance).Get<Mle::MleRouter>().GetServiceAloc(aServiceId, AsCoreType(aServiceAloc));
|
||||
Error error = kErrorNone;
|
||||
|
||||
VerifyOrExit(AsCoreType(aInstance).Get<Mle::Mle>().GetRloc16() != Mac::kShortAddrInvalid, error = kErrorDetached);
|
||||
AsCoreType(aInstance).Get<Mle::Mle>().GetServiceAloc(aServiceId, AsCoreType(aServiceAloc));
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
const char *otThreadGetNetworkName(otInstance *aInstance)
|
||||
|
||||
@@ -200,7 +200,7 @@ void BorderAgent::HandleCoapResponse(const ForwardContext &aForwardContext,
|
||||
|
||||
SuccessOrExit(error = Tlv::Find<CommissionerSessionIdTlv>(*aResponse, sessionId));
|
||||
|
||||
IgnoreError(Get<Mle::MleRouter>().GetCommissionerAloc(mCommissionerAloc.GetAddress(), sessionId));
|
||||
Get<Mle::Mle>().GetCommissionerAloc(sessionId, mCommissionerAloc.GetAddress());
|
||||
Get<ThreadNetif>().AddUnicastAddress(mCommissionerAloc);
|
||||
IgnoreError(Get<Ip6::Udp>().AddReceiver(mUdpReceiver));
|
||||
|
||||
@@ -561,7 +561,7 @@ Error BorderAgent::ForwardToLeader(const Coap::Message &aMessage, const Ip6::Mes
|
||||
SuccessOrExit(error = message->AppendBytesFromMessage(aMessage, aMessage.GetOffset(),
|
||||
aMessage.GetLength() - aMessage.GetOffset()));
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
messageInfo.SetSockPortToTmf();
|
||||
|
||||
SuccessOrExit(error =
|
||||
|
||||
@@ -639,7 +639,7 @@ Error Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8_t
|
||||
SuccessOrExit(error = message->AppendBytes(aTlvs, aLength));
|
||||
}
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo,
|
||||
Commissioner::HandleMgmtCommissionerGetResponse, this));
|
||||
|
||||
@@ -710,7 +710,7 @@ Error Commissioner::SendMgmtCommissionerSetRequest(const CommissioningDataset &a
|
||||
SuccessOrExit(error = message->AppendBytes(aTlvs, aLength));
|
||||
}
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo,
|
||||
Commissioner::HandleMgmtCommissionerSetResponse, this));
|
||||
|
||||
@@ -763,7 +763,7 @@ Error Commissioner::SendPetition(void)
|
||||
|
||||
SuccessOrExit(error = Tlv::Append<CommissionerIdTlv>(*message, mCommissionerId));
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
SuccessOrExit(
|
||||
error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, Commissioner::HandleLeaderPetitionResponse, this));
|
||||
|
||||
@@ -811,7 +811,7 @@ void Commissioner::HandleLeaderPetitionResponse(Coap::Message *aMessage
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
IgnoreError(Get<Mle::MleRouter>().GetCommissionerAloc(mCommissionerAloc.GetAddress(), mSessionId));
|
||||
Get<Mle::Mle>().GetCommissionerAloc(mSessionId, mCommissionerAloc.GetAddress());
|
||||
Get<ThreadNetif>().AddUnicastAddress(mCommissionerAloc);
|
||||
|
||||
SetState(kStateActive);
|
||||
@@ -850,7 +850,7 @@ void Commissioner::SendKeepAlive(uint16_t aSessionId)
|
||||
|
||||
SuccessOrExit(error = Tlv::Append<CommissionerSessionIdTlv>(*message, aSessionId));
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo,
|
||||
Commissioner::HandleLeaderKeepAliveResponse, this));
|
||||
|
||||
|
||||
@@ -483,7 +483,7 @@ Error DatasetManager::SendSetRequest(const Dataset &aDataset)
|
||||
VerifyOrExit(message != nullptr, error = kErrorNoBufs);
|
||||
|
||||
SuccessOrExit(error = message->AppendBytes(aDataset.GetBytes(), aDataset.GetLength()));
|
||||
IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleMgmtSetResponse, this));
|
||||
mMgmtPending = true;
|
||||
@@ -708,7 +708,7 @@ Error DatasetManager::SendGetRequest(const Dataset::Components &aDatasetComponen
|
||||
SuccessOrExit(error = Tlv::AppendTlv(*message, Tlv::kGet, tlvList.GetArrayBuffer(), tlvList.GetLength()));
|
||||
}
|
||||
|
||||
IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
|
||||
if (aAddress != nullptr)
|
||||
{
|
||||
|
||||
@@ -241,7 +241,7 @@ Error DatasetManager::HandleSetOrReplace(MgmtCommand aCommand,
|
||||
Ip6::Address destination;
|
||||
|
||||
SuccessOrExit(Get<NetworkData::Leader>().FindCommissioningSessionId(localSessionId));
|
||||
SuccessOrExit(Get<Mle::MleRouter>().GetCommissionerAloc(destination, localSessionId));
|
||||
Get<Mle::Mle>().GetCommissionerAloc(localSessionId, destination);
|
||||
Get<Leader>().SendDatasetChanged(destination);
|
||||
}
|
||||
|
||||
|
||||
@@ -101,10 +101,10 @@ void Agent::UpdateService(void)
|
||||
|
||||
if (error == kErrorNone)
|
||||
{
|
||||
uint16_t rloc = Mle::kAloc16NeighborDiscoveryAgentStart + lowpanContext.mContextId - 1;
|
||||
uint16_t aloc16 = Mle::kAloc16NeighborDiscoveryAgentStart + lowpanContext.mContextId - 1;
|
||||
|
||||
mAloc.InitAsThreadOrigin();
|
||||
mAloc.GetAddress().SetToAnycastLocator(Get<Mle::MleRouter>().GetMeshLocalPrefix(), rloc);
|
||||
mAloc.GetAddress().SetToAnycastLocator(Get<Mle::MleRouter>().GetMeshLocalPrefix(), aloc16);
|
||||
mAloc.mMeshLocal = true;
|
||||
Get<ThreadNetif>().AddUnicastAddress(mAloc);
|
||||
ExitNow();
|
||||
|
||||
@@ -822,7 +822,7 @@ void AddressResolver::HandleTmf<kUriAddressError>(Coap::Message &aMessage, const
|
||||
|
||||
if (child.RemoveIp6Address(target) == kErrorNone)
|
||||
{
|
||||
SuccessOrExit(error = Get<Mle::Mle>().GetLocatorAddress(destination, child.GetRloc16()));
|
||||
destination.SetToRoutingLocator(Get<Mle::Mle>().GetMeshLocalPrefix(), child.GetRloc16());
|
||||
|
||||
SendAddressError(target, meshLocalIid, &destination);
|
||||
ExitNow();
|
||||
|
||||
@@ -512,7 +512,7 @@ void DuaManager::PerformNextRegistration(void)
|
||||
uint8_t pbbrServiceId;
|
||||
|
||||
SuccessOrExit(error = Get<BackboneRouter::Leader>().GetServiceId(pbbrServiceId));
|
||||
SuccessOrExit(error = mle.GetServiceAloc(pbbrServiceId, messageInfo.GetPeerAddr()));
|
||||
mle.GetServiceAloc(pbbrServiceId, messageInfo.GetPeerAddr());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -654,8 +654,7 @@ void MeshForwarder::SendDestinationUnreachable(uint16_t aMeshSource, const Ip6::
|
||||
{
|
||||
Ip6::MessageInfo messageInfo;
|
||||
|
||||
messageInfo.GetPeerAddr() = Get<Mle::MleRouter>().GetMeshLocalRloc();
|
||||
messageInfo.GetPeerAddr().GetIid().SetLocator(aMeshSource);
|
||||
messageInfo.GetPeerAddr().SetToRoutingLocator(Get<Mle::Mle>().GetMeshLocalPrefix(), aMeshSource);
|
||||
|
||||
IgnoreError(Get<Ip6::Icmp>().SendError(Ip6::Icmp::Header::kTypeDstUnreach,
|
||||
Ip6::Icmp::Header::kCodeDstUnreachNoRoute, messageInfo, aIp6Headers));
|
||||
|
||||
+7
-27
@@ -998,40 +998,21 @@ void Mle::SetLeaderData(uint32_t aPartitionId, uint8_t aWeighting, uint8_t aLead
|
||||
mLeaderData.SetLeaderRouterId(aLeaderRouterId);
|
||||
}
|
||||
|
||||
Error Mle::GetLeaderAddress(Ip6::Address &aAddress) const
|
||||
void Mle::GetLeaderRloc(Ip6::Address &aAddress) const
|
||||
{
|
||||
Error error = kErrorNone;
|
||||
|
||||
VerifyOrExit(GetRloc16() != Mac::kShortAddrInvalid, error = kErrorDetached);
|
||||
|
||||
aAddress.SetToRoutingLocator(mMeshLocalPrefix, GetLeaderRloc16());
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
Error Mle::GetLocatorAddress(Ip6::Address &aAddress, uint16_t aLocator) const
|
||||
void Mle::GetLeaderAloc(Ip6::Address &aAddress) const { aAddress.SetToAnycastLocator(mMeshLocalPrefix, kAloc16Leader); }
|
||||
|
||||
void Mle::GetCommissionerAloc(uint16_t aSessionId, Ip6::Address &aAddress) const
|
||||
{
|
||||
Error error = kErrorNone;
|
||||
|
||||
VerifyOrExit(GetRloc16() != Mac::kShortAddrInvalid, error = kErrorDetached);
|
||||
|
||||
memcpy(&aAddress, &mMeshLocalRloc.GetAddress(), 14);
|
||||
aAddress.GetIid().SetLocator(aLocator);
|
||||
|
||||
exit:
|
||||
return error;
|
||||
aAddress.SetToAnycastLocator(mMeshLocalPrefix, CommissionerAloc16FromId(aSessionId));
|
||||
}
|
||||
|
||||
Error Mle::GetServiceAloc(uint8_t aServiceId, Ip6::Address &aAddress) const
|
||||
void Mle::GetServiceAloc(uint8_t aServiceId, Ip6::Address &aAddress) const
|
||||
{
|
||||
Error error = kErrorNone;
|
||||
|
||||
VerifyOrExit(GetRloc16() != Mac::kShortAddrInvalid, error = kErrorDetached);
|
||||
aAddress.SetToAnycastLocator(mMeshLocalPrefix, ServiceAlocFromId(aServiceId));
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
const LeaderData &Mle::GetLeaderData(void)
|
||||
@@ -3884,8 +3865,7 @@ void Mle::InformPreviousParent(void)
|
||||
SuccessOrExit(error = message->SetLength(0));
|
||||
|
||||
messageInfo.SetSockAddr(GetMeshLocalEid());
|
||||
messageInfo.SetPeerAddr(GetMeshLocalRloc());
|
||||
messageInfo.GetPeerAddr().GetIid().SetLocator(mPreviousParentRloc);
|
||||
messageInfo.GetPeerAddr().SetToRoutingLocator(mMeshLocalPrefix, mPreviousParentRloc);
|
||||
|
||||
SuccessOrExit(error = Get<Ip6::Ip6>().SendDatagram(*message, messageInfo, Ip6::kProtoNone));
|
||||
|
||||
|
||||
+9
-36
@@ -558,51 +558,36 @@ public:
|
||||
/**
|
||||
* Retrieves the Leader's RLOC.
|
||||
*
|
||||
* @param[out] aAddress A reference to the Leader's RLOC.
|
||||
*
|
||||
* @retval kErrorNone Successfully retrieved the Leader's RLOC.
|
||||
* @retval kErrorDetached The Thread interface is not currently attached to a Thread Partition.
|
||||
* @param[out] aAddress A reference to an address to return the Leader's RLOC.
|
||||
*
|
||||
*/
|
||||
Error GetLeaderAddress(Ip6::Address &aAddress) const;
|
||||
void GetLeaderRloc(Ip6::Address &aAddress) const;
|
||||
|
||||
/**
|
||||
* Retrieves the Leader's ALOC.
|
||||
*
|
||||
* @param[out] aAddress A reference to the Leader's ALOC.
|
||||
*
|
||||
* @retval kErrorNone Successfully retrieved the Leader's ALOC.
|
||||
* @retval kErrorDetached The Thread interface is not currently attached to a Thread Partition.
|
||||
* @param[out] aAddress A reference to an address to return the Leader's ALOC.
|
||||
*
|
||||
*/
|
||||
Error GetLeaderAloc(Ip6::Address &aAddress) const { return GetLocatorAddress(aAddress, kAloc16Leader); }
|
||||
void GetLeaderAloc(Ip6::Address &aAddress) const;
|
||||
|
||||
/**
|
||||
* Computes the Commissioner's ALOC.
|
||||
* Retrieves the Commissioner's ALOC for a given session ID.
|
||||
*
|
||||
* @param[out] aAddress A reference to the Commissioner's ALOC.
|
||||
* @param[in] aSessionId Commissioner session id.
|
||||
*
|
||||
* @retval kErrorNone Successfully retrieved the Commissioner's ALOC.
|
||||
* @retval kErrorDetached The Thread interface is not currently attached to a Thread Partition.
|
||||
* @param[out] aAddress A reference to an address to return the Commissioner's ALOC.
|
||||
*
|
||||
*/
|
||||
Error GetCommissionerAloc(Ip6::Address &aAddress, uint16_t aSessionId) const
|
||||
{
|
||||
return GetLocatorAddress(aAddress, CommissionerAloc16FromId(aSessionId));
|
||||
}
|
||||
void GetCommissionerAloc(uint16_t aSessionId, Ip6::Address &aAddress) const;
|
||||
|
||||
/**
|
||||
* Retrieves the Service ALOC for given Service ID.
|
||||
*
|
||||
* @param[in] aServiceId Service ID to get ALOC for.
|
||||
* @param[out] aAddress A reference to the Service ALOC.
|
||||
*
|
||||
* @retval kErrorNone Successfully retrieved the Service ALOC.
|
||||
* @retval kErrorDetached The Thread interface is not currently attached to a Thread Partition.
|
||||
* @param[out] aAddress A reference to an address to return the Service ALOC.
|
||||
*
|
||||
*/
|
||||
Error GetServiceAloc(uint8_t aServiceId, Ip6::Address &aAddress) const;
|
||||
void GetServiceAloc(uint8_t aServiceId, Ip6::Address &aAddress) const;
|
||||
|
||||
/**
|
||||
* Returns the most recently received Leader Data.
|
||||
@@ -677,18 +662,6 @@ public:
|
||||
*/
|
||||
void RequestShorterChildIdRequest(void);
|
||||
|
||||
/**
|
||||
* Gets the RLOC or ALOC of a given RLOC16 or ALOC16.
|
||||
*
|
||||
* @param[out] aAddress A reference to the RLOC or ALOC.
|
||||
* @param[in] aLocator RLOC16 or ALOC16.
|
||||
*
|
||||
* @retval kErrorNone If got the RLOC or ALOC successfully.
|
||||
* @retval kErrorDetached If device is detached.
|
||||
*
|
||||
*/
|
||||
Error GetLocatorAddress(Ip6::Address &aAddress, uint16_t aLocator) const;
|
||||
|
||||
/**
|
||||
* Schedules a Child Update Request.
|
||||
*
|
||||
|
||||
@@ -450,7 +450,7 @@ void MleRouter::SetStateRouterOrLeader(DeviceRole aRole, uint16_t aRloc16, Leade
|
||||
|
||||
if (aRole == kRoleLeader)
|
||||
{
|
||||
IgnoreError(GetLeaderAloc(mLeaderAloc.GetAddress()));
|
||||
GetLeaderAloc(mLeaderAloc.GetAddress());
|
||||
Get<ThreadNetif>().AddUnicastAddress(mLeaderAloc);
|
||||
Get<TimeTicker>().RegisterReceiver(TimeTicker::kMleRouter);
|
||||
Get<NetworkData::Leader>().Start(aStartMode);
|
||||
@@ -3293,7 +3293,7 @@ Error MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus)
|
||||
SuccessOrExit(error = Tlv::Append<XtalAccuracyTlv>(*message, otPlatTimeGetXtalAccuracy()));
|
||||
#endif
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc();
|
||||
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, &HandleAddressSolicitResponse, this));
|
||||
mAddressSolicitPending = true;
|
||||
@@ -3317,7 +3317,7 @@ void MleRouter::SendAddressRelease(void)
|
||||
SuccessOrExit(error = Tlv::Append<ThreadRloc16Tlv>(*message, Rloc16FromRouterId(mRouterId)));
|
||||
SuccessOrExit(error = Tlv::Append<ThreadExtMacAddressTlv>(*message, Get<Mac::Mac>().GetExtAddress()));
|
||||
|
||||
SuccessOrExit(error = messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderRloc();
|
||||
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo));
|
||||
|
||||
|
||||
@@ -401,7 +401,7 @@ Error MlrManager::SendMlrMessage(const Ip6::Address *aAddresses,
|
||||
uint8_t pbbrServiceId;
|
||||
|
||||
SuccessOrExit(error = Get<BackboneRouter::Leader>().GetServiceId(pbbrServiceId));
|
||||
SuccessOrExit(error = mle.GetServiceAloc(pbbrServiceId, messageInfo.GetPeerAddr()));
|
||||
mle.GetServiceAloc(pbbrServiceId, messageInfo.GetPeerAddr());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -216,7 +216,7 @@ Error Notifier::SendServerDataNotification(uint16_t aOldRloc16, const NetworkDat
|
||||
SuccessOrExit(error = Tlv::Append<ThreadRloc16Tlv>(*message, aOldRloc16));
|
||||
}
|
||||
|
||||
IgnoreError(messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc());
|
||||
messageInfo.SetSockAddrToRlocPeerAddrToLeaderAloc();
|
||||
SuccessOrExit(error = Get<Tmf::Agent>().SendMessage(*message, messageInfo, HandleCoapResponse, this));
|
||||
|
||||
LogInfo("Sent %s", UriToString<kUriServerData>());
|
||||
|
||||
@@ -182,8 +182,9 @@ Error Manager::GetNextDnsSrpAnycastInfo(Iterator &aIterator, DnsSrpAnycast::Info
|
||||
} while (tlv->GetServiceDataLength() < sizeof(DnsSrpAnycast::ServiceData));
|
||||
|
||||
tlv->GetServiceData(serviceData);
|
||||
aInfo.mAnycastAddress.SetToAnycastLocator(Get<Mle::Mle>().GetMeshLocalPrefix(),
|
||||
Mle::ServiceAlocFromId(tlv->GetServiceId()));
|
||||
|
||||
Get<Mle::Mle>().GetServiceAloc(tlv->GetServiceId(), aInfo.mAnycastAddress);
|
||||
|
||||
aInfo.mSequenceNumber =
|
||||
reinterpret_cast<const DnsSrpAnycast::ServiceData *>(serviceData.GetBytes())->GetSequenceNumber();
|
||||
|
||||
|
||||
@@ -44,16 +44,16 @@ namespace Tmf {
|
||||
|
||||
void MessageInfo::SetSockAddrToRloc(void) { SetSockAddr(Get<Mle::MleRouter>().GetMeshLocalRloc()); }
|
||||
|
||||
Error MessageInfo::SetSockAddrToRlocPeerAddrToLeaderAloc(void)
|
||||
void MessageInfo::SetSockAddrToRlocPeerAddrToLeaderAloc(void)
|
||||
{
|
||||
SetSockAddrToRloc();
|
||||
return Get<Mle::MleRouter>().GetLeaderAloc(GetPeerAddr());
|
||||
Get<Mle::MleRouter>().GetLeaderAloc(GetPeerAddr());
|
||||
}
|
||||
|
||||
Error MessageInfo::SetSockAddrToRlocPeerAddrToLeaderRloc(void)
|
||||
void MessageInfo::SetSockAddrToRlocPeerAddrToLeaderRloc(void)
|
||||
{
|
||||
SetSockAddrToRloc();
|
||||
return Get<Mle::MleRouter>().GetLeaderAddress(GetPeerAddr());
|
||||
Get<Mle::MleRouter>().GetLeaderRloc(GetPeerAddr());
|
||||
}
|
||||
|
||||
void MessageInfo::SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(void)
|
||||
@@ -65,8 +65,7 @@ void MessageInfo::SetSockAddrToRlocPeerAddrToRealmLocalAllRoutersMulticast(void)
|
||||
void MessageInfo::SetSockAddrToRlocPeerAddrTo(uint16_t aRloc16)
|
||||
{
|
||||
SetSockAddrToRloc();
|
||||
SetPeerAddr(Get<Mle::MleRouter>().GetMeshLocalRloc());
|
||||
GetPeerAddr().GetIid().SetLocator(aRloc16);
|
||||
GetPeerAddr().SetToRoutingLocator(Get<Mle::Mle>().GetMeshLocalPrefix(), aRloc16);
|
||||
}
|
||||
|
||||
void MessageInfo::SetSockAddrToRlocPeerAddrTo(const Ip6::Address &aPeerAddress)
|
||||
|
||||
@@ -99,20 +99,14 @@ public:
|
||||
/**
|
||||
* 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);
|
||||
void SetSockAddrToRlocPeerAddrToLeaderAloc(void);
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
q *
|
||||
*/
|
||||
Error SetSockAddrToRlocPeerAddrToLeaderRloc(void);
|
||||
void SetSockAddrToRlocPeerAddrToLeaderRloc(void);
|
||||
|
||||
/**
|
||||
* Sets the local socket address to RLOC address and the peer socket address to realm-local all
|
||||
|
||||
@@ -98,8 +98,7 @@ Error MeshDiag::DiscoverTopology(const DiscoverConfig &aConfig, DiscoverCallback
|
||||
continue;
|
||||
}
|
||||
|
||||
destination = Get<Mle::MleRouter>().GetMeshLocalRloc();
|
||||
destination.GetIid().SetLocator(Mle::Rloc16FromRouterId(routerId));
|
||||
destination.SetToRoutingLocator(Get<Mle::Mle>().GetMeshLocalPrefix(), Mle::Rloc16FromRouterId(routerId));
|
||||
|
||||
SuccessOrExit(error = Get<Client>().SendCommand(kUriDiagnosticGetRequest, Message::kPriorityLow, destination,
|
||||
tlvs, tlvsLength, HandleDiagGetResponse, this));
|
||||
@@ -176,8 +175,7 @@ Error MeshDiag::SendQuery(uint16_t aRloc16, const uint8_t *aTlvs, uint8_t aTlvsL
|
||||
VerifyOrExit(Mle::IsActiveRouter(aRloc16), error = kErrorInvalidArgs);
|
||||
VerifyOrExit(Get<RouterTable>().IsAllocated(Mle::RouterIdFromRloc16(aRloc16)), error = kErrorNotFound);
|
||||
|
||||
destination = Get<Mle::MleRouter>().GetMeshLocalRloc();
|
||||
destination.GetIid().SetLocator(aRloc16);
|
||||
destination.SetToRoutingLocator(Get<Mle::Mle>().GetMeshLocalPrefix(), aRloc16);
|
||||
|
||||
SuccessOrExit(error = Get<Client>().SendCommand(kUriDiagnosticGetQuery, Message::kPriorityNormal, destination,
|
||||
aTlvs, aTlvsLength));
|
||||
|
||||
Reference in New Issue
Block a user