Send connman mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.01.org/mailman/listinfo/connman
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of connman digest..."


Today's Topics:

   1. Re: [PATCH] dhcpv6: use correct dhcp renew time when valid
      life-time is infinity. (wangfe-nestlabs)


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

Message: 1
Date: Tue, 31 May 2016 10:42:18 -0700
From: wangfe-nestlabs <[email protected]>
To: Patrik Flykt <[email protected]>
Cc: [email protected]
Subject: Re: [PATCH] dhcpv6: use correct dhcp renew time when valid
        life-time is infinity.
Message-ID: <[email protected]>
Content-Type: text/plain; charset="us-ascii"

Hi Patrik,

I think it is clean to return 0 when T1 is 0 and valid lifetime is infinite 
like below. If it is ok, I will send a new patch.

>>> +           if (expired == 0xffffffff) {
>>> +               /* RFC 3315, 22.6 infinite valid-lifetime */
>>> +               return 0;
>>> +           } 

Thanks,

Feng


> On May 31, 2016, at 10:29 AM, wangfe-nestlabs <[email protected]> wrote:
> 
> How about when T1 is 0 and valid lifetime is infinite,  we can T2 = 
> 0xfffffffff.   Then there will be no dhcp renew happened.  Code like below,
> 
>>> -           T1 = (expired - started) / 2;
>>> -           T2 = (expired - started) / 10 * 8;
>>> +           if (expired == 0xffffffff) {
>>> +               /* RFC 3315, 22.6 infinite valid-lifetime */
>>> +               T2 = 0xffffffff;
>>> +           } else {
>>> +               T1 = (expired - started) / 2;
>>> +               T2 = (expired - started) / 10 * 8;
>>> +           }
>>>     }
> 
> 
> Thanks,
> 
> Feng
> 
> 
>> 
> 
>> On May 31, 2016, at 12:12 AM, Patrik Flykt <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> On Wed, 2016-05-25 at 14:37 -0700, Feng Wang wrote:
>>> Based on RFC 3315, 22.6, the valid life-time is infinite when its
>>> value is 0xffffffff. In the g_dhcpv6_client_get_timeouts, the expire
>>> data type is time_t. If time_t is uint32, the last_request time plus
>>> 0xffffffff will wrapover so that expire time is smaller than current
>>> time. Thus the dhcpv6 will restart immediately(dhcpv6_restart called).
>>> ---
>>>  gdhcp/client.c |  9 +++++++--
>>>  src/dhcpv6.c   | 12 +++++++++---
>>>  2 files changed, 16 insertions(+), 5 deletions(-)
>>> 
>>> diff --git a/gdhcp/client.c b/gdhcp/client.c
>>> index 9012b38..2be3982 100644
>>> --- a/gdhcp/client.c
>>> +++ b/gdhcp/client.c
>>> @@ -835,8 +835,13 @@ int g_dhcpv6_client_get_timeouts(GDHCPClient 
>>> *dhcp_client,
>>>     if (started)
>>>             *started = dhcp_client->last_request;
>>>  
>>> -   if (expire)
>>> -           *expire = dhcp_client->last_request + dhcp_client->expire;
>>> +   if (expire) {
>>> +           if (dhcp_client->expire == 0xffffffff)
>>> +                   /* RFC3315 22.6 infinite valid-lifetime */
>>> +                   *expire = 0xffffffff;
>>> +           else
>>> +                   *expire = dhcp_client->last_request + 
>>> dhcp_client->expire;
>>> +   }
>>>  
>>>     return 0;
>>>  }
>>> diff --git a/src/dhcpv6.c b/src/dhcpv6.c
>>> index 9e21040..abbc1bf 100644
>>> --- a/src/dhcpv6.c
>>> +++ b/src/dhcpv6.c
>>> @@ -1195,7 +1195,7 @@ static int check_restart(struct connman_dhcpv6 *dhcp)
>>>                             NULL, &expired);
>>>     current = time(NULL);
>>>  
>>> -   if (current >= expired) {
>>> +   if (current >= expired && expired != 0xffffffff) {
>>>             DBG("expired by %d secs", (int)(current - expired));
>>>  
>>>             g_timeout_add(0, dhcpv6_restart, dhcp);
>>> @@ -1442,8 +1442,14 @@ int __connman_dhcpv6_start_renew(struct 
>>> connman_network *network,
>>>             /* RFC 3315, 22.4
>>>              * Client can choose the timeout.
>>>              */
>>> -           T1 = (expired - started) / 2;
>>> -           T2 = (expired - started) / 10 * 8;
>>> +           if (expired == 0xffffffff) {
>>> +               /* RFC 3315, 22.6 infinite valid-lifetime */
>>> +               T1 = 0xffffffff / 2;
>>> +               T2 = 0xffffffff/ 10 * 8;
>> 
>> If the timeout is infinite, no timeout should be set in the first
>> place. This now sets a non-infinite timeout to a large value which
>> looks wrong.
>> 
>>> +           } else {
>>> +               T1 = (expired - started) / 2;
>>> +               T2 = (expired - started) / 10 * 8;
>>> +           }
>>>     }
>>>  
>>>     dhcp->callback = callback;
>> 
>> 
>>      Patrik
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.01.org/pipermail/connman/attachments/20160531/fdeb32f8/attachment-0001.html>

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

Subject: Digest Footer

_______________________________________________
connman mailing list
[email protected]
https://lists.01.org/mailman/listinfo/connman


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

End of connman Digest, Vol 7, Issue 21
**************************************

Reply via email to