Tidy up previous commit.

This commit is contained in:
Simon Kelley
2014-07-13 22:12:45 +01:00
parent 24b167ada8
commit 6d8e8ac0fa
4 changed files with 27 additions and 23 deletions

View File

@@ -1247,7 +1247,6 @@ char *host_from_dns(struct in_addr addr);
#ifdef HAVE_DHCP
void lease_update_file(time_t now);
void lease_update_dns(int force);
void lease_update_interface(time_t now);
void lease_init(time_t now);
struct dhcp_lease *lease4_allocate(struct in_addr addr);
#ifdef HAVE_DHCP6

View File

@@ -352,20 +352,20 @@ static int find_interface_v4(struct in_addr local, int if_index, char *label,
struct in_addr netmask, struct in_addr broadcast, void *vparam)
{
struct dhcp_lease *lease;
int prefix;
int prefix = netmask_length(netmask);
(void) label;
(void) broadcast;
(void) vparam;
for (lease = leases; lease; lease = lease->next)
if (!(lease->flags & (LEASE_TA | LEASE_NA))) {
prefix = netmask_length(netmask);
if (is_same_net(local, lease->addr, netmask) && prefix > lease->new_prefixlen) {
lease->new_interface = if_index;
if (!(lease->flags & (LEASE_TA | LEASE_NA)) &&
is_same_net(local, lease->addr, netmask) &&
prefix > lease->new_prefixlen)
{
lease->new_interface = if_index;
lease->new_prefixlen = prefix;
}
}
return 1;
}
@@ -425,11 +425,19 @@ void lease_update_slaac(time_t now)
start-time. */
void lease_find_interfaces(time_t now)
{
struct dhcp_lease *lease;
for (lease = leases; lease; lease = lease->next)
lease->new_prefixlen = lease->new_interface = 0;
iface_enumerate(AF_INET, &now, find_interface_v4);
#ifdef HAVE_DHCP6
iface_enumerate(AF_INET6, &now, find_interface_v6);
#endif
lease_update_interface(now);
for (lease = leases; lease; lease = lease->next)
if (lease->new_interface != 0)
lease_set_interface(lease, lease->new_interface, now);
}
#ifdef HAVE_DHCP6
@@ -504,16 +512,6 @@ void lease_update_dns(int force)
}
}
void lease_update_interface(time_t now)
{
struct dhcp_lease *lease;
for (lease = leases; lease; lease = lease->next)
if (lease->new_interface > 0) {
lease_set_interface(lease, lease->new_interface, now);
}
}
void lease_prune(struct dhcp_lease *target, time_t now)
{
struct dhcp_lease *lease, *tmp, **up;

View File

@@ -323,11 +323,12 @@ int netmask_length(struct in_addr mask)
{
int zero_count = 0;
while (0x0 == (mask.s_addr & 0x1)) {
mask.s_addr >>= 1;
++zero_count;
}
while (0x0 == (mask.s_addr & 0x1) && zero_count < 32)
{
mask.s_addr >>= 1;
zero_count++;
}
return 32 - zero_count;
}