From 3c77c52136b7706c86d0c368dadc035db2cd4afc Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Wed, 6 May 2026 22:26:18 -0700 Subject: [PATCH] [mlr] extract registration criteria into `ShouldRegister()` helper (#13073) This commit introduces a new private helper method, `ShouldRegister()`, to the `Manager` class. This method consolidates the checks required to determine if the device should perform MLR. --- src/core/thread/mlr_manager.cpp | 21 ++++++++++++++++----- src/core/thread/mlr_manager.hpp | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/core/thread/mlr_manager.cpp b/src/core/thread/mlr_manager.cpp index 5d63277f0..9064a5339 100644 --- a/src/core/thread/mlr_manager.cpp +++ b/src/core/thread/mlr_manager.cpp @@ -209,16 +209,28 @@ void Manager::UpdateTimeTickerRegistration(void) } } +bool Manager::ShouldRegister(void) const +{ + bool shouldRegister = false; + + VerifyOrExit(Get().IsFullThreadDevice() || Get().GetParent().IsThreadVersion1p1()); + VerifyOrExit(Get().HasPrimary()); + + shouldRegister = true; + +exit: + return shouldRegister; +} + void Manager::Send(void) { Error error; AddressArray addresses; VerifyOrExit(!mPending, error = kErrorBusy); + VerifyOrExit(Get().IsAttached(), error = kErrorInvalidState); - VerifyOrExit(Get().IsFullThreadDevice() || Get().GetParent().IsThreadVersion1p1(), - error = kErrorInvalidState); - VerifyOrExit(Get().HasPrimary(), error = kErrorInvalidState); + VerifyOrExit(ShouldRegister(), error = kErrorInvalidState); #if OPENTHREAD_CONFIG_MLR_ENABLE // Append Netif multicast addresses @@ -568,8 +580,7 @@ void Manager::Reregister(void) void Manager::UpdateReregistrationDelay(bool aRereg) { - bool needSend = (Get().IsFullThreadDevice() || Get().GetParent().IsThreadVersion1p1()) && - Get().HasPrimary(); + bool needSend = ShouldRegister(); if (!needSend) { diff --git a/src/core/thread/mlr_manager.hpp b/src/core/thread/mlr_manager.hpp index a726753a6..9e98324f8 100644 --- a/src/core/thread/mlr_manager.hpp +++ b/src/core/thread/mlr_manager.hpp @@ -150,8 +150,8 @@ private: void AddUnique(const Ip6::Address &aAddress); }; - void HandleNotifierEvents(Events aEvents); - + void HandleNotifierEvents(Events aEvents); + bool ShouldRegister(void) const; void Send(void); Error SendMessage(const Ip6::Address *aAddresses, uint8_t aAddressNum,