Merge branch 'master' into dnssec

This commit is contained in:
Simon Kelley
2013-12-18 17:45:31 +00:00
6 changed files with 18 additions and 14 deletions

View File

@@ -4,6 +4,9 @@ version 2.69
on the BSD platform. Thanks to Matthias Andree for on the BSD platform. Thanks to Matthias Andree for
valuable research on how to implement this. valuable research on how to implement this.
Fix infinite loop associated with some --bogus-nxdomain
configs. Thanks fogobogo for the bug report.
version 2.68 version 2.68
Use random addresses for DHCPv6 temporary address Use random addresses for DHCPv6 temporary address

View File

@@ -581,7 +581,7 @@ struct dhcp_lease {
struct in6_addr addr6; struct in6_addr addr6;
int iaid; int iaid;
struct slaac_address { struct slaac_address {
struct in6_addr addr, local; struct in6_addr addr;
time_t ping_time; time_t ping_time;
int backoff; /* zero -> confirmed */ int backoff; /* zero -> confirmed */
struct slaac_address *next; struct slaac_address *next;

View File

@@ -2737,7 +2737,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
else else
{ {
char *cp, *lastp = NULL, last = 0; char *cp, *lastp = NULL, last = 0;
int fac = 1; int fac = 1, isdig = 0;
if (strlen(a[j]) > 1) if (strlen(a[j]) > 1)
{ {
@@ -2768,7 +2768,9 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
} }
for (cp = a[j]; *cp; cp++) for (cp = a[j]; *cp; cp++)
if (!isdigit((unsigned char)*cp) && *cp != ' ') if (isdigit((unsigned char)*cp))
isdig = 1;
else if (*cp != ' ')
break; break;
if (*cp) if (*cp)
@@ -2792,7 +2794,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
new->domain = strip_hostname(new->hostname); new->domain = strip_hostname(new->hostname);
} }
} }
else else if (isdig)
{ {
new->lease_time = atoi(a[j]) * fac; new->lease_time = atoi(a[j]) * fac;
/* Leases of a minute or less confuse /* Leases of a minute or less confuse

View File

@@ -1299,7 +1299,7 @@ int check_for_bogus_wildcard(struct dns_header *header, size_t qlen, char *name,
/* Found a bogus address. Insert that info here, since there no SOA record /* Found a bogus address. Insert that info here, since there no SOA record
to get the ttl from in the normal processing */ to get the ttl from in the normal processing */
cache_start_insert(); cache_start_insert();
cache_insert(name, NULL, now, ttl, F_IPV4 | F_FORWARD | F_NEG | F_NXDOMAIN | F_CONFIG); cache_insert(name, NULL, now, ttl, F_IPV4 | F_FORWARD | F_NEG | F_NXDOMAIN);
cache_end_insert(); cache_end_insert();
return 1; return 1;

View File

@@ -93,7 +93,6 @@ void slaac_add_addrs(struct dhcp_lease *lease, time_t now, int force)
slaac->ping_time = now; slaac->ping_time = now;
slaac->backoff = 1; slaac->backoff = 1;
slaac->addr = addr; slaac->addr = addr;
slaac->local = context->local6;
/* Do RA's to prod it */ /* Do RA's to prod it */
ra_start_unsolicted(now, context); ra_start_unsolicted(now, context);
} }