[Dibbler] DHCPv6-PD Solicit instead of Request when NoBinding failure occurs during IA_PD Renew

Deepak Krishnan deepak.r.krishnan at gmail.com
Thu Jun 18 08:55:16 CEST 2020


Hi Tomek,

Thanks for the inputs for the REQUEST message bug. Will take a look in that
direction.

Regarding the patch for client-notify script invocation upon expiry, I am
currently doing tests and  long run to ensure that changes I did is not
causing any regression.
I have brought in a new TIfaceMgr::notifyScripts() method which is in-turn
invoked from TClntTransMgr::removeExpired() & TClntMsgRebind::doDuties()
whenever expiry occurs or rebinding message transmission stops before
proceeding to restart DHCPv6 discovery process.
If no further issues are found in my tests, I will share the patch here.

Thanks,
Deepak

Date: Tue, 16 Jun 2020 13:21:07 +0200
From: Tomek Mrugalski <thomson at klub.com.pl>
To: dibbler at klub.com.pl
Subject: Re: [Dibbler] DHCPv6-PD Solicit instead of Request when
        NoBinding failure occurs during IA_PD Renew
Message-ID: <187c3c2c-1f06-ac60-dae1-32fb60bbc33d at klub.com.pl>
Content-Type: text/plain; charset="utf-8"

On 16/06/2020 07:17, Deepak Krishnan wrote:

> On code walkthrough and validation, found that REQUEST msg is not
> being sent since function stops its execution with log "/Unable to
> send REQUEST. There are no backup servers left./".
> Thereafter, SOLICIT message is being sent to the DHCPv6 server in the
> network.
Ah, so it's a bug.
>
> /
> /
> TClntMsgRequest::TClntMsgRequest(TOptList opts, int iface)
> ??? :TClntMsg(iface, SPtr<TIPv6Addr>(), REQUEST_MSG) {
> ...
> ??? int backupCount = ClntTransMgr().getAdvertiseLstCount();
> ??? if (!backupCount)
> ??? {
> ??????? Log(Error) << "Unable to send REQUEST. There are no backup
> servers left." << LogEnd;
> ??????? setState( opts, STATE_NOTCONFIGURED);
> ??????? this->IsDone = true;
> ??????? return;
> ??? }
> Is there any tweak which can be put which forcefully does a REQUEST
> msg even though no backup servers present in the network?

You could call it a tweak, but it's really a bug fix or a small new
functionality. I haven't looked at the code in years and forgot the
details long time ago. The whole backup servers list is a bit fragile.
In this case you don't want to use any other server, just continue with
this one.

Am afraid there's most likely no simple couple lines fix here. I would
extend TClntMsgRequest::TClntMsgRequest(TOptList opts, int iface) with
an optional parameter serverDUID. If specified, the code should omit
looking at the backup list, not call delFfirstAdvertise() or
getAdvertiseDUID().

Hopefully this will force Dibbler to send a Request. Whether it will
understand what to do with the Reply that comes as a result, it's an
entirely different problem.

> -----
> I wrote a patch which invokes client-notify script upon expiration
> (alongwith setting of the parameters ) to meet my requirements and its
> working fine.

Cool. Any chance for a Pull Request with this change? It may be useful
for other users.

Cheers,

Tomek

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <
http://klub.com.pl/pipermail/dibbler/attachments/20200616/f49175dc/attachment-0001.htm
>

------------------------------

Subject: Digest Footer

_______________________________________________
Dibbler mailing list
Dibbler at klub.com.pl
http://klub.com.pl/cgi-bin/mailman/listinfo/dibbler


------------------------------

End of Dibbler Digest, Vol 109, Issue 6
***************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://klub.com.pl/pipermail/dibbler/attachments/20200618/ee656211/attachment.htm>


More information about the Dibbler mailing list