diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 903735444..150297276 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -972,6 +972,11 @@ void Mle::SetRloc16(uint16_t aRloc16) } } +void Mle::SetLeaderData(const LeaderData &aLeaderData) +{ + SetLeaderData(aLeaderData.GetPartitionId(), aLeaderData.GetWeighting(), aLeaderData.GetLeaderRouterId()); +} + void Mle::SetLeaderData(uint32_t aPartitionId, uint8_t aWeighting, uint8_t aLeaderRouterId) { if (mLeaderData.GetPartitionId() != aPartitionId) @@ -2821,7 +2826,7 @@ void Mle::HandleAdvertisement(RxInfo &aRxInfo) if ((leaderData.GetPartitionId() != mLeaderData.GetPartitionId()) || (leaderData.GetLeaderRouterId() != GetLeaderId())) { - SetLeaderData(leaderData.GetPartitionId(), leaderData.GetWeighting(), leaderData.GetLeaderRouterId()); + SetLeaderData(leaderData); #if OPENTHREAD_FTD SuccessOrExit(error = Get().ReadAndProcessRouteTlvOnFed(aRxInfo, mParent.GetRouterId())); @@ -2920,7 +2925,7 @@ Error Mle::HandleLeaderData(RxInfo &aRxInfo) { if (IsChild()) { - SetLeaderData(leaderData.GetPartitionId(), leaderData.GetWeighting(), leaderData.GetLeaderRouterId()); + SetLeaderData(leaderData); mRetrieveNewNetworkData = true; } else @@ -3397,7 +3402,7 @@ void Mle::HandleChildIdResponse(RxInfo &aRxInfo) SetStateDetached(); - SetLeaderData(leaderData.GetPartitionId(), leaderData.GetWeighting(), leaderData.GetLeaderRouterId()); + SetLeaderData(leaderData); #if OPENTHREAD_FTD SuccessOrExit(error = Get().ReadAndProcessRouteTlvOnFed(aRxInfo, RouterIdFromRloc16(sourceAddress))); diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 873e33835..d3403650d 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -1257,6 +1257,7 @@ private: void SetStateDetached(void); void SetStateChild(uint16_t aRloc16); void SetLeaderData(uint32_t aPartitionId, uint8_t aWeighting, uint8_t aLeaderRouterId); + void SetLeaderData(const LeaderData &aLeaderData); void InformPreviousChannel(void); bool IsAnnounceAttach(void) const { return mAlternatePanId != Mac::kPanIdBroadcast; } void ScheduleMessageTransmissionTimer(void); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 26c6541e7..8578d1de1 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -952,7 +952,7 @@ Error MleRouter::HandleLinkAccept(RxInfo &aRxInfo, bool aRequest) VerifyOrExit(GetRloc16() == address16, error = kErrorDrop); SuccessOrExit(error = aRxInfo.mMessage.ReadLeaderDataTlv(leaderData)); - SetLeaderData(leaderData.GetPartitionId(), leaderData.GetWeighting(), leaderData.GetLeaderRouterId()); + SetLeaderData(leaderData); mRouterTable.Clear(); SuccessOrExit(error = aRxInfo.mMessage.ReadRouteTlv(routeTlv));