Hi,

On Thu, Jul 05, 2012 at 03:55:53PM -0400, Forest Bond wrote:
> On Wed, Jul 04, 2012 at 02:58:24PM +0200, Daniel Wagner wrote:
> > On 03.07.2012 20:12, Forest Bond wrote:
> > >On Tue, Jul 03, 2012 at 08:56:37AM -0300, Paulo Pizarro wrote:
> > >>I'm having a similar problem using the ethernet interface with a Cisco 
> > >>switch.
> > >>I picked up the packets with tcpdump and noticed that the switch
> > >>discards all packets sent by the "connman."
> > >>The Switch is attempting to discover the network topology by
> > >>performing the algorithm "spanning tree".
> > >>And while this procedure does not end it drops all packets.
> > >>The total time can be 30 seconds if it uses the algorithm "rapid
> > >>spanning tree", or it may take 60 seconds if it uses the "spanning
> > >>tree".
> > >>
> > >>I'm using version 1.2.
> > >
> > >I don't think this is related.  In my case we are able to get a lease, we 
> > >just
> > >aren't able to renew or replace it when it expires.  But thanks for the 
> > >info.
> > 
> > Well, we could do a quick test. Can update the gdhcp sub directory?
> > That should be quite easy to do.
> 
> Okay, fair enough.  Let me see what I can arrange.

Alright, this is the same version of ConnMan with gdhcp from recent git:


Jul 11 02:02:35 platform connmand[719]: DHCP: switch listening mode (0 ==> 1)
Jul 11 02:02:35 platform connmand[719]: DHCP: sending DHCP discover request

Jul 11 02:02:36 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 0)
Jul 11 02:02:36 platform connmand[719]: DHCP: start request (retries 0)
Jul 11 02:02:36 platform connmand[719]: DHCP: sending DHCP select request
Jul 11 02:02:36 platform connmand[719]: DHCP: received DHCP packet with message 
type 5 (current state 1)
Jul 11 02:02:36 platform connmand[719]: DHCP: switch listening mode (1 ==> 0)
Jul 11 02:02:36 platform connmand[719]: DHCP: start bound
Jul 11 02:02:36 platform connmand[719]: DHCP: processed DHCP packet (new state 
2)

Jul 11 02:02:40 platform connmand[719]: DHCP: sending DHCP release request
Jul 11 02:02:40 platform connmand[719]: DHCP: switch listening mode (0 ==> 1)

Jul 11 02:02:41 platform connmand[719]: DHCP: sending DHCP discover request
Jul 11 02:02:41 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 0)
Jul 11 02:02:41 platform connmand[719]: DHCP: start request (retries 0)
Jul 11 02:02:41 platform connmand[719]: DHCP: sending DHCP select request
Jul 11 02:02:41 platform connmand[719]: DHCP: received DHCP packet with message 
type 5 (current state 1)
Jul 11 02:02:41 platform connmand[719]: DHCP: switch listening mode (1 ==> 0)
Jul 11 02:02:41 platform connmand[719]: DHCP: start bound
Jul 11 02:02:41 platform connmand[719]: DHCP: processed DHCP packet (new state 
2)

Jul 11 14:02:42 platform connmand[719]: DHCP: start renew timeout
Jul 11 14:02:42 platform connmand[719]: DHCP: switch listening mode (0 ==> 2)
Jul 11 14:02:42 platform connmand[719]: DHCP: sending DHCP renew request

Jul 11 20:02:42 platform connmand[719]: DHCP: start renew timeout
Jul 11 20:02:42 platform connmand[719]: DHCP: sending DHCP renew request

Jul 11 23:02:42 platform connmand[719]: DHCP: start renew timeout
Jul 11 23:02:42 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 00:32:42 platform connmand[719]: DHCP: start renew timeout
Jul 12 00:32:42 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 01:17:42 platform connmand[719]: DHCP: start renew timeout
Jul 12 01:17:42 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 01:40:12 platform connmand[719]: DHCP: start renew timeout
Jul 12 01:40:12 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 01:51:27 platform connmand[719]: DHCP: start renew timeout
Jul 12 01:51:27 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 01:57:04 platform connmand[719]: DHCP: start renew timeout
Jul 12 01:57:04 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 01:59:52 platform connmand[719]: DHCP: start renew timeout
Jul 12 01:59:52 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 02:01:16 platform connmand[719]: DHCP: start renew timeout
Jul 12 02:01:16 platform connmand[719]: DHCP: sending DHCP renew request

Jul 12 02:01:58 platform connmand[719]: DHCP: start renew timeout
Jul 12 02:01:58 platform connmand[719]: DHCP: start rebound

Jul 12 02:02:19 platform connmand[719]: DHCP: start rebound timeout
Jul 12 02:02:19 platform connmand[719]: DHCP: switch listening mode (2 ==> 1)
Jul 12 02:02:19 platform connmand[719]: DHCP: sending DHCP rebound request
Jul 12 02:02:19 platform connmand[719]: DHCP: received DHCP packet with message 
type 6 (current state 4)
Jul 12 02:02:19 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:22 platform connmand[719]: DHCP: restart DHCP timeout
Jul 12 02:02:22 platform connmand[719]: DHCP: restart DHCP (retries 1)
Jul 12 02:02:22 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:22 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:22 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:25 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:25 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:25 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:28 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:28 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:28 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:31 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:31 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:31 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:34 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:34 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:34 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:37 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:37 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:37 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:40 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:40 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:40 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:43 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:43 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:43 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:46 platform connmand[719]: DHCP: sending DHCP discover request
Jul 12 02:02:46 platform connmand[719]: DHCP: received DHCP packet with message 
type 2 (current state 4)
Jul 12 02:02:46 platform connmand[719]: DHCP: processed DHCP packet (new state 
4)

Jul 12 02:02:49 platform connmand[719]: DHCP: switch listening mode (1 ==> 0)
Jul 12 02:02:49 platform connmand[719]: DHCP: sending IPV4LL probe request
Jul 12 02:02:49 platform connmand[719]: DHCP: switch listening mode (0 ==> 3)
Jul 12 02:02:51 platform connmand[719]: DHCP: IPV4LL probe timeout (retries 1)
Jul 12 02:02:51 platform connmand[719]: DHCP: sending IPV4LL probe request
Jul 12 02:02:53 platform connmand[719]: DHCP: IPV4LL probe timeout (retries 2)
Jul 12 02:02:53 platform connmand[719]: DHCP: sending IPV4LL probe request
Jul 12 02:02:55 platform connmand[719]: DHCP: IPV4LL probe timeout (retries 3)
Jul 12 02:02:55 platform connmand[719]: DHCP: sending IPV4LL announce request
Jul 12 02:02:58 platform connmand[719]: DHCP: request timeout (retries 1)
Jul 12 02:02:58 platform connmand[719]: DHCP: sending IPV4LL announce request
Jul 12 02:03:00 platform connmand[719]: DHCP: request timeout (retries 2)
Jul 12 02:03:00 platform connmand[719]: DHCP: switching to monitor mode


Looks like the same issue.  If my original analysis was correct, the following
would probably fix the problem:


diff --git a/gdhcp/client.c b/gdhcp/client.c
index ec1b2a2..7280e1d 100644
--- a/gdhcp/client.c
+++ b/gdhcp/client.c
@@ -1361,6 +1361,7 @@ static void restart_dhcp(GDHCPClient *dhcp_client, int 
retry_times)
 
        dhcp_client->retry_times = retry_times;
        dhcp_client->requested_ip = 0;
+       dhcp_client->state = INIT_SELECTING;
        switch_listening_mode(dhcp_client, L2);
 
        g_dhcp_client_start(dhcp_client, dhcp_client->last_address);


But I suspect the proper place to fix it is in g_dhcp_client_start, here:


if (dhcp_client->retry_times == 0) {
        g_free(dhcp_client->assigned_ip);
        dhcp_client->assigned_ip = NULL;

        dhcp_client->state = INIT_SELECTING;
        re = switch_listening_mode(dhcp_client, L2);
        if (re != 0)
                return re;

        dhcp_client->xid = rand();
        dhcp_client->start = time(NULL);
}

/* ... */

send_discover(dhcp_client, addr);


If my reading of the code is correct, it doesn't make sense to send DHCP
DISCOVER requests unless state == INIT_SELECTING because otherwise we just
ignore the response.  Thoughts?


Thanks,
Forest
-- 
Forest Bond
http://www.alittletooquiet.net
http://www.rapidrollout.com

Attachment: signature.asc
Description: Digital signature

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to