mirror of
https://github.com/espressif/openthread.git
synced 2026-10-01 13:27:42 +00:00
[network-diagnostic] update GetNextDiagTlv() parameter to use Message (#4992)
This commit is contained in:
committed by
Jonathan Hui
parent
8160f3423b
commit
c4faeea067
@@ -792,13 +792,12 @@ static inline void ParseChildEntry(const ChildTableEntry &aChildTableTlvEntry, o
|
|||||||
ParseMode(aChildTableTlvEntry.GetMode(), aChildEntry.mMode);
|
ParseMode(aChildTableTlvEntry.GetMode(), aChildEntry.mMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
otError NetworkDiagnostic::GetNextDiagTlv(const Coap::Message & aMessage,
|
||||||
otNetworkDiagIterator &aIterator,
|
otNetworkDiagIterator &aIterator,
|
||||||
otNetworkDiagTlv & aNetworkDiagTlv)
|
otNetworkDiagTlv & aNetworkDiagTlv)
|
||||||
{
|
{
|
||||||
otError error = OT_ERROR_PARSE;
|
otError error = OT_ERROR_PARSE;
|
||||||
const Coap::Message &message = static_cast<const Coap::Message &>(aMessage);
|
uint16_t offset = aMessage.GetOffset();
|
||||||
uint16_t offset = message.GetOffset();
|
|
||||||
NetworkDiagnosticTlv tlv;
|
NetworkDiagnosticTlv tlv;
|
||||||
|
|
||||||
offset += aIterator;
|
offset += aIterator;
|
||||||
@@ -807,7 +806,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
{
|
{
|
||||||
uint16_t tlvTotalLength;
|
uint16_t tlvTotalLength;
|
||||||
|
|
||||||
VerifyOrExit(message.Read(offset, sizeof(tlv), &tlv) == sizeof(tlv), error = OT_ERROR_NOT_FOUND);
|
VerifyOrExit(aMessage.Read(offset, sizeof(tlv), &tlv) == sizeof(tlv), error = OT_ERROR_NOT_FOUND);
|
||||||
|
|
||||||
switch (tlv.GetType())
|
switch (tlv.GetType())
|
||||||
{
|
{
|
||||||
@@ -816,7 +815,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
ExtMacAddressTlv extMacAddr;
|
ExtMacAddressTlv extMacAddr;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(extMacAddr);
|
tlvTotalLength = sizeof(extMacAddr);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &extMacAddr) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &extMacAddr) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(extMacAddr.IsValid(), OT_NOOP);
|
VerifyOrExit(extMacAddr.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mExtAddress = *extMacAddr.GetMacAddr();
|
aNetworkDiagTlv.mData.mExtAddress = *extMacAddr.GetMacAddr();
|
||||||
@@ -829,7 +828,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
Address16Tlv addr16;
|
Address16Tlv addr16;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(addr16);
|
tlvTotalLength = sizeof(addr16);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &addr16) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &addr16) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(addr16.IsValid(), OT_NOOP);
|
VerifyOrExit(addr16.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mAddr16 = addr16.GetRloc16();
|
aNetworkDiagTlv.mData.mAddr16 = addr16.GetRloc16();
|
||||||
@@ -842,7 +841,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
ModeTlv linkMode;
|
ModeTlv linkMode;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(linkMode);
|
tlvTotalLength = sizeof(linkMode);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &linkMode) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &linkMode) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(linkMode.IsValid(), OT_NOOP);
|
VerifyOrExit(linkMode.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
ParseMode(linkMode.GetMode(), aNetworkDiagTlv.mData.mMode);
|
ParseMode(linkMode.GetMode(), aNetworkDiagTlv.mData.mMode);
|
||||||
@@ -855,7 +854,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
TimeoutTlv timeout;
|
TimeoutTlv timeout;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(timeout);
|
tlvTotalLength = sizeof(timeout);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &timeout) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &timeout) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(timeout.IsValid(), OT_NOOP);
|
VerifyOrExit(timeout.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mTimeout = timeout.GetTimeout();
|
aNetworkDiagTlv.mData.mTimeout = timeout.GetTimeout();
|
||||||
@@ -868,7 +867,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
ConnectivityTlv connectivity;
|
ConnectivityTlv connectivity;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(connectivity);
|
tlvTotalLength = sizeof(connectivity);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &connectivity) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &connectivity) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(connectivity.IsValid(), OT_NOOP);
|
VerifyOrExit(connectivity.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
ParseConnectivity(connectivity, aNetworkDiagTlv.mData.mConnectivity);
|
ParseConnectivity(connectivity, aNetworkDiagTlv.mData.mConnectivity);
|
||||||
@@ -882,7 +881,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
|
|
||||||
tlvTotalLength = sizeof(tlv) + tlv.GetLength();
|
tlvTotalLength = sizeof(tlv) + tlv.GetLength();
|
||||||
VerifyOrExit(tlvTotalLength <= sizeof(route), OT_NOOP);
|
VerifyOrExit(tlvTotalLength <= sizeof(route), OT_NOOP);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &route) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &route) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(route.IsValid(), OT_NOOP);
|
VerifyOrExit(route.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
ParseRoute(route, aNetworkDiagTlv.mData.mRoute);
|
ParseRoute(route, aNetworkDiagTlv.mData.mRoute);
|
||||||
@@ -895,7 +894,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
LeaderDataTlv leaderData;
|
LeaderDataTlv leaderData;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(leaderData);
|
tlvTotalLength = sizeof(leaderData);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &leaderData) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &leaderData) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(leaderData.IsValid(), OT_NOOP);
|
VerifyOrExit(leaderData.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
ParseLeaderData(leaderData, aNetworkDiagTlv.mData.mLeaderData);
|
ParseLeaderData(leaderData, aNetworkDiagTlv.mData.mLeaderData);
|
||||||
@@ -909,7 +908,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
|
|
||||||
tlvTotalLength = sizeof(tlv) + tlv.GetLength();
|
tlvTotalLength = sizeof(tlv) + tlv.GetLength();
|
||||||
VerifyOrExit(tlvTotalLength <= sizeof(networkData), OT_NOOP);
|
VerifyOrExit(tlvTotalLength <= sizeof(networkData), OT_NOOP);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &networkData) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &networkData) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(networkData.IsValid(), OT_NOOP);
|
VerifyOrExit(networkData.IsValid(), OT_NOOP);
|
||||||
VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mNetworkData.m8) >= networkData.GetLength(), OT_NOOP);
|
VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mNetworkData.m8) >= networkData.GetLength(), OT_NOOP);
|
||||||
|
|
||||||
@@ -925,8 +924,8 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
|
|
||||||
VerifyOrExit(ip6AddrList.IsValid(), OT_NOOP);
|
VerifyOrExit(ip6AddrList.IsValid(), OT_NOOP);
|
||||||
VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mIp6AddrList.mList) >= ip6AddrList.GetLength(), OT_NOOP);
|
VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mIp6AddrList.mList) >= ip6AddrList.GetLength(), OT_NOOP);
|
||||||
VerifyOrExit(message.Read(offset + sizeof(ip6AddrList), ip6AddrList.GetLength(),
|
VerifyOrExit(aMessage.Read(offset + sizeof(ip6AddrList), ip6AddrList.GetLength(),
|
||||||
aNetworkDiagTlv.mData.mIp6AddrList.mList) == ip6AddrList.GetLength(),
|
aNetworkDiagTlv.mData.mIp6AddrList.mList) == ip6AddrList.GetLength(),
|
||||||
OT_NOOP);
|
OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mIp6AddrList.mCount = ip6AddrList.GetLength() / OT_IP6_ADDRESS_SIZE;
|
aNetworkDiagTlv.mData.mIp6AddrList.mCount = ip6AddrList.GetLength() / OT_IP6_ADDRESS_SIZE;
|
||||||
@@ -939,7 +938,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
MacCountersTlv macCounters;
|
MacCountersTlv macCounters;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(MacCountersTlv);
|
tlvTotalLength = sizeof(MacCountersTlv);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &macCounters) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &macCounters) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(macCounters.IsValid(), OT_NOOP);
|
VerifyOrExit(macCounters.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
ParseMacCounters(macCounters, aNetworkDiagTlv.mData.mMacCounters);
|
ParseMacCounters(macCounters, aNetworkDiagTlv.mData.mMacCounters);
|
||||||
@@ -952,7 +951,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
BatteryLevelTlv batteryLevel;
|
BatteryLevelTlv batteryLevel;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(BatteryLevelTlv);
|
tlvTotalLength = sizeof(BatteryLevelTlv);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &batteryLevel) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &batteryLevel) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(batteryLevel.IsValid(), OT_NOOP);
|
VerifyOrExit(batteryLevel.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mBatteryLevel = batteryLevel.GetBatteryLevel();
|
aNetworkDiagTlv.mData.mBatteryLevel = batteryLevel.GetBatteryLevel();
|
||||||
@@ -965,7 +964,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
SupplyVoltageTlv supplyVoltage;
|
SupplyVoltageTlv supplyVoltage;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(SupplyVoltageTlv);
|
tlvTotalLength = sizeof(SupplyVoltageTlv);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &supplyVoltage) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &supplyVoltage) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(supplyVoltage.IsValid(), OT_NOOP);
|
VerifyOrExit(supplyVoltage.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mSupplyVoltage = supplyVoltage.GetSupplyVoltage();
|
aNetworkDiagTlv.mData.mSupplyVoltage = supplyVoltage.GetSupplyVoltage();
|
||||||
@@ -984,7 +983,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
for (uint8_t i = 0; i < childTable.GetNumEntries(); ++i)
|
for (uint8_t i = 0; i < childTable.GetNumEntries(); ++i)
|
||||||
{
|
{
|
||||||
ChildTableEntry childEntry;
|
ChildTableEntry childEntry;
|
||||||
VerifyOrExit(childTable.ReadEntry(childEntry, message, offset, i) == OT_ERROR_NONE, OT_NOOP);
|
VerifyOrExit(childTable.ReadEntry(childEntry, aMessage, offset, i) == OT_ERROR_NONE, OT_NOOP);
|
||||||
ParseChildEntry(childEntry, aNetworkDiagTlv.mData.mChildTable.mTable[i]);
|
ParseChildEntry(childEntry, aNetworkDiagTlv.mData.mChildTable.mTable[i]);
|
||||||
}
|
}
|
||||||
aNetworkDiagTlv.mData.mChildTable.mCount = childTable.GetNumEntries();
|
aNetworkDiagTlv.mData.mChildTable.mCount = childTable.GetNumEntries();
|
||||||
@@ -995,7 +994,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
case NetworkDiagnosticTlv::kChannelPages:
|
case NetworkDiagnosticTlv::kChannelPages:
|
||||||
{
|
{
|
||||||
VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mChannelPages.m8) >= tlv.GetLength(), OT_NOOP);
|
VerifyOrExit(sizeof(aNetworkDiagTlv.mData.mChannelPages.m8) >= tlv.GetLength(), OT_NOOP);
|
||||||
VerifyOrExit(message.Read(offset + sizeof(tlv), tlv.GetLength(), aNetworkDiagTlv.mData.mChannelPages.m8) ==
|
VerifyOrExit(aMessage.Read(offset + sizeof(tlv), tlv.GetLength(), aNetworkDiagTlv.mData.mChannelPages.m8) ==
|
||||||
tlv.GetLength(),
|
tlv.GetLength(),
|
||||||
OT_NOOP);
|
OT_NOOP);
|
||||||
|
|
||||||
@@ -1009,7 +1008,7 @@ otError NetworkDiagnostic::GetNextDiagTlv(const otMessage & aMessage,
|
|||||||
MaxChildTimeoutTlv maxChildTimeout;
|
MaxChildTimeoutTlv maxChildTimeout;
|
||||||
|
|
||||||
tlvTotalLength = sizeof(maxChildTimeout);
|
tlvTotalLength = sizeof(maxChildTimeout);
|
||||||
VerifyOrExit(message.Read(offset, tlvTotalLength, &maxChildTimeout) == tlvTotalLength, OT_NOOP);
|
VerifyOrExit(aMessage.Read(offset, tlvTotalLength, &maxChildTimeout) == tlvTotalLength, OT_NOOP);
|
||||||
VerifyOrExit(maxChildTimeout.IsValid(), OT_NOOP);
|
VerifyOrExit(maxChildTimeout.IsValid(), OT_NOOP);
|
||||||
|
|
||||||
aNetworkDiagTlv.mData.mMaxChildTimeout = maxChildTimeout.GetTimeout();
|
aNetworkDiagTlv.mData.mMaxChildTimeout = maxChildTimeout.GetTimeout();
|
||||||
@@ -1030,7 +1029,7 @@ exit:
|
|||||||
if (error == OT_ERROR_NONE)
|
if (error == OT_ERROR_NONE)
|
||||||
{
|
{
|
||||||
aNetworkDiagTlv.mType = tlv.GetType();
|
aNetworkDiagTlv.mType = tlv.GetType();
|
||||||
aIterator = static_cast<uint16_t>(offset - message.GetOffset() + tlv.GetSize());
|
aIterator = static_cast<uint16_t>(offset - aMessage.GetOffset() + tlv.GetSize());
|
||||||
}
|
}
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
otError SendDiagnosticReset(const Ip6::Address &aDestination, const uint8_t aTlvTypes[], uint8_t aCount);
|
otError SendDiagnosticReset(const Ip6::Address &aDestination, const uint8_t aTlvTypes[], uint8_t aCount);
|
||||||
|
|
||||||
static otError GetNextDiagTlv(const otMessage & aMessage,
|
static otError GetNextDiagTlv(const Coap::Message & aMessage,
|
||||||
otNetworkDiagIterator &aIterator,
|
otNetworkDiagIterator &aIterator,
|
||||||
otNetworkDiagTlv & aNetworkDiagTlv);
|
otNetworkDiagTlv & aNetworkDiagTlv);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user