// in pool, but is currently used, can succeed
TEST_F(AllocEngine6Test, pdAllocWithUsedHint6) {
allocWithUsedHintTest(Lease::TYPE_PD,
- IOAddress("2001:db8:1::"), // allocate this prefix as used
- IOAddress("2001:db8:1::"), // request this prefix
- 64);
+ IOAddress("2001:db8:1:2::"), // allocate this prefix as used
+ IOAddress("2001:db8:1:2::"), // request this prefix
+ 80);
}
// This test checks if the allocation with a hint that is out the blue
// can succeed. The invalid hint should be ignored completely.
TEST_F(AllocEngine6Test, pdAllocBogusHint6) {
- allocBogusHint6(Lease::TYPE_PD, IOAddress("3000::abc"), 64);
+ allocBogusHint6(Lease::TYPE_PD, IOAddress("3000::abc"), 80);
}
// This test checks that NULL values are handled properly
// Configure the PD pool with the prefix length of /64 and the delegated
// length /96.
- Pool6Ptr pool(new Pool6(Lease::TYPE_PD, IOAddress("2001:db8:1::"), 64, 96));
+ Pool6Ptr pool(new Pool6(Lease::TYPE_PD, IOAddress("2001:db8:1:2::"), 80, 96));
subnet_->addPool(pool);
// We should have got exactly one lease.
TEST_F(AllocEngine6Test, largeAllocationAttemptsOverride) {
// Remove the default NA pools.
subnet_->delPools(Lease::TYPE_NA);
+ subnet_->delPools(Lease::TYPE_PD);
// Add exactly one pool with many addresses.
Pool6Ptr pool(new Pool6(Lease::TYPE_NA, IOAddress("2001:db8:1::"), 56));
// Initialize a subnet and short address pool.
initSubnet(IOAddress("2001:db8:1::"),
IOAddress("2001:db8:1::10"),
- IOAddress("2001:db8:1::20"));
+ IOAddress("2001:db8:1::20"),
+ IOAddress("2001:db8:1:2::"),
+ 64, 80);
initFqdn("", false, false);
void
AllocEngine6Test::initSubnet(const asiolink::IOAddress& subnet,
- const asiolink::IOAddress& pool_start,
- const asiolink::IOAddress& pool_end) {
+ const asiolink::IOAddress& pool_start,
+ const asiolink::IOAddress& pool_end,
+ const asiolink::IOAddress& pd_pool_prefix,
+ const uint8_t pd_pool_length,
+ const uint8_t pd_delegated_length) {
CfgMgr& cfg_mgr = CfgMgr::instance();
subnet_ = Subnet6Ptr(new Subnet6(subnet, 56, 100, 200, 300, 400));
subnet_->addPool(pool_);
- pd_pool_ = Pool6Ptr(new Pool6(Lease::TYPE_PD, subnet, 56, 64));
+ if (!pd_pool_prefix.isV6Zero()) {
+ pd_pool_ = Pool6Ptr(new Pool6(Lease::TYPE_PD, pd_pool_prefix,
+ pd_pool_length, pd_delegated_length));
+ }
subnet_->addPool(pd_pool_);
cfg_mgr.getStagingCfg()->getCfgSubnets6()->add(subnet_);
/// @param subnet Address of a subnet to be configured.
/// @param pool_start First address in the address pool.
/// @param pool_end Last address in the address pool.
+ /// @param pd_pool_prefix Prefix for the prefix delegation pool. It
+ /// defaults to 0 which means that PD pool is not specified.
+ /// @param pd_pool_length Length of the PD pool prefix.
+ /// @param pd_delegated_length Delegated prefix length.
void initSubnet(const asiolink::IOAddress& subnet,
const asiolink::IOAddress& pool_start,
- const asiolink::IOAddress& pool_end);
+ const asiolink::IOAddress& pool_end,
+ const asiolink::IOAddress& pd_pool_prefix =
+ asiolink::IOAddress::IPV6_ZERO_ADDRESS(),
+ const uint8_t pd_pool_length = 0,
+ const uint8_t pd_delegated_length = 0);
+
/// @brief Initializes FQDN data for a test.
///