bool in_new = false;
for (auto const& new_lease : ctx.new_leases_) {
if ((new_lease->addr_ == old_lease->addr_) &&
- (new_lease->prefixlen_ == old_lease->prefixlen_)) {
+ (new_lease->type_ != Lease::TYPE_PD ||
+ (new_lease->prefixlen_ == old_lease->prefixlen_))) {
in_new = true;
break;
}
lease->type_ = textToType(lease_type->stringValue());
// prefix length
- ConstElementPtr prefix_len = element->get("prefix-len");
- if (lease->type_ == Lease::TYPE_PD) {
+ if (lease->type_ != Lease::TYPE_PD) {
+ lease->prefixlen_ = 128;
+ } else {
+ ConstElementPtr prefix_len = element->get("prefix-len");
if (!prefix_len || (prefix_len->getType() != Element::integer)) {
isc_throw(BadValue, "prefix-len is not present in the parsed lease"
" or it is not a number");
// IPv6 specific properties.
EXPECT_EQ(Lease::TYPE_NA, lease->type_);
- EXPECT_EQ(0, lease->prefixlen_);
+ EXPECT_EQ(128, lease->prefixlen_);
EXPECT_EQ(123456, lease->iaid_);
ASSERT_TRUE(lease->duid_);
EXPECT_EQ("00:01:02:03:04:05:06:0a:0b:0c:0d:0e:0f", lease->duid_->toText());