Update to FreeBSD head 2017-04-04

Git mirror commit 642b174daddbd0efd9bb5f242c43f4ab4db6869f.
This commit is contained in:
Sebastian Huber
2017-04-04 09:36:57 +02:00
parent 3360232e95
commit de8a76da2f
530 changed files with 26497 additions and 31504 deletions

View File

@@ -758,7 +758,11 @@ dhcpack(struct packet *packet)
cancel_timeout(send_request, ip);
/* Figure out the lease time. */
if (ip->client->new->options[DHO_DHCP_LEASE_TIME].data)
if (ip->client->config->default_actions[DHO_DHCP_LEASE_TIME] ==
ACTION_SUPERSEDE)
ip->client->new->expiry = getULong(
ip->client->config->defaults[DHO_DHCP_LEASE_TIME].data);
else if (ip->client->new->options[DHO_DHCP_LEASE_TIME].data)
ip->client->new->expiry = getULong(
ip->client->new->options[DHO_DHCP_LEASE_TIME].data);
else
@@ -771,21 +775,34 @@ dhcpack(struct packet *packet)
if (ip->client->new->expiry < 60)
ip->client->new->expiry = 60;
/* Take the server-provided renewal time if there is one;
otherwise figure it out according to the spec. */
if (ip->client->new->options[DHO_DHCP_RENEWAL_TIME].len)
/* Unless overridden in the config, take the server-provided renewal
* time if there is one; otherwise figure it out according to the spec.
* Also make sure the renewal time does not exceed the expiry time.
*/
if (ip->client->config->default_actions[DHO_DHCP_RENEWAL_TIME] ==
ACTION_SUPERSEDE)
ip->client->new->renewal = getULong(
ip->client->config->defaults[DHO_DHCP_RENEWAL_TIME].data);
else if (ip->client->new->options[DHO_DHCP_RENEWAL_TIME].len)
ip->client->new->renewal = getULong(
ip->client->new->options[DHO_DHCP_RENEWAL_TIME].data);
else
ip->client->new->renewal = ip->client->new->expiry / 2;
if (ip->client->new->renewal > ip->client->new->expiry / 2)
ip->client->new->renewal = ip->client->new->expiry / 2;
/* Same deal with the rebind time. */
if (ip->client->new->options[DHO_DHCP_REBINDING_TIME].len)
if (ip->client->config->default_actions[DHO_DHCP_REBINDING_TIME] ==
ACTION_SUPERSEDE)
ip->client->new->rebind = getULong(
ip->client->config->defaults[DHO_DHCP_REBINDING_TIME].data);
else if (ip->client->new->options[DHO_DHCP_REBINDING_TIME].len)
ip->client->new->rebind = getULong(
ip->client->new->options[DHO_DHCP_REBINDING_TIME].data);
else
ip->client->new->rebind = ip->client->new->renewal +
ip->client->new->renewal / 2 + ip->client->new->renewal / 4;
ip->client->new->rebind = ip->client->new->renewal * 7 / 4;
if (ip->client->new->rebind > ip->client->new->renewal * 7 / 4)
ip->client->new->rebind = ip->client->new->renewal * 7 / 4;
ip->client->new->expiry += cur_time;
/* Lease lengths can never be negative. */