Applied in a simplified form, without config option. Thanks.
On Thu, Feb 18, 2016 at 12:10 PM, Christian Lindeberg <[email protected]> wrote: > Let udhcpd retain the information about expired leases when restarting > so that the leases are reserved until they possibly become the oldest > expired lease. > > This reduces the frequency of IP address changes for example when the > DHCP server and a group of clients, who do not store and request their > previously offered IP address across restarts, are collectively restarted > and the startup order of the clients are not guaranteed. > > Signed-off-by: Christian Lindeberg <christian.lindeberg at axis.com> > --- > networking/udhcp/Config.src | 12 ++++++++++++ > networking/udhcp/files.c | 4 ++++ > 2 files changed, 16 insertions(+) > > diff --git a/networking/udhcp/Config.src b/networking/udhcp/Config.src > index > c34c8d6f08ce63e51b13a035e30f5985009ddd57..5111c207c6f7adf2b449975f4b2119fe1d459cfc > 100644 > --- a/networking/udhcp/Config.src > +++ b/networking/udhcp/Config.src > @@ -55,6 +55,18 @@ config FEATURE_UDHCPD_BASE_IP_ON_MAC > for the same client to (almost always) contain the same > IP address. > > +config FEATURE_UDHCPD_KEEP_EXPIRED_LEASES > + bool "Keep expired leases at startup" > + default n > + depends on UDHCPD > + help > + If selected, udhcpd will retain the information about expired > + leases when restarting. > + > + This reduces the frequency of IP address changes and makes > + consecutive DHCPOFFERS for the same client to (almost always) > + contain the same IP address. > + > config DHCPD_LEASES_FILE > string "Absolute path to lease file" > default "/var/lib/misc/udhcpd.leases" > diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c > index > 1c8808c0f1fcc911c54ec093421eb535a820c48d..18d4613df4d29ded6acd83f2188fb806057315af > 100644 > --- a/networking/udhcp/files.c > +++ b/networking/udhcp/files.c > @@ -195,7 +195,11 @@ void FAST_FUNC read_leases(const char *file) > uint32_t static_nip; > > if (expires <= 0) > +#if ENABLE_FEATURE_UDHCPD_KEEP_EXPIRED_LEASES > + expires = 0; > +#else > continue; > +#endif > > /* Check if there is a different static lease for > this IP or MAC */ > static_nip = > get_static_nip_by_mac(server_config.static_leases, lease.lease_mac); > -- > 1.7.10.4 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
