mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Tidy up previous commit.
This commit is contained in:
@@ -14,6 +14,12 @@ version 2.72
|
|||||||
Fix failure to build against Nettle-3.0. Thanks to Steven
|
Fix failure to build against Nettle-3.0. Thanks to Steven
|
||||||
Barth for spotting this and finding the fix.
|
Barth for spotting this and finding the fix.
|
||||||
|
|
||||||
|
When assigning existing DHCP leases to intefaces by comparing
|
||||||
|
networks, handle the case that two or more interfaces have the
|
||||||
|
same network part, but different prefix lengths (favour the
|
||||||
|
longer prefix length.) Thanks to Lung-Pin Chang for the
|
||||||
|
patch.
|
||||||
|
|
||||||
|
|
||||||
version 2.71
|
version 2.71
|
||||||
Subtle change to error handling to help DNSSEC validation
|
Subtle change to error handling to help DNSSEC validation
|
||||||
|
|||||||
@@ -1247,7 +1247,6 @@ char *host_from_dns(struct in_addr addr);
|
|||||||
#ifdef HAVE_DHCP
|
#ifdef HAVE_DHCP
|
||||||
void lease_update_file(time_t now);
|
void lease_update_file(time_t now);
|
||||||
void lease_update_dns(int force);
|
void lease_update_dns(int force);
|
||||||
void lease_update_interface(time_t now);
|
|
||||||
void lease_init(time_t now);
|
void lease_init(time_t now);
|
||||||
struct dhcp_lease *lease4_allocate(struct in_addr addr);
|
struct dhcp_lease *lease4_allocate(struct in_addr addr);
|
||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
|
|||||||
30
src/lease.c
30
src/lease.c
@@ -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 in_addr netmask, struct in_addr broadcast, void *vparam)
|
||||||
{
|
{
|
||||||
struct dhcp_lease *lease;
|
struct dhcp_lease *lease;
|
||||||
int prefix;
|
int prefix = netmask_length(netmask);
|
||||||
|
|
||||||
(void) label;
|
(void) label;
|
||||||
(void) broadcast;
|
(void) broadcast;
|
||||||
(void) vparam;
|
(void) vparam;
|
||||||
|
|
||||||
for (lease = leases; lease; lease = lease->next)
|
for (lease = leases; lease; lease = lease->next)
|
||||||
if (!(lease->flags & (LEASE_TA | LEASE_NA))) {
|
if (!(lease->flags & (LEASE_TA | LEASE_NA)) &&
|
||||||
prefix = netmask_length(netmask);
|
is_same_net(local, lease->addr, netmask) &&
|
||||||
if (is_same_net(local, lease->addr, netmask) && prefix > lease->new_prefixlen) {
|
prefix > lease->new_prefixlen)
|
||||||
|
{
|
||||||
lease->new_interface = if_index;
|
lease->new_interface = if_index;
|
||||||
lease->new_prefixlen = prefix;
|
lease->new_prefixlen = prefix;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -425,11 +425,19 @@ void lease_update_slaac(time_t now)
|
|||||||
start-time. */
|
start-time. */
|
||||||
void lease_find_interfaces(time_t now)
|
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);
|
iface_enumerate(AF_INET, &now, find_interface_v4);
|
||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
iface_enumerate(AF_INET6, &now, find_interface_v6);
|
iface_enumerate(AF_INET6, &now, find_interface_v6);
|
||||||
#endif
|
#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
|
#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)
|
void lease_prune(struct dhcp_lease *target, time_t now)
|
||||||
{
|
{
|
||||||
struct dhcp_lease *lease, *tmp, **up;
|
struct dhcp_lease *lease, *tmp, **up;
|
||||||
|
|||||||
@@ -323,9 +323,10 @@ int netmask_length(struct in_addr mask)
|
|||||||
{
|
{
|
||||||
int zero_count = 0;
|
int zero_count = 0;
|
||||||
|
|
||||||
while (0x0 == (mask.s_addr & 0x1)) {
|
while (0x0 == (mask.s_addr & 0x1) && zero_count < 32)
|
||||||
|
{
|
||||||
mask.s_addr >>= 1;
|
mask.s_addr >>= 1;
|
||||||
++zero_count;
|
zero_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 32 - zero_count;
|
return 32 - zero_count;
|
||||||
|
|||||||
Reference in New Issue
Block a user