mirror of
https://github.com/espressif/openthread.git
synced 2026-08-10 04:37:47 +00:00
Update Valid Prefix Set configuration and Border Router TLV. (#316)
This commit is contained in:
@@ -311,7 +311,7 @@ typedef struct otIp6Prefix
|
||||
typedef struct otBorderRouterConfig
|
||||
{
|
||||
/**
|
||||
* TRUE, if this border router is a DHCPv6 Agent that supplies other configuration data. FALSE, otherwise.
|
||||
* The IPv6 prefix.
|
||||
*/
|
||||
otIp6Prefix mPrefix;
|
||||
|
||||
@@ -321,14 +321,14 @@ typedef struct otBorderRouterConfig
|
||||
int mPreference : 2;
|
||||
|
||||
/**
|
||||
* TRUE, if @p mPrefix is preferred and should e used for address autoconfiguration. FALSE, otherwise.
|
||||
* TRUE, if @p mPrefix is preferred. FALSE, otherwise.
|
||||
*/
|
||||
bool mSlaacPreferred : 1;
|
||||
bool mPreferred : 1;
|
||||
|
||||
/**
|
||||
* TRUE, if @p mPrefix is valid and should be used for address autoconfiguration. FALSE, otherwise.
|
||||
* TRUE, if @p mPrefix should be used for address autoconfiguration. FALSE, otherwise.
|
||||
*/
|
||||
bool mSlaacValid : 1;
|
||||
bool mSlaac : 1;
|
||||
|
||||
/**
|
||||
* TRUE, if this border router is a DHCPv6 Agent that supplies IPv6 address configuration. FALSE, otherwise.
|
||||
@@ -345,6 +345,11 @@ typedef struct otBorderRouterConfig
|
||||
*/
|
||||
bool mDefaultRoute : 1;
|
||||
|
||||
/**
|
||||
* TRUE, if this prefix is considered on-mesh. FALSE, otherwise.
|
||||
*/
|
||||
bool mOnMesh : 1;
|
||||
|
||||
/**
|
||||
* TRUE, if this configuration is considered Stable Network Data. FALSE, otherwise.
|
||||
*/
|
||||
|
||||
+6
-5
@@ -432,16 +432,17 @@ Send an ICMPv6 Echo Request.
|
||||
|
||||
Add a valid prefix to the Network Data.
|
||||
|
||||
* p: Stateless IPv6 Address Autoconfiguration Preferred flag
|
||||
* v: Stateless IPv6 Address Autoconfiguration Valid flag
|
||||
* p: Preferred flag
|
||||
* a: Stateless IPv6 Address Autoconfiguration flag
|
||||
* d: DHCPv6 IPv6 Address Configuration flag
|
||||
* c: DHCPv6 Other Configuration flag
|
||||
* s: Stable flag
|
||||
* r: Default Route flag
|
||||
* o: On Mesh flag
|
||||
* s: Stable flag
|
||||
* prf: Default router preference, which may be 'high', 'med', or 'low'.
|
||||
|
||||
```bash
|
||||
> prefix add 2001:dead:beef:cafe::/64 pvsr 0
|
||||
> prefix add 2001:dead:beef:cafe::/64 paros med
|
||||
Done
|
||||
```
|
||||
|
||||
@@ -479,7 +480,7 @@ Add a valid prefix to the Network Data.
|
||||
* prf: Default Router Preference, which may be: 'high', 'med', or 'low'.
|
||||
|
||||
```bash
|
||||
> route add 2001:dead:beef:cafe::/64 pvsr 0
|
||||
> route add 2001:dead:beef:cafe::/64 s med
|
||||
Done
|
||||
```
|
||||
|
||||
|
||||
+43
-39
@@ -865,43 +865,9 @@ ThreadError Interpreter::ProcessPrefixAdd(int argc, char *argv[])
|
||||
ExitNow(error = kThreadError_Parse);
|
||||
}
|
||||
|
||||
if (++argcur < argc)
|
||||
{
|
||||
for (char *arg = argv[argcur]; *arg != '\0'; arg++)
|
||||
{
|
||||
switch (*arg)
|
||||
{
|
||||
case 'p':
|
||||
config.mSlaacPreferred = true;
|
||||
break;
|
||||
argcur++;
|
||||
|
||||
case 'v':
|
||||
config.mSlaacValid = true;
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
config.mDhcp = true;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
config.mConfigure = true;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
config.mDefaultRoute = true;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
config.mStable = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
ExitNow();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (++argcur < argc)
|
||||
for (; argcur < argc; argcur++)
|
||||
{
|
||||
if (strcmp(argv[argcur], "high") == 0)
|
||||
{
|
||||
@@ -917,7 +883,42 @@ ThreadError Interpreter::ProcessPrefixAdd(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitNow(error = kThreadError_Parse);
|
||||
for (char *arg = argv[argcur]; *arg != '\0'; arg++)
|
||||
{
|
||||
switch (*arg)
|
||||
{
|
||||
case 'p':
|
||||
config.mPreferred = true;
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
config.mSlaac = true;
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
config.mDhcp = true;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
config.mConfigure = true;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
config.mDefaultRoute = true;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
config.mOnMesh = true;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
config.mStable = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
ExitNow(error = kThreadError_Parse);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1035,13 +1036,16 @@ ThreadError Interpreter::ProcessRouteAdd(int argc, char *argv[])
|
||||
ExitNow(error = kThreadError_Parse);
|
||||
}
|
||||
|
||||
if (++argcur < argc)
|
||||
argcur++;
|
||||
|
||||
for (; argcur < argc; argcur++)
|
||||
{
|
||||
if (strcmp(argv[argcur], "s") == 0)
|
||||
{
|
||||
config.mStable = true;
|
||||
}
|
||||
else if (strcmp(argv[argcur], "high") == 0)
|
||||
|
||||
if (strcmp(argv[argcur], "high") == 0)
|
||||
{
|
||||
config.mPreference = 1;
|
||||
}
|
||||
|
||||
@@ -294,14 +294,14 @@ ThreadError otAddBorderRouter(const otBorderRouterConfig *aConfig)
|
||||
{
|
||||
uint8_t flags = 0;
|
||||
|
||||
if (aConfig->mSlaacPreferred)
|
||||
if (aConfig->mPreferred)
|
||||
{
|
||||
flags |= NetworkData::BorderRouterEntry::kPreferredFlag;
|
||||
}
|
||||
|
||||
if (aConfig->mSlaacValid)
|
||||
if (aConfig->mSlaac)
|
||||
{
|
||||
flags |= NetworkData::BorderRouterEntry::kValidFlag;
|
||||
flags |= NetworkData::BorderRouterEntry::kSlaacFlag;
|
||||
}
|
||||
|
||||
if (aConfig->mDhcp)
|
||||
@@ -319,6 +319,11 @@ ThreadError otAddBorderRouter(const otBorderRouterConfig *aConfig)
|
||||
flags |= NetworkData::BorderRouterEntry::kDefaultRouteFlag;
|
||||
}
|
||||
|
||||
if (aConfig->mOnMesh)
|
||||
{
|
||||
flags |= NetworkData::BorderRouterEntry::kOnMeshFlag;
|
||||
}
|
||||
|
||||
return sThreadNetif->GetNetworkDataLocal().AddOnMeshPrefix(aConfig->mPrefix.mPrefix.mFields.m8,
|
||||
aConfig->mPrefix.mLength,
|
||||
aConfig->mPreference, flags, aConfig->mStable);
|
||||
|
||||
@@ -241,9 +241,9 @@ ThreadError Leader::ConfigureAddress(PrefixTlv &aPrefix)
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
// check if Valid flag is set
|
||||
// check if SLAAC flag is set
|
||||
if ((entry = borderRouter->GetEntry(0)) == NULL ||
|
||||
entry->IsValid() == false)
|
||||
entry->IsSlaac() == false)
|
||||
{
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
@@ -349,10 +349,11 @@ public:
|
||||
kPreferenceOffset = 6,
|
||||
kPreferenceMask = 3 << kPreferenceOffset,
|
||||
kPreferredFlag = 1 << 5,
|
||||
kValidFlag = 1 << 4,
|
||||
kSlaacFlag = 1 << 4,
|
||||
kDhcpFlag = 1 << 3,
|
||||
kConfigureFlag = 1 << 2,
|
||||
kDefaultRouteFlag = 1 << 1,
|
||||
kOnMeshFlag = 1 << 0,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -430,25 +431,25 @@ public:
|
||||
void SetPreferred() { mFlags |= kPreferredFlag; }
|
||||
|
||||
/**
|
||||
* This method indicates whether or not the Valid flag is set.
|
||||
* This method indicates whether or not the SLAAC flag is set.
|
||||
*
|
||||
* @retval TRUE If the Valid flag is set.
|
||||
* @retval FALSE If the Valid flag is not set.
|
||||
* @retval TRUE If the SLAAC flag is set.
|
||||
* @retval FALSE If the SLAAC flag is not set.
|
||||
*
|
||||
*/
|
||||
bool IsValid() const { return (mFlags & kValidFlag) != 0; }
|
||||
bool IsSlaac() const { return (mFlags & kSlaacFlag) != 0; }
|
||||
|
||||
/**
|
||||
* This method clears the Valid flag.
|
||||
* This method clears the SLAAC flag.
|
||||
*
|
||||
*/
|
||||
void ClearValid() { mFlags &= ~kValidFlag; }
|
||||
void ClearSlaac() { mFlags &= ~kSlaacFlag; }
|
||||
|
||||
/**
|
||||
* This method sets the Valid flag.
|
||||
* This method sets the SLAAC flag.
|
||||
*
|
||||
*/
|
||||
void SetValid() { mFlags |= kValidFlag; }
|
||||
void SetSlaac() { mFlags |= kSlaacFlag; }
|
||||
|
||||
/**
|
||||
* This method indicates whether or not the DHCP flag is set.
|
||||
@@ -513,6 +514,27 @@ public:
|
||||
*/
|
||||
void SetDefaultRoute() { mFlags |= kDefaultRouteFlag; }
|
||||
|
||||
/**
|
||||
* This method indicates whether or not the On-Mesh flag is set.
|
||||
*
|
||||
* @retval TRUE If the On-Mesh flag is set.
|
||||
* @retval FALSE If the On-Mesh flag is not set.
|
||||
*
|
||||
*/
|
||||
bool IsOnMesh() const { return (mFlags & kOnMeshFlag) != 0; }
|
||||
|
||||
/**
|
||||
* This method clears the On-Mesh flag.
|
||||
*
|
||||
*/
|
||||
void ClearOnMesh() { mFlags &= ~kOnMeshFlag; }
|
||||
|
||||
/**
|
||||
* This method sets the On-Mesh flag.
|
||||
*
|
||||
*/
|
||||
void SetOnMesh() { mFlags |= kOnMeshFlag; }
|
||||
|
||||
private:
|
||||
uint16_t mRloc;
|
||||
uint8_t mFlags;
|
||||
|
||||
@@ -3020,10 +3020,11 @@ void NcpBase::InsertPropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spinel_p
|
||||
const static int kPreferenceOffset = 6;
|
||||
const static int kPreferenceMask = 3 << kPreferenceOffset;
|
||||
const static int kPreferredFlag = 1 << 5;
|
||||
const static int kValidFlag = 1 << 4;
|
||||
const static int kSlaacFlag = 1 << 4;
|
||||
const static int kDhcpFlag = 1 << 3;
|
||||
const static int kConfigureFlag = 1 << 2;
|
||||
const static int kDefaultRouteFlag = 1 << 1;
|
||||
const static int kOnMeshFlag = 1 << 0;
|
||||
|
||||
spinel_ssize_t parsedLength;
|
||||
ThreadError errorCode = kThreadError_None;
|
||||
@@ -3055,11 +3056,12 @@ void NcpBase::InsertPropertyHandler_THREAD_ON_MESH_NETS(uint8_t header, spinel_p
|
||||
border_router_config.mPrefix.mPrefix = *addr_ptr;
|
||||
border_router_config.mStable = stable;
|
||||
border_router_config.mPreference = ((flags & kPreferenceMask) >> kPreferenceOffset);
|
||||
border_router_config.mSlaacPreferred = ((flags & kPreferredFlag) == kPreferredFlag);
|
||||
border_router_config.mSlaacValid = ((flags & kValidFlag) == kValidFlag);
|
||||
border_router_config.mPreferred = ((flags & kPreferredFlag) == kPreferredFlag);
|
||||
border_router_config.mSlaac = ((flags & kSlaacFlag) == kSlaacFlag);
|
||||
border_router_config.mDhcp = ((flags & kDhcpFlag) == kDhcpFlag);
|
||||
border_router_config.mConfigure = ((flags & kConfigureFlag) == kConfigureFlag);
|
||||
border_router_config.mDefaultRoute = ((flags & kDefaultRouteFlag) == kDefaultRouteFlag);
|
||||
border_router_config.mOnMesh = ((flags & kOnMeshFlag) == kOnMeshFlag);
|
||||
|
||||
errorCode = otAddBorderRouter(&border_router_config);
|
||||
|
||||
|
||||
@@ -104,8 +104,8 @@ class Cert_5_2_5_AddressQuery(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[BR1].get_state(), 'router')
|
||||
|
||||
self.nodes[BR1].add_prefix('2003::/64', 'pvcrs')
|
||||
self.nodes[BR1].add_prefix('2004::/64', 'pvcrs')
|
||||
self.nodes[BR1].add_prefix('2003::/64', 'paros')
|
||||
self.nodes[BR1].add_prefix('2004::/64', 'paros')
|
||||
self.nodes[BR1].register_netdata()
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
||||
@@ -90,8 +90,8 @@ class Cert_5_3_3_AddressQuery(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[BR].get_state(), 'router')
|
||||
|
||||
self.nodes[BR].add_prefix('2003::/64', 'pvcrs')
|
||||
self.nodes[BR].add_prefix('2004::/64', 'pvcrs')
|
||||
self.nodes[BR].add_prefix('2003::/64', 'paros')
|
||||
self.nodes[BR].add_prefix('2004::/64', 'paros')
|
||||
self.nodes[BR].register_netdata()
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
|
||||
@@ -110,7 +110,7 @@ class Cert_5_3_7_DuplicateAddress(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[ED3].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER2].register_netdata()
|
||||
|
||||
self.nodes[ED1].add_ipaddr('2001::1')
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_5_3_9_AddressQuery(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[BR].get_state(), 'router')
|
||||
|
||||
self.nodes[BR].add_prefix('2003::/64', 'pvcrs')
|
||||
self.nodes[BR].add_prefix('2004::/64', 'pvcrs')
|
||||
self.nodes[BR].add_prefix('2003::/64', 'paros')
|
||||
self.nodes[BR].add_prefix('2004::/64', 'paros')
|
||||
self.nodes[BR].register_netdata()
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
|
||||
@@ -77,8 +77,8 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(unittest.TestCase):
|
||||
self.nodes[LEADER].set_state('leader')
|
||||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
|
||||
@@ -81,8 +81,8 @@ class Cert_5_6_2_NetworkDataRouterAsBr(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(unittest.TestCase):
|
||||
time.sleep(5)
|
||||
self.assertEqual(self.nodes[SED1].get_state(), 'child')
|
||||
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
|
||||
time.sleep(10)
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[SED1].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
time.sleep(10)
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[SED1].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
time.sleep(10)
|
||||
@@ -105,7 +105,7 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(unittest.TestCase):
|
||||
if addr[0:3] == '200':
|
||||
self.nodes[LEADER].ping(addr)
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pvcs')
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pacs')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
time.sleep(10)
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_5_6_6_NetworkDataExpiration(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[SED1].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
time.sleep(10)
|
||||
@@ -105,7 +105,7 @@ class Cert_5_6_6_NetworkDataExpiration(unittest.TestCase):
|
||||
if addr[0:3] == '200':
|
||||
self.nodes[LEADER].ping(addr)
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pvcs')
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pacs')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
time.sleep(10)
|
||||
|
||||
@@ -81,7 +81,7 @@ class Cert_5_6_7_NetworkDataRequestREED(unittest.TestCase):
|
||||
self.nodes[LEADER].remove_whitelist(self.nodes[REED].get_addr64())
|
||||
self.nodes[REED].remove_whitelist(self.nodes[LEADER].get_addr64())
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'paros')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
@@ -78,7 +78,7 @@ class Cert_5_6_8_ContextManagement(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[ED].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
time.sleep(2)
|
||||
|
||||
@@ -96,7 +96,7 @@ class Cert_5_6_8_ContextManagement(unittest.TestCase):
|
||||
if addr[0:3] == '200':
|
||||
self.nodes[ED].ping(addr)
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paros')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
time.sleep(5)
|
||||
|
||||
@@ -106,7 +106,7 @@ class Cert_5_6_8_ContextManagement(unittest.TestCase):
|
||||
self.nodes[ED].ping(addr)
|
||||
|
||||
time.sleep(5)
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'paros')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
time.sleep(5)
|
||||
|
||||
|
||||
@@ -100,12 +100,12 @@ class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[SED].get_state(), 'child')
|
||||
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'pvcrs', 'med')
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'paros', 'med')
|
||||
self.nodes[LEADER].add_route('2002::/64', 'med')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
time.sleep(10)
|
||||
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'pvcrs', 'low')
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'paros', 'low')
|
||||
self.nodes[ROUTER2].add_route('2002::/64', 'high')
|
||||
self.nodes[ROUTER2].register_netdata()
|
||||
time.sleep(10)
|
||||
@@ -121,7 +121,7 @@ class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase):
|
||||
pass
|
||||
|
||||
self.nodes[ROUTER2].remove_prefix('2001::/64')
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'pvcrs', 'high')
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'paros', 'high')
|
||||
self.nodes[ROUTER2].register_netdata()
|
||||
time.sleep(10)
|
||||
|
||||
@@ -131,7 +131,7 @@ class Cert_5_6_9_NetworkDataForwarding(unittest.TestCase):
|
||||
pass
|
||||
|
||||
self.nodes[ROUTER2].remove_prefix('2001::/64')
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'pvcrs', 'med')
|
||||
self.nodes[ROUTER2].add_prefix('2001::/64', 'paros', 'med')
|
||||
self.nodes[ROUTER2].register_netdata()
|
||||
time.sleep(10)
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ class Cert_5_6_2_NetworkDataUpdate(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[ED].get_state(), 'child')
|
||||
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
time.sleep(3)
|
||||
|
||||
@@ -79,7 +79,7 @@ class Cert_5_6_2_NetworkDataUpdate(unittest.TestCase):
|
||||
self.nodes[LEADER].remove_whitelist(self.nodes[ED].get_addr64())
|
||||
self.nodes[ED].remove_whitelist(self.nodes[LEADER].get_addr64())
|
||||
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'pvcrs')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'paros')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
@@ -77,8 +77,8 @@ class Cert_7_1_1_BorderRouterAsLeader(unittest.TestCase):
|
||||
self.nodes[LEADER].set_state('leader')
|
||||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
|
||||
@@ -81,8 +81,8 @@ class Cert_7_1_2_BorderRouterAsRouter(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
|
||||
self.nodes[ED2].start()
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_7_1_3_BorderRouterAsLeader(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[ED1].get_state(), 'child')
|
||||
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[LEADER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[LEADER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[LEADER].register_netdata()
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_7_1_4_BorderRouterAsRouter(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[SED2].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
@@ -89,8 +89,8 @@ class Cert_7_1_5_BorderRouterAsRouter(unittest.TestCase):
|
||||
time.sleep(3)
|
||||
self.assertEqual(self.nodes[SED2].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'pvcr')
|
||||
self.nodes[ROUTER].add_prefix('2001::/64', 'paros')
|
||||
self.nodes[ROUTER].add_prefix('2002::/64', 'paro')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
time.sleep(3)
|
||||
|
||||
@@ -104,7 +104,7 @@ class Cert_7_1_5_BorderRouterAsRouter(unittest.TestCase):
|
||||
if addr[0:4] == '2001' or addr[0:4] == '2002':
|
||||
self.nodes[LEADER].ping(addr)
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'pvcrs')
|
||||
self.nodes[ROUTER].add_prefix('2003::/64', 'paros')
|
||||
self.nodes[ROUTER].register_netdata()
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user