diff --git a/src/core/backbone_router/bbr_manager.cpp b/src/core/backbone_router/bbr_manager.cpp index 8e61f10b1..43519f349 100644 --- a/src/core/backbone_router/bbr_manager.cpp +++ b/src/core/backbone_router/bbr_manager.cpp @@ -407,6 +407,7 @@ void Manager::HandleDuaRegistration(const Coap::Message &aMessage, const Ip6::Me #endif VerifyOrExit(isPrimary, status = ThreadStatusTlv::kDuaNotPrimary); + VerifyOrExit(Get().HasDomainPrefix(), status = ThreadStatusTlv::kDuaGeneralFailure); VerifyOrExit(Get().IsDomainUnicast(target), status = ThreadStatusTlv::kDuaInvalid); hasLastTransactionTime = (Tlv::Find(aMessage, lastTransactionTime) == OT_ERROR_NONE); diff --git a/src/core/thread/dua_manager.cpp b/src/core/thread/dua_manager.cpp index 5941bda7f..a9503a1c7 100644 --- a/src/core/thread/dua_manager.cpp +++ b/src/core/thread/dua_manager.cpp @@ -326,10 +326,12 @@ void DuaManager::HandleNotifierEvents(Events aEvents) #endif } +#if OPENTHREAD_CONFIG_DUA_ENABLE if (aEvents.ContainsAny(kEventIp6AddressAdded)) { - mRegistrationTask.Post(); + UpdateRegistrationDelay(kNewDuaRegistrationDelay); } +#endif } void DuaManager::HandleBackboneRouterPrimaryUpdate(BackboneRouter::Leader::State aState, diff --git a/src/core/thread/dua_manager.hpp b/src/core/thread/dua_manager.hpp index be31a2d42..ac46c6b6c 100644 --- a/src/core/thread/dua_manager.hpp +++ b/src/core/thread/dua_manager.hpp @@ -170,6 +170,7 @@ private: enum { kNewRouterRegistrationDelay = 3, ///< Delay (in seconds) for waiting link establishment for a new Router. + kNewDuaRegistrationDelay = 1, ///< Delay (in seconds) for newly added DUA. }; #if OPENTHREAD_CONFIG_DUA_ENABLE