[mle] add TxMessage::AppendSteeringData() (#9559)

This commit is contained in:
Abtin Keshavarzian
2023-10-24 22:11:31 -07:00
committed by GitHub
parent fbeb4d18f2
commit 52e0c8bdd9
3 changed files with 24 additions and 20 deletions
+22
View File
@@ -4963,6 +4963,28 @@ Error Mle::TxMessage::AppendPendingDatasetTlv(void)
return Get<MeshCoP::PendingDatasetManager>().AppendMleDatasetTlv(*this);
}
Error Mle::TxMessage::AppendSteeringDataTlv(void)
{
Error error = kErrorNone;
MeshCoP::SteeringData steeringData;
#if OPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE
if (!Get<MleRouter>().mSteeringData.IsEmpty())
{
steeringData = Get<MleRouter>().mSteeringData;
}
else
#endif
{
SuccessOrExit(Get<NetworkData::Leader>().FindSteeringData(steeringData));
}
error = Tlv::Append<MeshCoP::SteeringDataTlv>(*this, steeringData.GetData(), steeringData.GetLength());
exit:
return error;
}
#endif // OPENTHREAD_FTD
//---------------------------------------------------------------------------------------------------------------------
+1
View File
@@ -1017,6 +1017,7 @@ private:
Error AppendActiveDatasetTlv(void);
Error AppendPendingDatasetTlv(void);
Error AppendConnectivityTlv(void);
Error AppendSteeringDataTlv(void);
Error AppendAddressRegistrationTlv(Child &aChild);
#endif
template <uint8_t kArrayLength> Error AppendTlvRequestTlv(const uint8_t (&aTlvArray)[kArrayLength])
+1 -20
View File
@@ -2810,26 +2810,7 @@ Error MleRouter::SendDiscoveryResponse(const Ip6::Address &aDestination, const M
networkNameTlv.SetNetworkName(Get<MeshCoP::NetworkNameManager>().GetNetworkName().GetAsData());
SuccessOrExit(error = networkNameTlv.AppendTo(*message));
#if OPENTHREAD_CONFIG_MLE_STEERING_DATA_SET_OOB_ENABLE
// If steering data is set out of band, use that value.
// Otherwise use the one from commissioning data.
if (!mSteeringData.IsEmpty())
{
SuccessOrExit(error = Tlv::Append<MeshCoP::SteeringDataTlv>(*message, mSteeringData.GetData(),
mSteeringData.GetLength()));
}
else
#endif
{
const MeshCoP::SteeringDataTlv *steeringDataTlv;
steeringDataTlv = Get<NetworkData::Leader>().FindInCommissioningData<MeshCoP::SteeringDataTlv>();
if (steeringDataTlv != nullptr)
{
SuccessOrExit(error = steeringDataTlv->AppendTo(*message));
}
}
SuccessOrExit(error = message->AppendSteeringDataTlv());
SuccessOrExit(
error = Tlv::Append<MeshCoP::JoinerUdpPortTlv>(*message, Get<MeshCoP::JoinerRouter>().GetJoinerUdpPort()));