diff --git a/src/core/meshcop/dataset.cpp b/src/core/meshcop/dataset.cpp index 0ef145cce..6f8b05c2c 100644 --- a/src/core/meshcop/dataset.cpp +++ b/src/core/meshcop/dataset.cpp @@ -509,7 +509,14 @@ void Dataset::RemoveTlv(Tlv *aTlv) } } -Error Dataset::ApplyConfiguration(Instance &aInstance, bool *aIsNetworkKeyUpdated) const +Error Dataset::ApplyConfiguration(Instance &aInstance) const +{ + bool isNetworkKeyUpdated; + + return ApplyConfiguration(aInstance, isNetworkKeyUpdated); +} + +Error Dataset::ApplyConfiguration(Instance &aInstance, bool &aIsNetworkKeyUpdated) const { Mac::Mac &mac = aInstance.Get(); KeyManager &keyManager = aInstance.Get(); @@ -517,10 +524,7 @@ Error Dataset::ApplyConfiguration(Instance &aInstance, bool *aIsNetworkKeyUpdate VerifyOrExit(IsValid(), error = kErrorParse); - if (aIsNetworkKeyUpdated) - { - *aIsNetworkKeyUpdated = false; - } + aIsNetworkKeyUpdated = false; for (const Tlv *cur = GetTlvsStart(); cur < GetTlvsEnd(); cur = cur->GetNext()) { @@ -559,9 +563,9 @@ Error Dataset::ApplyConfiguration(Instance &aInstance, bool *aIsNetworkKeyUpdate keyManager.GetNetworkKey(networkKey); - if (aIsNetworkKeyUpdated && (cur->ReadValueAs() != networkKey)) + if (cur->ReadValueAs() != networkKey) { - *aIsNetworkKeyUpdated = true; + aIsNetworkKeyUpdated = true; } keyManager.SetNetworkKey(cur->ReadValueAs()); @@ -569,11 +573,9 @@ Error Dataset::ApplyConfiguration(Instance &aInstance, bool *aIsNetworkKeyUpdate } #if OPENTHREAD_FTD - case Tlv::kPskc: keyManager.SetPskc(cur->ReadValueAs()); break; - #endif case Tlv::kMeshLocalPrefix: diff --git a/src/core/meshcop/dataset.hpp b/src/core/meshcop/dataset.hpp index 5fbc7998e..38b2a0c1f 100644 --- a/src/core/meshcop/dataset.hpp +++ b/src/core/meshcop/dataset.hpp @@ -886,13 +886,24 @@ public: * Applies the Active or Pending Dataset to the Thread interface. * * @param[in] aInstance A reference to the OpenThread instance. - * @param[out] aIsNetworkKeyUpdated A pointer to where to place whether network key was updated. * * @retval kErrorNone Successfully applied configuration. * @retval kErrorParse The dataset has at least one TLV with invalid format. * */ - Error ApplyConfiguration(Instance &aInstance, bool *aIsNetworkKeyUpdated = nullptr) const; + Error ApplyConfiguration(Instance &aInstance) const; + + /** + * Applies the Active or Pending Dataset to the Thread interface. + * + * @param[in] aInstance A reference to the OpenThread instance. + * @param[out] aIsNetworkKeyUpdated Variable to return whether network key was updated. + * + * @retval kErrorNone Successfully applied configuration, @p aIsNetworkKeyUpdated is changed. + * @retval kErrorParse The dataset has at least one TLV with invalid format. + * + */ + Error ApplyConfiguration(Instance &aInstance, bool &aIsNetworkKeyUpdated) const; /** * Converts a Pending Dataset to an Active Dataset. diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 6c49a239a..48033acdf 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -124,7 +124,7 @@ Error DatasetManager::Save(const Dataset &aDataset) if (IsActiveDataset()) { - SuccessOrExit(error = aDataset.ApplyConfiguration(GetInstance(), &isNetworkKeyUpdated)); + SuccessOrExit(error = aDataset.ApplyConfiguration(GetInstance(), isNetworkKeyUpdated)); } }