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] Remove wifi service directories which are not
      provisioned and not autoconnect and non-favorite when connmand
      starts up. Add removed flag to prevent connmand from re-creating
      removed provision service directory. (wangfe-nestlabs)
   2. Re: [PATCH] dhcpv6: use correct dhcp renew time when valid
      life-time is infinity. (wangfe-nestlabs)


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

Message: 1
Date: Tue, 31 May 2016 10:17:17 -0700
From: wangfe-nestlabs <[email protected]>
To: Patrik Flykt <[email protected]>
Cc: [email protected]
Subject: Re: [PATCH] Remove wifi service directories which are not
        provisioned and not autoconnect and non-favorite when connmand starts
        up. Add removed flag to prevent connmand from re-creating removed
        provision service directory.
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii

Please ignore this patch.  Because it is not applied to the current code.

Thanks,

Feng

> On May 31, 2016, at 12:09 AM, Patrik Flykt <[email protected]> 
> wrote:
> 
> 
>       Hi,
> 
> On Fri, 2016-05-06 at 14:37 -0700, Feng Wang wrote:
>> ---
> 
> First of all, write a *short* summary line for subject and then write
> the actual description in the commit message as I asked you to do after
> your last patch.
> 
> What is the issue this patch is trying to fix?
> 
> Cheers,
> 
>       Patrik
> 
>>  src/config.c  |  2 +-
>>  src/connman.h |  2 ++
>>  src/service.c | 33 ++++++++++++++++++++++++++++++---
>>  3 files changed, 33 insertions(+), 4 deletions(-)
>> 
>> diff --git a/src/config.c b/src/config.c
>> index dcbee06..88e35b1 100644
>> --- a/src/config.c
>> +++ b/src/config.c
>> @@ -186,7 +186,7 @@ static void unregister_service(gpointer data)
>>                      __connman_service_set_immutable(service,
>> false);
>>                      __connman_service_set_config(service, NULL,
>> NULL);
>>                      __connman_service_remove(service);
>> -
>> +                    __connman_service_set_removed(service,
>> true);
>>                      /*
>>                       * Ethernet or gadget service cannot be
>> removed by
>>                       * __connman_service_remove() so reset the
>> ipconfig
>> diff --git a/src/connman.h b/src/connman.h
>> index e849ed8..0eb475b 100644
>> --- a/src/connman.h
>> +++ b/src/connman.h
>> @@ -697,6 +697,8 @@ int __connman_service_set_immutable(struct
>> connman_service *service,
>>                                              bool immutable);
>>  int __connman_service_set_ignore(struct connman_service *service,
>>                                              bool ignore);
>> +int __connman_service_set_removed(struct connman_service *service,
>> +                                            bool removed);
>>  void __connman_service_set_search_domains(struct connman_service
>> *service,
>>                                      char **domains);
>>  
>> diff --git a/src/service.c b/src/service.c
>> index 768426b..8231f4f 100644
>> --- a/src/service.c
>> +++ b/src/service.c
>> @@ -125,6 +125,7 @@ struct connman_service {
>>      bool hidden_service;
>>      char *config_file;
>>      char *config_entry;
>> +    bool removed;
>>  };
>>  
>>  static bool allow_property_changed(struct connman_service *service);
>> @@ -4608,6 +4609,7 @@ static void service_initialize(struct
>> connman_service *service)
>>      service->hidden = false;
>>  
>>      service->ignore = false;
>> +    service->removed = false;
>>  
>>      service->connect_reason =
>> CONNMAN_SERVICE_CONNECT_REASON_NONE;
>>  
>> @@ -5023,6 +5025,17 @@ int __connman_service_set_ignore(struct
>> connman_service *service,
>>      return 0;
>>  }
>>  
>> +int __connman_service_set_removed(struct connman_service *service,
>> +                                            bool removed)
>> +{
>> +    if (!service)
>> +            return -EINVAL;
>> +
>> +    service->removed = removed;
>> +
>> +    return 0;
>> +}
>> +
>>  void __connman_service_set_string(struct connman_service *service,
>>                                const char *key, const char
>> *value)
>>  {
>> @@ -6863,6 +6876,11 @@ void
>> __connman_service_update_from_network(struct connman_network
>> *network)
>>      if (!service->network)
>>              return;
>>  
>> +    if (service->removed) {
>> +            /* don't update/create removed provisioned service
>> */
>> +            return;
>> +    }
>> +
>>      name = connman_network_get_string(service->network, "Name");
>>      if (g_strcmp0(service->name, name) != 0) {
>>              g_free(service->name);
>> @@ -6995,8 +7013,9 @@ static void remove_unprovisioned_services(void)
>>  {
>>      gchar **services;
>>      GKeyFile *keyfile, *configkeyfile;
>> -    char *file, *section;
>> +    char *file, *section, *autoconnect;
>>      int i = 0;
>> +    bool value;
>>  
>>      services = connman_storage_get_services();
>>      if (!services)
>> @@ -7012,9 +7031,17 @@ static void
>> remove_unprovisioned_services(void)
>>  
>>              file = g_key_file_get_string(keyfile, services[i],
>>                                      "Config.file", NULL);
>> -            if (!file)
>> +            if (!file) {
>> +                    /* remove unprovisoned and Not autoconnect
>> and non-favorite service directory */
>> +                    autoconnect = g_key_file_get_string(keyfile,
>> services[i],
>> +                                                            "Aut
>> oConnect", NULL);
>> +                    value = g_key_file_get_boolean(keyfile,
>> services[i], "Favorite", NULL);
>> +                    if (!autoconnect && !value) {
>> +                            __connman_storage_remove_service(ser
>> vices[i]);
>> +                    }
>> +                    g_free(autoconnect);
>>                      goto next;
>> -
>> +            }
>>              section = g_key_file_get_string(keyfile,
>> services[i],
>>                                      "Config.ident", NULL);
>>              if (!section)



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

Message: 2
Date: Tue, 31 May 2016 10:29:45 -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"

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]> 
> 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/cde868c1/attachment.html>

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

Subject: Digest Footer

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


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

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

Reply via email to