> No change with the patch it did not go to the background.
> Output is attached.  I cut it down to 2 cycles, but goes forever as before.

Yes, output confirms what I expected. DHCP server doesn't respond
to requests "Please ACK my address".

Please look in networking/udhcp/dhcpc.c - can you add debug
printouts (shown as +bb_error_msg etc)?

                if (retval == 0) {
                        /* We will restart the wait in any case */
                        already_waited_sec = 0;

+bb_error_msg("state:%d", state);
                        switch (state) {
                        case INIT_SELECTING:
                                if (packet_num < discover_retries) {
                                        if (packet_num == 0)
                                                xid = random_xid();

                                        send_discover(xid, requested_ip); /* 
broadcast */

                                        timeout = discover_timeout;
                                        packet_num++;
                                        continue;
                                }
 leasefail:
                                udhcp_run_script(NULL, "leasefail");
#if BB_MMU /* -b is not supported on NOMMU */
                                if (opt & OPT_b) { /* background if no lease */
                                        bb_info_msg("No lease, forking to 
background");
                                        client_background();
                                        /* do not background again! */
                                        opt = ((opt & ~OPT_b) | OPT_f);
                                } else
#endif
                                if (opt & OPT_n) { /* abort if no lease */
                                        bb_info_msg("No lease, failing");
                                        retval = 1;
                                        goto ret;
                                }
                                /* wait before trying again */
                                timeout = tryagain_timeout;
                                packet_num = 0;
                                continue;
                        case RENEW_REQUESTED:
                        case REQUESTING:
+bb_error_msg("state:%d packet_num:%d discover_retries:%d", state,
packet_num, discover_retries);
                                if (packet_num < discover_retries) {
                                        /* send request packet */
                                        if (state == RENEW_REQUESTED) /* 
unicast */
                                                send_renew(xid, server_addr, 
requested_ip);
                                        else /* broadcast */
                                                send_selecting(xid, 
server_addr, requested_ip);

                                        timeout = discover_timeout;
                                        packet_num++;
                                        continue;
                                }
+bb_error_msg("timed out waiting for responce");
                                /* timed out, go back to init state */
                                if (state == RENEW_REQUESTED)
                                        udhcp_run_script(NULL, "deconfig");
                                change_listen_mode(LISTEN_RAW);
                                state = INIT_SELECTING;
                                /* "discover...select...discover..." loops
                                 * were seen in the wild. Treat then similarly
                                 * to "no response to discover" case */
                                if (state == REQUESTING)
+{bb_error_msg("discover/select loop detected, goto leasefail");
                                        goto leasefail;
+}
                                timeout = 0;
                                packet_num = 0;
                                continue;
                        case BOUND:


The output ought to explain why it does not do what I expect.

--
vda
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to