Patch from Giuseppe Ciotta to specify retry count.
This commit is contained in:
parent
0d8766a3b1
commit
a2841e6d4b
@ -3239,7 +3239,7 @@
|
|||||||
"Adjust filesystem options on ext[23] filesystems.\n\n"
|
"Adjust filesystem options on ext[23] filesystems.\n\n"
|
||||||
|
|
||||||
#define udhcpc_trivial_usage \
|
#define udhcpc_trivial_usage \
|
||||||
"[-Cfbnqv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n[-p pidfile] [-r IP] [-s script]"
|
"[-Cfbnqtv] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]\n[-p pidfile] [-r IP] [-s script]"
|
||||||
#define udhcpc_full_usage \
|
#define udhcpc_full_usage \
|
||||||
"\t-c,\t--clientid=CLIENTID\tSet client identifier\n" \
|
"\t-c,\t--clientid=CLIENTID\tSet client identifier\n" \
|
||||||
"\t-C,\t--clientid-none\tSuppress default client identifier\n" \
|
"\t-C,\t--clientid-none\tSuppress default client identifier\n" \
|
||||||
@ -3254,6 +3254,7 @@
|
|||||||
"\t-q,\t--quit\tQuit after obtaining lease\n" \
|
"\t-q,\t--quit\tQuit after obtaining lease\n" \
|
||||||
"\t-r,\t--request=IP\tIP address to request (default: none)\n" \
|
"\t-r,\t--request=IP\tIP address to request (default: none)\n" \
|
||||||
"\t-s,\t--script=file\tRun file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
|
"\t-s,\t--script=file\tRun file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
|
||||||
|
"\t-t,\t--retries=NUM\tSend up to NUM request packets\n"\
|
||||||
"\t-v,\t--version\tDisplay version"
|
"\t-v,\t--version\tDisplay version"
|
||||||
|
|
||||||
#define udhcpd_trivial_usage \
|
#define udhcpd_trivial_usage \
|
||||||
|
@ -58,6 +58,7 @@ struct client_config_t client_config = {
|
|||||||
.hostname = NULL,
|
.hostname = NULL,
|
||||||
.fqdn = NULL,
|
.fqdn = NULL,
|
||||||
.ifindex = 0,
|
.ifindex = 0,
|
||||||
|
.retries = 3,
|
||||||
.arp = "\0\0\0\0\0\0", /* appease gcc-3.0 */
|
.arp = "\0\0\0\0\0\0", /* appease gcc-3.0 */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -202,13 +203,14 @@ int main(int argc, char *argv[])
|
|||||||
{"request", required_argument, 0, 'r'},
|
{"request", required_argument, 0, 'r'},
|
||||||
{"script", required_argument, 0, 's'},
|
{"script", required_argument, 0, 's'},
|
||||||
{"version", no_argument, 0, 'v'},
|
{"version", no_argument, 0, 'v'},
|
||||||
|
{"retries", required_argument, 0, 't'},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* get options */
|
/* get options */
|
||||||
while (1) {
|
while (1) {
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:v", arg_options, &option_index);
|
c = getopt_long(argc, argv, "c:CV:fbH:h:F:i:np:qr:s:t:v", arg_options, &option_index);
|
||||||
if (c == -1) break;
|
if (c == -1) break;
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
@ -284,6 +286,9 @@ int main(int argc, char *argv[])
|
|||||||
case 's':
|
case 's':
|
||||||
client_config.script = optarg;
|
client_config.script = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
client_config.retries = atoi(optarg);
|
||||||
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
printf("udhcpcd, version %s\n\n", VERSION);
|
printf("udhcpcd, version %s\n\n", VERSION);
|
||||||
return 0;
|
return 0;
|
||||||
@ -353,7 +358,7 @@ int main(int argc, char *argv[])
|
|||||||
/* timeout dropped to zero */
|
/* timeout dropped to zero */
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case INIT_SELECTING:
|
case INIT_SELECTING:
|
||||||
if (packet_num < 3) {
|
if (packet_num < client_config.retries) {
|
||||||
if (packet_num == 0)
|
if (packet_num == 0)
|
||||||
xid = random_xid();
|
xid = random_xid();
|
||||||
|
|
||||||
@ -378,7 +383,7 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
case RENEW_REQUESTED:
|
case RENEW_REQUESTED:
|
||||||
case REQUESTING:
|
case REQUESTING:
|
||||||
if (packet_num < 3) {
|
if (packet_num < client_config.retries) {
|
||||||
/* send request packet */
|
/* send request packet */
|
||||||
if (state == RENEW_REQUESTED)
|
if (state == RENEW_REQUESTED)
|
||||||
send_renew(xid, server_addr, requested_ip); /* unicast */
|
send_renew(xid, server_addr, requested_ip); /* unicast */
|
||||||
|
Loading…
Reference in New Issue
Block a user