changeset 1319:78eb68827c8b draft

Enforce a minimum lease of 20 seconds so we can do things like ARP check and restart services.
author Roy Marples <roy@marples.name>
date Wed, 13 May 2009 18:14:50 +0000
parents 905ab2c2467e
children 8c7fd91fb635
files bind.c
diffstat 1 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/bind.c	Mon May 11 07:18:10 2009 +0000
+++ b/bind.c	Wed May 13 18:14:50 2009 +0000
@@ -49,6 +49,9 @@
 #  define _PATH_DEVNULL "/dev/null"
 #endif
 
+/* We do things after aquiring the lease, so ensure we have enough time for them */
+#define DHCP_MIN_LEASE 20
+
 #ifndef THERE_IS_NO_FORK
 pid_t
 daemonise(void)
@@ -164,6 +167,12 @@
 			syslog(LOG_INFO, "%s: leased %s for infinity",
 			    iface->name, inet_ntoa(lease->addr));
 		} else {
+			if (lease->leasetime < DHCP_MIN_LEASE) {
+				syslog(LOG_WARNING,
+				    "%s: minimum lease is %d seconds",
+				    iface->name, DHCP_MIN_LEASE);
+				lease->leasetime = DHCP_MIN_LEASE;
+			}
 			if (lease->rebindtime == 0)
 				lease->rebindtime = lease->leasetime * T2;
 			else if (lease->rebindtime >= lease->leasetime) {