From 7e06ca8889b0f0abf2c6ab0e800081ca8b5739ff Mon Sep 17 00:00:00 2001 From: "K. Lange" Date: Mon, 26 Jul 2021 14:39:12 +0900 Subject: [PATCH] dhclient: Try a few times... --- apps/dhclient.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/dhclient.c b/apps/dhclient.c index 34f0bc98..fe108ef4 100644 --- a/apps/dhclient.c +++ b/apps/dhclient.c @@ -404,6 +404,17 @@ static int configure_interface(const char * if_name) { return 1; } +static int configure_interface_with_backoff(const char * if_name) { + int sleep_times[] = {1,3,5,0}; + + for (int *time = sleep_times; *time; time++) { + if (!configure_interface(if_name)) return 0; + sleep(*time); + } + + return 1; +} + int main(int argc, char * argv[]) { int retval = 0; @@ -420,7 +431,7 @@ int main(int argc, char * argv[]) { struct dirent * ent; while ((ent = readdir(d))) { if (ent->d_name[0] == '.') continue; - if (configure_interface(ent->d_name)) { + if (configure_interface_with_backoff(ent->d_name)) { retval = 1; } }