<div dir="ltr">Hi,<div><br></div><div>  It may not be possible to use ::2 as both SOLICIT came at around same time. In first attempt it allocated ::3.  In the second attempt after reboot there was release of ::3. So how can I force it to reuse ::3 instead of looking for new IP ::4 or ::5. kea code has following logic to reuse expire lease:</div><div><br></div><div><pre style="background-color:rgb(43,43,43);color:rgb(169,183,198);font-family:Menlo;font-size:9pt">} <span style="color:rgb(204,120,50)">else </span>{<br><br>    <span style="color:rgb(128,128,128)">// If the lease is expired, we may likely reuse it, but...<br></span><span style="color:rgb(128,128,128)">    </span><span style="color:rgb(204,120,50)">if </span>(lease->expired()) {<br><br>        ConstHostPtr host<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        if </span>(hr_mode != Network::HR_DISABLED) {<br>            host = HostMgr::instance().get6(subnet->getID()<span style="color:rgb(204,120,50)">, </span>hint)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>}<br><br>        <span style="color:rgb(128,128,128)">// Let's check if there is a reservation for this address.<br></span><span style="color:rgb(128,128,128)">        </span><span style="color:rgb(204,120,50)">if </span>(!host) {<br><br>            <span style="color:rgb(128,128,128)">// Copy an existing, expired lease so as it can be returned<br></span><span style="color:rgb(128,128,128)">            // to the caller.<br></span><span style="color:rgb(128,128,128)">            </span>Lease6Ptr old_lease(<span style="color:rgb(204,120,50)">new </span>Lease6(*lease))<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            </span>ctx.currentIA().old_leases_.push_back(old_lease)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">            </span><span style="color:rgb(128,128,128)">/// We found a lease and it is expired, so we can reuse it<br></span><span style="color:rgb(128,128,128)">            </span>lease = reuseExpiredLease(lease<span style="color:rgb(204,120,50)">, </span>ctx<span style="color:rgb(204,120,50)">, </span>pool->getLength()<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                                      </span>callout_status)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">            </span><span style="color:rgb(128,128,128)">/// @</span><span style="color:rgb(168,192,35);font-style:italic">todo: We support only one lease per ia for now<br></span><span style="color:rgb(168,192,35);font-style:italic">            </span>leases.push_back(lease)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">            return </span>(leases)<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)"><br></span><span style="color:rgb(204,120,50)">        </span>} <span style="color:rgb(204,120,50)">else </span>{<br>            LOG_DEBUG(alloc_engine_logger<span style="color:rgb(204,120,50)">, </span>ALLOC_ENGINE_DBG_TRACE<span style="color:rgb(204,120,50)">,<br></span><span style="color:rgb(204,120,50)">                      </span>ALLOC_ENGINE_V6_EXPIRED_HINT_RESERVED)<br>                .arg(ctx.query_->getLabel())<br>                .arg(hint.toText())<span style="color:rgb(204,120,50)">;<br></span><span style="color:rgb(204,120,50)">        </span>}<br>    }<br>}</pre></div><div><br></div><div><br></div><div> Not sure why this logic is not getting triggered.</div><div><br></div><div>Thanks,</div><div>Mayank</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 2, 2020 at 11:39 AM Mayank Tiwari <<a href="mailto:mike.tiwari@gmail.com">mike.tiwari@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>  We have requirement to use same IPv6 for the host after the reboot of the host. What we have observed is that every SOLICIT message results in allocation of new IP to the host.</div><div><br></div><div>First solicit:</div><div>2020-06-02 14:29:41.499 DEBUG [kea-dhcp6.alloc-engine/1] ALLOC_ENGINE_V6_ALLOC_UNRESERVED no static reservations available - trying to dynamically allocate leases for client duid=[00:03:00:01:**:45:34], tid=0x8be064<br></div><div><br></div><div>Second immediate solicit:</div><div>2020-06-02 14:29:43.103 DEBUG [kea-dhcp6.alloc-engine/1] ALLOC_ENGINE_V6_ALLOC_LEASES_NO_HR no reservations found but leases exist for client duid=[00:03:00:01:**:45:34], tid=0xcae8c5<br></div><div><br></div><div>  Both solicit allocate different IP. (First one ::2, Second one ::3)</div><div><br></div><div> Similarly after reboot of host:</div><div><br></div><div>First solicit:</div><div>2020-06-02 14:35:38.020 DEBUG [kea-dhcp6.alloc-engine/1] ALLOC_ENGINE_V6_ALLOC_UNRESERVED no static reservations available - trying to dynamically allocate leases for client duid=[00:03:00:01:***:45:34], tid=0xac71b9<br></div><div>Second immediate solicit:</div><div>2020-06-02 14:35:38.023 DEBUG [kea-dhcp6.alloc-engine/1] ALLOC_ENGINE_V6_ALLOC_UNRESERVED no static reservations available - trying to dynamically allocate leases for client duid=[00:03:00:01:***:45:34], tid=0xac71b9<br></div><div>Both solicit allocates different IP (First one ::4, Second one: ::5)</div><div><br></div><div>  How can I override this behaviour in kea so that for the given DUID it keeps using same IP address which is allocated for the first time when it SOLICITS(::2 in this example).</div><div><br></div><div>Thanks,</div><div>Mayank</div><div><br></div><div><br></div></div>
</blockquote></div>