udhcpd: keep expired leases at startup
No binary (build failed)
—
(log yok)
| @@ -195,7 +195,11 @@ void FAST_FUNC read_leases(const char *file) | |
| uint32_t static_nip; | |
| if (expires <= 0) | |
| - | continue; |
| + | /* We keep expired leases: add_lease() will add |
| + | * a lease with 0 seconds remaining. |
| + | * Fewer IP address changes this way for mass reboot scenario. |
| + | */ |
| + | expires = 0; |
| /* 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); | |
| @@ -17,7 +17,9 @@ static struct dyn_lease *oldest_expired_lease(void) | |
| /* Unexpired leases have g_leases[i].expires >= current time | |
| * and therefore can't ever match */ | |
| for (i = 0; i < server_config.max_leases; i++) { | |
| - | if (g_leases[i].expires < oldest_time) { |
| + | if (g_leases[i].expires == 0 /* empty entry */ |
| + | || g_leases[i].expires < oldest_time |
| + | ) { |
| oldest_time = g_leases[i].expires; | |
| oldest_lease = &g_leases[i]; | |
| } | |