Revert "Allow MTDs to locally generate Active Datasets for non-volatile storage." (#1118)

This commit is contained in:
Jonathan Hui
2017-01-06 23:41:57 -08:00
committed by GitHub
parent 6b6fe8eef9
commit a52ad98b23
5 changed files with 118 additions and 117 deletions
-112
View File
@@ -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;
-5
View File
@@ -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
+112
View File
@@ -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();
+4
View File
@@ -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;
};
+2
View File
@@ -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) { }