mirror of
https://github.com/espressif/openthread.git
synced 2026-08-09 20:27:47 +00:00
Revert "Allow MTDs to locally generate Active Datasets for non-volatile storage." (#1118)
This commit is contained in:
@@ -842,118 +842,6 @@ ActiveDatasetBase::ActiveDatasetBase(ThreadNetif &aThreadNetif):
|
||||
{
|
||||
}
|
||||
|
||||
bool ActiveDatasetBase::IsTlvInitialized(Tlv::Type aType)
|
||||
{
|
||||
return mLocal.Get(aType) != NULL;
|
||||
}
|
||||
|
||||
ThreadError ActiveDatasetBase::GenerateLocal(void)
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
otOperationalDataset dataset;
|
||||
|
||||
VerifyOrExit(mNetif.GetMle().IsAttached(), error = kThreadError_InvalidState);
|
||||
|
||||
memset(&dataset, 0, sizeof(dataset));
|
||||
|
||||
// Active Timestamp
|
||||
if (!IsTlvInitialized(Tlv::kActiveTimestamp))
|
||||
{
|
||||
ActiveTimestampTlv activeTimestampTlv;
|
||||
activeTimestampTlv.Init();
|
||||
activeTimestampTlv.SetSeconds(0);
|
||||
activeTimestampTlv.SetTicks(0);
|
||||
mLocal.Set(activeTimestampTlv);
|
||||
}
|
||||
|
||||
// Channel
|
||||
if (!IsTlvInitialized(Tlv::kChannel))
|
||||
{
|
||||
ChannelTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetChannelPage(0);
|
||||
tlv.SetChannel(mNetif.GetMac().GetChannel());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// channelMask
|
||||
if (!IsTlvInitialized(Tlv::kChannelMask))
|
||||
{
|
||||
ChannelMask0Tlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetMask(kPhySupportedChannelMask);
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Extended PAN ID
|
||||
if (!IsTlvInitialized(Tlv::kExtendedPanId))
|
||||
{
|
||||
ExtendedPanIdTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetExtendedPanId(mNetif.GetMac().GetExtendedPanId());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Mesh-Local Prefix
|
||||
if (!IsTlvInitialized(Tlv::kMeshLocalPrefix))
|
||||
{
|
||||
MeshLocalPrefixTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetMeshLocalPrefix(mNetif.GetMle().GetMeshLocalPrefix());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Master Key
|
||||
if (!IsTlvInitialized(Tlv::kNetworkMasterKey))
|
||||
{
|
||||
NetworkMasterKeyTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetNetworkMasterKey(mNetif.GetKeyManager().GetMasterKey(NULL));
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Network Name
|
||||
if (!IsTlvInitialized(Tlv::kNetworkName))
|
||||
{
|
||||
NetworkNameTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetNetworkName(mNetif.GetMac().GetNetworkName());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Pan ID
|
||||
if (!IsTlvInitialized(Tlv::kPanId))
|
||||
{
|
||||
PanIdTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetPanId(mNetif.GetMac().GetPanId());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// PSKc
|
||||
if (!IsTlvInitialized(Tlv::kPSKc))
|
||||
{
|
||||
const uint8_t PSKc[16] = {0};
|
||||
PSKcTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetPSKc(PSKc);
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Security Policy
|
||||
if (!IsTlvInitialized(Tlv::kSecurityPolicy))
|
||||
{
|
||||
SecurityPolicyTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetRotationTime(static_cast<uint16_t>(mNetif.GetKeyManager().GetKeyRotation()));
|
||||
tlv.SetFlags(mNetif.GetKeyManager().GetSecurityPolicyFlags());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
ThreadError ActiveDatasetBase::Restore(void)
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
|
||||
@@ -117,8 +117,6 @@ class ActiveDatasetBase: public DatasetManager
|
||||
public:
|
||||
ActiveDatasetBase(ThreadNetif &aThreadNetif);
|
||||
|
||||
ThreadError GenerateLocal(void);
|
||||
|
||||
ThreadError Restore(void);
|
||||
|
||||
ThreadError Clear(bool aOnlyClearNetwork);
|
||||
@@ -128,9 +126,6 @@ public:
|
||||
ThreadError Set(const Dataset &aDataset);
|
||||
|
||||
ThreadError Set(const Timestamp &aTimestamp, const Message &aMessage, uint16_t aOffset, uint8_t aLength);
|
||||
|
||||
private:
|
||||
bool IsTlvInitialized(Tlv::Type aType);
|
||||
};
|
||||
|
||||
class PendingDatasetBase: public DatasetManager
|
||||
|
||||
@@ -65,6 +65,118 @@ ActiveDataset::ActiveDataset(ThreadNetif &aThreadNetif):
|
||||
mCoapServer.AddResource(mResourceGet);
|
||||
}
|
||||
|
||||
bool ActiveDataset::IsTlvInitialized(Tlv::Type aType)
|
||||
{
|
||||
return mLocal.Get(aType) != NULL;
|
||||
}
|
||||
|
||||
ThreadError ActiveDataset::GenerateLocal(void)
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
otOperationalDataset dataset;
|
||||
|
||||
VerifyOrExit(mNetif.GetMle().IsAttached(), error = kThreadError_InvalidState);
|
||||
|
||||
memset(&dataset, 0, sizeof(dataset));
|
||||
|
||||
// Active Timestamp
|
||||
if (!IsTlvInitialized(Tlv::kActiveTimestamp))
|
||||
{
|
||||
ActiveTimestampTlv activeTimestampTlv;
|
||||
activeTimestampTlv.Init();
|
||||
activeTimestampTlv.SetSeconds(0);
|
||||
activeTimestampTlv.SetTicks(0);
|
||||
mLocal.Set(activeTimestampTlv);
|
||||
}
|
||||
|
||||
// Channel
|
||||
if (!IsTlvInitialized(Tlv::kChannel))
|
||||
{
|
||||
ChannelTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetChannelPage(0);
|
||||
tlv.SetChannel(mNetif.GetMac().GetChannel());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// channelMask
|
||||
if (!IsTlvInitialized(Tlv::kChannelMask))
|
||||
{
|
||||
ChannelMask0Tlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetMask(kPhySupportedChannelMask);
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Extended PAN ID
|
||||
if (!IsTlvInitialized(Tlv::kExtendedPanId))
|
||||
{
|
||||
ExtendedPanIdTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetExtendedPanId(mNetif.GetMac().GetExtendedPanId());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Mesh-Local Prefix
|
||||
if (!IsTlvInitialized(Tlv::kMeshLocalPrefix))
|
||||
{
|
||||
MeshLocalPrefixTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetMeshLocalPrefix(mNetif.GetMle().GetMeshLocalPrefix());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Master Key
|
||||
if (!IsTlvInitialized(Tlv::kNetworkMasterKey))
|
||||
{
|
||||
NetworkMasterKeyTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetNetworkMasterKey(mNetif.GetKeyManager().GetMasterKey(NULL));
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Network Name
|
||||
if (!IsTlvInitialized(Tlv::kNetworkName))
|
||||
{
|
||||
NetworkNameTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetNetworkName(mNetif.GetMac().GetNetworkName());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Pan ID
|
||||
if (!IsTlvInitialized(Tlv::kPanId))
|
||||
{
|
||||
PanIdTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetPanId(mNetif.GetMac().GetPanId());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// PSKc
|
||||
if (!IsTlvInitialized(Tlv::kPSKc))
|
||||
{
|
||||
const uint8_t PSKc[16] = {0};
|
||||
PSKcTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetPSKc(PSKc);
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
// Security Policy
|
||||
if (!IsTlvInitialized(Tlv::kSecurityPolicy))
|
||||
{
|
||||
SecurityPolicyTlv tlv;
|
||||
tlv.Init();
|
||||
tlv.SetRotationTime(static_cast<uint16_t>(mNetif.GetKeyManager().GetKeyRotation()));
|
||||
tlv.SetFlags(mNetif.GetKeyManager().GetSecurityPolicyFlags());
|
||||
mLocal.Set(tlv);
|
||||
}
|
||||
|
||||
exit:
|
||||
return error;
|
||||
}
|
||||
|
||||
void ActiveDataset::StartLeader(void)
|
||||
{
|
||||
GenerateLocal();
|
||||
|
||||
@@ -50,6 +50,8 @@ class ActiveDataset: public ActiveDatasetBase
|
||||
public:
|
||||
ActiveDataset(ThreadNetif &aThreadNetif);
|
||||
|
||||
ThreadError GenerateLocal(void);
|
||||
|
||||
void StartLeader(void);
|
||||
|
||||
void StopLeader(void);
|
||||
@@ -63,6 +65,8 @@ private:
|
||||
const otMessageInfo *aMessageInfo);
|
||||
void HandleSet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
|
||||
|
||||
bool IsTlvInitialized(Tlv::Type aType);
|
||||
|
||||
Coap::Resource mResourceGet;
|
||||
Coap::Resource mResourceSet;
|
||||
};
|
||||
|
||||
@@ -48,6 +48,8 @@ class ActiveDataset: public ActiveDatasetBase
|
||||
public:
|
||||
ActiveDataset(ThreadNetif &aThreadNetif) : ActiveDatasetBase(aThreadNetif) { }
|
||||
|
||||
ThreadError GenerateLocal(void) { return kThreadError_NotImplemented; }
|
||||
|
||||
void StartLeader(void) { }
|
||||
|
||||
void StopLeader(void) { }
|
||||
|
||||
Reference in New Issue
Block a user