};
#ifndef BB_VER
-static void show_usage(void)
+static void __attribute__ ((noreturn)) show_usage(void)
{
printf(
"Usage: udhcpc [OPTIONS]\n\n"
);
exit(0);
}
+#else
+extern void show_usage(void) __attribute__ ((noreturn));
#endif
{
LOG(LOG_INFO, "Performing a DHCP renew");
switch (state) {
- case RENEWING:
- run_script(NULL, "deconfig");
case BOUND:
- case REBINDING:
change_mode(LISTEN_KERNEL);
+ case RENEWING:
+ case REBINDING:
state = RENEW_REQUESTED;
break;
- case RENEW_REQUESTED:
+ case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
+ run_script(NULL, "deconfig");
case REQUESTING:
case RELEASED:
change_mode(LISTEN_RAW);
switch (c) {
case 'c':
len = strlen(optarg) > 255 ? 255 : strlen(optarg);
- if (client_config.clientid) free(client_config.clientid);
+ free(client_config.clientid);
client_config.clientid = xmalloc(len + 2);
client_config.clientid[OPT_CODE] = DHCP_CLIENT_ID;
client_config.clientid[OPT_LEN] = len;
case 'h':
case 'H':
len = strlen(optarg) > 255 ? 255 : strlen(optarg);
- if (client_config.hostname) free(client_config.hostname);
+ free(client_config.hostname);
client_config.hostname = xmalloc(len + 2);
client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
client_config.hostname[OPT_LEN] = len;
packet_num++;
} else {
/* timed out, go back to init state */
+ if (state == RENEW_REQUESTED) run_script(NULL, "deconfig");
state = INIT_SELECTING;
timeout = now;
packet_num = 0;