aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2011-10-20 18:39:38 +0200
committerBjørn Mork <bjorn@mork.no>2011-10-20 18:39:38 +0200
commit87d654840a8e3708d6540037fe95359c073ed021 (patch)
tree6261441b7e3d4a1f6fefd73cadd8a1881ac7550c
parent8f7a623a2ce25cdd5f4f075562d6336044f3ad1f (diff)
v4.2.3 imported from ftp://ftp.isc.org/isc/dhcp/dhcp-4.2.3/dhcp-4.2.3.tar.gzv4.2.3
From: Shawn Routhier <sar@isc.org> Subject: ISC DHCP 4.2.3 is now available for download To: df-announce@isc.org, dhcp-announce@isc.org, dhcp-workers@lists.isc.org, Users of ISC DHCP <dhcp-users@lists.isc.org> Date: Wed, 19 Oct 2011 16:18:28 -0700 Organization: ISC Reply-To: Users of ISC DHCP <dhcp-users@lists.isc.org> ISC DHCP 4.2.3 is now available for download. This is the public release of ISC DHCP 4.2.3, a maintenance release which contains a small number of bug fixes. A list of the changes in this release has been appended to the end of this message. For a complete list of changes from any previous release, please consult the RELNOTES file within the source distribution, or on our website: http://www.isc.org/software/dhcp/423 This release, and its OpenPGP-signatures are available now from: ftp://ftp.isc.org/isc/dhcp/dhcp-4.2.3/dhcp-4.2.3.tar.gz ftp://ftp.isc.org/isc/dhcp/dhcp-4.2.3/dhcp-4.2.3.tar.gz.sha512.asc ftp://ftp.isc.org/isc/dhcp/dhcp-4.2.3/dhcp-4.2.3.tar.gz.sha256.asc ftp://ftp.isc.org/isc/dhcp/dhcp-4.2.3/dhcp-4.2.3.tar.gz.sha1.asc ISC's Release Signing Key can be obtained at: http://www.isc.org/about/openpgp/ Changes since 4.2.3rc1 - None. Changes since 4.2.2 - Fix the code that checks for an existing DDNS transaction to cancel when removing DDNS information, so that we will continue with the processing if we have a lease even if it doesn't have an outstanding transaction. [ISC-Bugs #24682] - Add AM_MAINTAINER_MODE to configure.ac to avoid rebuilding configuration files. [ISC-Bugs #24107] - Add support for passing DDNS information to a DNS server over an IPv6 address. [ISC-Bugs #22647] - Enhanced patch for 23595 to handle IPv4 fixed addresses more cleanly. [ISC-Bugs #23595] Signed-off-by: Bjørn Mork <bjorn@mork.no>
-rw-r--r--Makefile.in7
-rw-r--r--README37
-rw-r--r--RELNOTES26
-rw-r--r--aclocal.m429
-rw-r--r--bind/bind.tar.gzbin7702703 -> 8449376 bytes
-rw-r--r--bind/version.tmp8
-rw-r--r--client/Makefile.in7
-rwxr-xr-xclient/scripts/macos9
-rw-r--r--common/Makefile.in7
-rw-r--r--common/conflex.c6
-rw-r--r--common/dns.c149
-rw-r--r--common/parse.c57
-rw-r--r--common/tests/Makefile.in7
-rwxr-xr-xconfigure65
-rw-r--r--configure.ac9
-rw-r--r--dhcpctl/Makefile.in7
-rw-r--r--dst/Makefile.in7
-rw-r--r--includes/Makefile.in9
-rw-r--r--includes/dhcpd.h3
-rw-r--r--includes/dhctoken.h4
-rw-r--r--omapip/Makefile.in7
-rw-r--r--relay/Makefile.in7
-rw-r--r--server/Makefile.in7
-rw-r--r--server/ddns.c275
-rw-r--r--server/dhcpd.conf.511
-rw-r--r--server/dhcpd.leases.56
-rw-r--r--server/stables.c2
-rw-r--r--tests/Makefile.in7
28 files changed, 522 insertions, 253 deletions
diff --git a/Makefile.in b/Makefile.in
index 40b8f5e..4268589 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -107,6 +107,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -193,7 +194,7 @@ all: all-recursive
.SUFFIXES:
am--refresh:
@:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -211,9 +212,9 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
install-nobase_includeHEADERS: $(nobase_include_HEADERS)
@$(NORMAL_INSTALL)
diff --git a/README b/README
index 5921344..f48d8b5 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
Internet Systems Consortium DHCP Distribution
- Version 4.2.2
- 27 July 2011
+ Version 4.2.3
+ 18 October 2011
README FILE
@@ -97,7 +97,7 @@ directory, it may not have up-to-date information).
RELEASE STATUS
-This is ISC DHCP 4.2.2, a maintenance release containing patches.
+This is ISC DHCP 4.2.3, a maintenance release containing patches.
In this release, the DHCPv6 server should be fully functional on Linux,
Solaris, or any BSD. The DHCPv6 client should be similarly functional
@@ -132,12 +132,12 @@ information. On Digital Unix, type ``man pfilt''.
To build the DHCP Distribution, unpack the compressed tar file using
the tar utility and the gzip command - type something like:
- gunzip dhcp-4.2.2.tar.gz
- tar xvf dhcp-4.2.2.tar
+ gunzip dhcp-4.2.3.tar.gz
+ tar xvf dhcp-4.2.3.tar
CONFIGURING IT
-Now, cd to the dhcp-4.2.2 subdirectory that you've just created and
+Now, cd to the dhcp-4.2.3 subdirectory that you've just created and
configure the source tree by typing:
./configure
@@ -523,20 +523,23 @@ this text is only about the DHCPv6 client (``dhclient -6 ...''). The DNS
configuration (domain search list and name servers' addresses) is managed
by a System Configuration agent, not by /etc/resolv.conf (which is a link
to /var/run/resolv.conf, which itself only reflects the internal state;
-the System Configuration agent's Dynamic Store).
+the System Configuration framework's Dynamic Store).
-This means that modifying resolv.conf directly doesn't have the intended
-effect, so the macos script sample uses its own resolv.conf.dhclient6 in
-/var/run, and inserts the contents of this file into the System
-Configuration agent. Because the System Configuration agent expects the
-prefix along with the configured address, and a default router, this is
-not usable (the DHCPv6 protocol does not today deliver this information).
-Instead, ifconfig is directly used for address configuration.
+This means that modifying resolv.conf directly doesn't have the
+intended effect, instead the macos script sample creates its own
+resolv.conf.dhclient6 in /var/run, and inserts the contents of this
+file into the Dynamic Store.
+
+When updating the address configuration the System Configuration
+framework expects the prefix and a default router along with the
+configured address. As this extra information is not available via
+the DHCPv6 protocol the System Configuration framework isn't usable
+for address configuration, instead ifconfig is used directly.
Note the Dynamic Store (from which /var/run/resolv.conf is built) is
-recomputed from scratch when the current location/set is changed, for
-instance when a laptop is resumed from sleep. In this case running the
-dhclient-script could reinstall the resolv.conf.dhclient6 configuration.
+recomputed from scratch when the current location/set is changed.
+Running the dhclient-script reinstalls the resolv.conf.dhclient6
+configuration.
SUPPORT
diff --git a/RELNOTES b/RELNOTES
index d534397..ab5b76b 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,6 +1,6 @@
Internet Systems Consortium DHCP Distribution
- Version 4.2.2
- 27 July 2011
+ Version 4.2.3
+ 18 October 2011
Release Notes
@@ -10,7 +10,7 @@ ISC DHCP 4.2.x includes features that were not included in DHCP 4.1.x.
These include:
Processing the DHCP to DNS server transactions in an asynchronous fashion.
-The DHCP server or client can now continue with it's processing while
+The DHCP server or client can now continue with its processing while
awaiting replies from the DNS server.
There are a number of DHCPv6 limitations and features missing in this
@@ -39,6 +39,22 @@ The system has only been tested on Linux, FreeBSD, and Solaris, and may not
work on other platforms. Please report any problems and suggested fixes to
<dhcp-users@isc.org>.
+ Changes since 4.2.2
+
+- Fix the code that checks for an existing DDNS transaction to cancel
+ when removing DDNS information, so that we will continue with the
+ processing if we have a lease even if it doesn't have an outstanding
+ transaction. [ISC-Bugs #24682]
+
+- Add AM_MAINTAINER_MODE to configure.ac to avoid rebuilding
+ configuration files. [ISC-Bugs #24107]
+
+- Add support for passing DDNS information to a DNS server over
+ an IPv6 address. [ISC-Bugs #22647]
+
+- Enhanced patch for 23595 to handle IPv4 fixed addresses more
+ cleanly. [ISC-Bugs #23595]
+
Changes since 4.2.2rc1
! Two packets were found that cause a server to halt. The code
@@ -350,7 +366,7 @@ work on other platforms. Please report any problems and suggested fixes to
decline request for it previously) don't attempt to move it from
the inactive to active pool as doing so can result in the server
crashing on an assert failure. Also retag the lease as active
- and reset it's timeout value.
+ and reset its timeout value.
[ISC-Bugs #21921]
- Relay no longer crashes, when DHCP packet is received over interface without
@@ -494,7 +510,7 @@ work on other platforms. Please report any problems and suggested fixes to
determined lease time) are omitted.
- Processing the DHCP to DNS server transactions in an asyncrhonous fashion.
- The DHCP server or client can now continue with it's processing while
+ The DHCP server or client can now continue with its processing while
awaiting replies from the DNS server.
- The 'hardware [ethernet|etc] ...;' parameter in host records has been
diff --git a/aclocal.m4 b/aclocal.m4
index 10de37b..be41d12 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -531,6 +531,35 @@ fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
diff --git a/bind/bind.tar.gz b/bind/bind.tar.gz
index af7e251..4a7ea38 100644
--- a/bind/bind.tar.gz
+++ b/bind/bind.tar.gz
Binary files differ
diff --git a/bind/version.tmp b/bind/version.tmp
index 1d9fbd2..ede0ba0 100644
--- a/bind/version.tmp
+++ b/bind/version.tmp
@@ -1,10 +1,10 @@
-# $Id: version,v 1.53.8.2.2.4 2011-06-21 20:44:01 each Exp $
+# $Id: version,v 1.53.8.9 2011-08-24 02:08:26 marka Exp $
#
# This file must follow /bin/sh rules. It is imported directly via
# configure.
#
MAJORVER=9
MINORVER=8
-PATCHVER=0
-RELEASETYPE=-P
-RELEASEVER=4
+PATCHVER=1
+RELEASETYPE=
+RELEASEVER=
diff --git a/client/Makefile.in b/client/Makefile.in
index 581398e..4ec0e80 100644
--- a/client/Makefile.in
+++ b/client/Makefile.in
@@ -105,6 +105,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -180,7 +181,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -205,9 +206,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
diff --git a/client/scripts/macos b/client/scripts/macos
index cb467d1..bb94c81 100755
--- a/client/scripts/macos
+++ b/client/scripts/macos
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $Id: macos,v 1.2.108.1 2011-05-18 20:01:54 sar Exp $
+# $Id: macos,v 1.2.108.2 2011-09-20 17:04:03 sar Exp $
#
# automous run of this script will commit the DNS setting
#
@@ -49,8 +49,13 @@ make_resolv_conf() {
}
# Try to commit /var/run/resolv.conf.dhclient6 contents to
-# SystemConfiguration Dynamic Store
+# System Configuration framework's Dynamic Store.
# Note this will be cleared by the next location change
+# or preempted by IPv4.
+#
+# The System Configuration agent "IPMonitor" gets the DNS configuration
+# from the IPv4 or IPv6 primary service in the Dynamic Store
+# (managed by configd).
commit_resolv_conf() {
if [ -f /var/run/resolv.conf.dhclient6 ]; then
if [ -x /usr/sbin/scutil ]; then
diff --git a/common/Makefile.in b/common/Makefile.in
index 487f629..3c39008 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -110,6 +110,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -186,7 +187,7 @@ all: all-recursive
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -211,9 +212,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
clean-noinstLIBRARIES:
diff --git a/common/conflex.c b/common/conflex.c
index 1ec2328..9c9ed66 100644
--- a/common/conflex.c
+++ b/common/conflex.c
@@ -1228,6 +1228,8 @@ intern(char *atom, enum dhcp_token dfv) {
return PEER;
if (!strcasecmp (atom + 1, "rimary"))
return PRIMARY;
+ if (!strcasecmp (atom + 1, "rimary6"))
+ return PRIMARY6;
if (!strncasecmp (atom + 1, "artner", 6)) {
if (!atom [7])
return PARTNER;
@@ -1317,7 +1319,9 @@ intern(char *atom, enum dhcp_token dfv) {
tolower((unsigned char)atom[2]) == 'c') {
if (!strncasecmp(atom + 3, "ond", 3)) {
if (!strcasecmp(atom + 6, "ary"))
- return SECONDARY;
+ return SECONDARY;
+ if (!strcasecmp(atom + 6, "ary6"))
+ return SECONDARY6;
if (!strcasecmp(atom + 6, "s"))
return SECONDS;
break;
diff --git a/common/dns.c b/common/dns.c
index 5ecae67..3992b6c 100644
--- a/common/dns.c
+++ b/common/dns.c
@@ -64,6 +64,11 @@
* support update forwarding, AFAIK). If no TSIG key is listed, the update
* is attempted without TSIG.
*
+ * You can also include IPv6 addresses via the primary6 and secondary6
+ * options. The search order for the addresses is primary, primary6,
+ * secondary and lastly secondary6, with a limit on the number of
+ * addresses used. Currently this limit is 3.
+ *
* The DHCP server tries to find an existing zone for any given name by
* trying to look up a local zone structure for each domain containing
* that name, all the way up to '.'. If it finds one cached, it tries
@@ -602,44 +607,48 @@ int dns_zone_dereference (ptr, file, line)
{
struct dns_zone *dns_zone;
- if (!ptr || !*ptr) {
- log_error ("%s(%d): null pointer", file, line);
+ if ((ptr == NULL) || (*ptr == NULL)) {
+ log_error("%s(%d): null pointer", file, line);
#if defined (POINTER_DEBUG)
- abort ();
+ abort();
#else
- return 0;
+ return (0);
#endif
}
dns_zone = *ptr;
- *ptr = (struct dns_zone *)0;
- --dns_zone -> refcnt;
- rc_register (file, line, ptr, dns_zone, dns_zone -> refcnt, 1, RC_MISC);
- if (dns_zone -> refcnt > 0)
- return 1;
-
- if (dns_zone -> refcnt < 0) {
- log_error ("%s(%d): negative refcnt!", file, line);
+ *ptr = NULL;
+ --dns_zone->refcnt;
+ rc_register(file, line, ptr, dns_zone, dns_zone->refcnt, 1, RC_MISC);
+ if (dns_zone->refcnt > 0)
+ return (1);
+
+ if (dns_zone->refcnt < 0) {
+ log_error("%s(%d): negative refcnt!", file, line);
#if defined (DEBUG_RC_HISTORY)
- dump_rc_history (dns_zone);
+ dump_rc_history(dns_zone);
#endif
#if defined (POINTER_DEBUG)
- abort ();
+ abort();
#else
- return 0;
+ return (0);
#endif
}
- if (dns_zone -> name)
- dfree (dns_zone -> name, file, line);
- if (dns_zone -> key)
- omapi_auth_key_dereference (&dns_zone -> key, file, line);
- if (dns_zone -> primary)
- option_cache_dereference (&dns_zone -> primary, file, line);
- if (dns_zone -> secondary)
- option_cache_dereference (&dns_zone -> secondary, file, line);
- dfree (dns_zone, file, line);
- return 1;
+ if (dns_zone->name)
+ dfree(dns_zone->name, file, line);
+ if (dns_zone->key)
+ omapi_auth_key_dereference(&dns_zone->key, file, line);
+ if (dns_zone->primary)
+ option_cache_dereference(&dns_zone->primary, file, line);
+ if (dns_zone->secondary)
+ option_cache_dereference(&dns_zone->secondary, file, line);
+ if (dns_zone->primary6)
+ option_cache_dereference(&dns_zone->primary6, file, line);
+ if (dns_zone->secondary6)
+ option_cache_dereference(&dns_zone->secondary6, file, line);
+ dfree(dns_zone, file, line);
+ return (1);
}
#if defined (NSUPDATE)
@@ -648,9 +657,10 @@ find_cached_zone(dhcp_ddns_cb_t *ddns_cb, int direction)
{
isc_result_t status = ISC_R_NOTFOUND;
const char *np;
- struct dns_zone *zone = (struct dns_zone *)0;
+ struct dns_zone *zone = NULL;
struct data_string nsaddrs;
struct in_addr zone_addr;
+ struct in6_addr zone_addr6;
int ix;
if (direction == FIND_FORWARD) {
@@ -661,14 +671,14 @@ find_cached_zone(dhcp_ddns_cb_t *ddns_cb, int direction)
/* We can't look up a null zone. */
if ((np == NULL) || (*np == '\0')) {
- return DHCP_R_INVALIDARG;
+ return (DHCP_R_INVALIDARG);
}
/*
* For each subzone, try to find a cached zone.
*/
for (;;) {
- status = dns_zone_lookup (&zone, np);
+ status = dns_zone_lookup(&zone, np);
if (status == ISC_R_SUCCESS)
break;
@@ -679,32 +689,28 @@ find_cached_zone(dhcp_ddns_cb_t *ddns_cb, int direction)
}
if (status != ISC_R_SUCCESS)
- return status;
+ return (status);
/* Make sure the zone is valid. */
- if (zone -> timeout && zone -> timeout < cur_time) {
- dns_zone_dereference (&zone, MDL);
- return ISC_R_CANCELED;
+ if (zone->timeout && zone->timeout < cur_time) {
+ dns_zone_dereference(&zone, MDL);
+ return (ISC_R_CANCELED);
}
/* Make sure the zone name will fit. */
if (strlen(zone->name) > sizeof(ddns_cb->zone_name)) {
- dns_zone_dereference (&zone, MDL);
- return ISC_R_NOSPACE;
+ dns_zone_dereference(&zone, MDL);
+ return (ISC_R_NOSPACE);
}
strcpy((char *)&ddns_cb->zone_name[0], zone->name);
memset (&nsaddrs, 0, sizeof nsaddrs);
ix = 0;
- if (zone -> primary) {
- if (evaluate_option_cache (&nsaddrs, (struct packet *)0,
- (struct lease *)0,
- (struct client_state *)0,
- (struct option_state *)0,
- (struct option_state *)0,
- &global_scope,
- zone -> primary, MDL)) {
+ if (zone->primary) {
+ if (evaluate_option_cache(&nsaddrs, NULL, NULL, NULL,
+ NULL, NULL, &global_scope,
+ zone->primary, MDL)) {
int ip = 0;
while (ix < DHCP_MAXNS) {
if (ip + 4 > nsaddrs.len)
@@ -719,17 +725,36 @@ find_cached_zone(dhcp_ddns_cb_t *ddns_cb, int direction)
ip += 4;
ix++;
}
- data_string_forget (&nsaddrs, MDL);
+ data_string_forget(&nsaddrs, MDL);
+ }
+ }
+
+ if (zone->primary6) {
+ if (evaluate_option_cache(&nsaddrs, NULL, NULL, NULL,
+ NULL, NULL, &global_scope,
+ zone->primary6, MDL)) {
+ int ip = 0;
+ while (ix < DHCP_MAXNS) {
+ if (ip + 16 > nsaddrs.len)
+ break;
+ memcpy(&zone_addr6, &nsaddrs.data[ip], 16);
+ isc_sockaddr_fromin6(&ddns_cb->zone_addrs[ix],
+ &zone_addr6,
+ NS_DEFAULTPORT);
+ ISC_LIST_APPEND(ddns_cb->zone_server_list,
+ &ddns_cb->zone_addrs[ix],
+ link);
+ ip += 16;
+ ix++;
+ }
+ data_string_forget(&nsaddrs, MDL);
}
}
- if (zone -> secondary) {
- if (evaluate_option_cache (&nsaddrs, (struct packet *)0,
- (struct lease *)0,
- (struct client_state *)0,
- (struct option_state *)0,
- (struct option_state *)0,
- &global_scope,
- zone -> secondary, MDL)) {
+
+ if (zone->secondary) {
+ if (evaluate_option_cache(&nsaddrs, NULL, NULL, NULL,
+ NULL, NULL, &global_scope,
+ zone->secondary, MDL)) {
int ip = 0;
while (ix < DHCP_MAXNS) {
if (ip + 4 > nsaddrs.len)
@@ -748,6 +773,28 @@ find_cached_zone(dhcp_ddns_cb_t *ddns_cb, int direction)
}
}
+ if (zone->secondary6) {
+ if (evaluate_option_cache(&nsaddrs, NULL, NULL, NULL,
+ NULL, NULL, &global_scope,
+ zone->secondary6, MDL)) {
+ int ip = 0;
+ while (ix < DHCP_MAXNS) {
+ if (ip + 16 > nsaddrs.len)
+ break;
+ memcpy(&zone_addr6, &nsaddrs.data[ip], 16);
+ isc_sockaddr_fromin6(&ddns_cb->zone_addrs[ix],
+ &zone_addr6,
+ NS_DEFAULTPORT);
+ ISC_LIST_APPEND(ddns_cb->zone_server_list,
+ &ddns_cb->zone_addrs[ix],
+ link);
+ ip += 16;
+ ix++;
+ }
+ data_string_forget (&nsaddrs, MDL);
+ }
+ }
+
dns_zone_reference(&ddns_cb->zone, zone, MDL);
dns_zone_dereference (&zone, MDL);
return ISC_R_SUCCESS;
diff --git a/common/parse.c b/common/parse.c
index 049ce7b..61488c1 100644
--- a/common/parse.c
+++ b/common/parse.c
@@ -2698,6 +2698,8 @@ int parse_executable_statement (result, cfile, lose, case_context)
zone-statement :==
PRIMARY ip-addresses SEMI |
SECONDARY ip-addresses SEMI |
+ PRIMARY6 ip-address6 SEMI |
+ SECONDARY6 ip-address6 SEMI |
key-reference SEMI
ip-addresses :== ip-addr-or-hostname |
ip-addr-or-hostname COMMA ip-addresses
@@ -2779,6 +2781,61 @@ int parse_zone (struct dns_zone *zone, struct parse *cfile)
}
break;
+ case PRIMARY6:
+ if (zone->primary6) {
+ parse_warn(cfile, "more than one primary6.");
+ skip_to_semi(cfile);
+ return (0);
+ }
+ if (!option_cache_allocate (&zone->primary6, MDL))
+ log_fatal("can't allocate primary6 option cache.");
+ oc = zone->primary6;
+ goto consemup6;
+
+ case SECONDARY6:
+ if (zone->secondary6) {
+ parse_warn(cfile, "more than one secondary6.");
+ skip_to_semi(cfile);
+ return (0);
+ }
+ if (!option_cache_allocate (&zone->secondary6, MDL))
+ log_fatal("can't allocate secondary6 "
+ "option cache.");
+ oc = zone->secondary6;
+ consemup6:
+ token = next_token(&val, NULL, cfile);
+ do {
+ struct expression *expr = NULL;
+ if (parse_ip6_addr_expr(&expr, cfile) == 0) {
+ parse_warn(cfile, "expecting IPv6 addr.");
+ skip_to_semi(cfile);
+ return (0);
+ }
+ if (oc->expression) {
+ struct expression *old = NULL;
+ expression_reference(&old, oc->expression,
+ MDL);
+ expression_dereference(&oc->expression,
+ MDL);
+ if (!make_concat(&oc->expression,
+ old, expr))
+ log_fatal("no memory for concat.");
+ expression_dereference(&expr, MDL);
+ expression_dereference(&old, MDL);
+ } else {
+ expression_reference(&oc->expression,
+ expr, MDL);
+ expression_dereference(&expr, MDL);
+ }
+ token = next_token(&val, NULL, cfile);
+ } while (token == COMMA);
+ if (token != SEMI) {
+ parse_warn(cfile, "expecting semicolon.");
+ skip_to_semi(cfile);
+ return (0);
+ }
+ break;
+
case KEY:
token = next_token (&val, (unsigned *)0, cfile);
token = peek_token (&val, (unsigned *)0, cfile);
diff --git a/common/tests/Makefile.in b/common/tests/Makefile.in
index 80a0024..43a477e 100644
--- a/common/tests/Makefile.in
+++ b/common/tests/Makefile.in
@@ -87,6 +87,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -157,7 +158,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -182,9 +183,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
clean-checkPROGRAMS:
diff --git a/configure b/configure
index 7825997..af937a2 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for DHCP 4.2.2.
+# Generated by GNU Autoconf 2.61 for DHCP 4.2.3.
#
# Report bugs to <dhcp-users@isc.org>.
#
@@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='DHCP'
PACKAGE_TARNAME='dhcp'
-PACKAGE_VERSION='4.2.2'
-PACKAGE_STRING='DHCP 4.2.2'
+PACKAGE_VERSION='4.2.3'
+PACKAGE_STRING='DHCP 4.2.3'
PACKAGE_BUGREPORT='dhcp-users@isc.org'
# Factoring default headers for most tests.
@@ -673,6 +673,9 @@ am__leading_dot
AMTAR
am__tar
am__untar
+MAINTAINER_MODE_TRUE
+MAINTAINER_MODE_FALSE
+MAINT
CC
CFLAGS
LDFLAGS
@@ -1210,7 +1213,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures DHCP 4.2.2 to adapt to many kinds of systems.
+\`configure' configures DHCP 4.2.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1276,13 +1279,15 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of DHCP 4.2.2:";;
+ short | recursive ) echo "Configuration of DHCP 4.2.3:";;
esac
cat <<\_ACEOF
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--enable-debug create a debug-only version of the software (default
@@ -1414,7 +1419,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-DHCP configure 4.2.2
+DHCP configure 4.2.3
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1428,7 +1433,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by DHCP $as_me 4.2.2, which was
+It was created by DHCP $as_me 4.2.3, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2121,7 +2126,7 @@ fi
# Define the identity of the package.
PACKAGE='dhcp'
- VERSION='4.2.2'
+ VERSION='4.2.3'
cat >>confdefs.h <<_ACEOF
@@ -2268,6 +2273,34 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+# we specify AM_MAINTAINER_MODE to avoid problems with rebuilding
+# the configure and makefiles. Without it users doing things that
+# change the timestamps on the code, like checking it into a cvs
+# tree, could trigger a rebuild of the infrastructure files which
+# might fail if they don't have the correct tools.
+{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
# We want to turn on warnings if we are using gcc and the user did
# not specify CFLAGS. The autoconf check for the C compiler sets the
# CFLAGS if gcc is used, so we will save it before we run that check.
@@ -8728,6 +8761,13 @@ LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -9042,7 +9082,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by DHCP $as_me 4.2.2, which was
+This file was extended by DHCP $as_me 4.2.3, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -9095,7 +9135,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-DHCP config.status 4.2.2
+DHCP config.status 4.2.3
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@@ -9343,6 +9383,9 @@ am__leading_dot!$am__leading_dot$ac_delim
AMTAR!$AMTAR$ac_delim
am__tar!$am__tar$ac_delim
am__untar!$am__untar$ac_delim
+MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
+MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
+MAINT!$MAINT$ac_delim
CC!$CC$ac_delim
CFLAGS!$CFLAGS$ac_delim
LDFLAGS!$LDFLAGS$ac_delim
@@ -9370,7 +9413,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 84; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 87; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index df4bae3..3ed50de 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,16 @@
-AC_INIT([DHCP], [4.2.2], [dhcp-users@isc.org])
+AC_INIT([DHCP], [4.2.3], [dhcp-users@isc.org])
# we specify "foreign" to avoid having to have the GNU mandated files,
# like AUTHORS, COPYING, and such
AM_INIT_AUTOMAKE([foreign])
+# we specify AM_MAINTAINER_MODE to avoid problems with rebuilding
+# the configure and makefiles. Without it users doing things that
+# change the timestamps on the code, like checking it into a cvs
+# tree, could trigger a rebuild of the infrastructure files which
+# might fail if they don't have the correct tools.
+AM_MAINTAINER_MODE
+
# We want to turn on warnings if we are using gcc and the user did
# not specify CFLAGS. The autoconf check for the C compiler sets the
# CFLAGS if gcc is used, so we will save it before we run that check.
diff --git a/dhcpctl/Makefile.in b/dhcpctl/Makefile.in
index 6546419..9344e30 100644
--- a/dhcpctl/Makefile.in
+++ b/dhcpctl/Makefile.in
@@ -116,6 +116,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -192,7 +193,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -217,9 +218,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
diff --git a/dst/Makefile.in b/dst/Makefile.in
index 35c35b0..9684608 100644
--- a/dst/Makefile.in
+++ b/dst/Makefile.in
@@ -98,6 +98,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -168,7 +169,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -193,9 +194,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
diff --git a/includes/Makefile.in b/includes/Makefile.in
index a9a89d2..f397bbe 100644
--- a/includes/Makefile.in
+++ b/includes/Makefile.in
@@ -84,6 +84,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -159,7 +160,7 @@ all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -184,9 +185,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
config.h: stamp-h1
@@ -198,7 +199,7 @@ config.h: stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status includes/config.h
-$(srcdir)/config.h.in: $(am__configure_deps)
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
index 99d4387..863a149 100644
--- a/includes/dhcpd.h
+++ b/includes/dhcpd.h
@@ -1374,6 +1374,8 @@ struct dns_zone {
char *name;
struct option_cache *primary;
struct option_cache *secondary;
+ struct option_cache *primary6;
+ struct option_cache *secondary6;
struct auth_key *key;
};
@@ -1554,6 +1556,7 @@ struct ipv6_pool {
#define DDNS_CLIENT_DID_UPDATE 0x10
#define DDNS_EXECUTE_NEXT 0x20
#define DDNS_ABORT 0x40
+#define DDNS_STATIC_LEASE 0x80
/*
* The following two groups are separate and we could reuse
diff --git a/includes/dhctoken.h b/includes/dhctoken.h
index dc28f39..9911d70 100644
--- a/includes/dhctoken.h
+++ b/includes/dhctoken.h
@@ -361,7 +361,9 @@ enum dhcp_token {
GETHOSTNAME = 662,
REWIND = 663,
INITIAL_DELAY = 664,
- GETHOSTBYNAME = 665
+ GETHOSTBYNAME = 665,
+ PRIMARY6 = 666,
+ SECONDARY6 = 667
};
#define is_identifier(x) ((x) >= FIRST_TOKEN && \
diff --git a/omapip/Makefile.in b/omapip/Makefile.in
index 657ded4..86716df 100644
--- a/omapip/Makefile.in
+++ b/omapip/Makefile.in
@@ -113,6 +113,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -187,7 +188,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -212,9 +213,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-libLIBRARIES: $(lib_LIBRARIES)
@$(NORMAL_INSTALL)
diff --git a/relay/Makefile.in b/relay/Makefile.in
index 9336f0c..7e8f606 100644
--- a/relay/Makefile.in
+++ b/relay/Makefile.in
@@ -92,6 +92,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -163,7 +164,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -188,9 +189,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
diff --git a/server/Makefile.in b/server/Makefile.in
index 9c808c0..3b0426b 100644
--- a/server/Makefile.in
+++ b/server/Makefile.in
@@ -115,6 +115,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -192,7 +193,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -217,9 +218,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
diff --git a/server/ddns.c b/server/ddns.c
index b1683c3..2387e04 100644
--- a/server/ddns.c
+++ b/server/ddns.c
@@ -125,10 +125,17 @@ ddns_updates(struct packet *packet, struct lease *lease, struct lease *old,
}
/* assume that we shall update both the A and ptr records */
ddns_cb->flags = DDNS_UPDATE_ADDR | DDNS_UPDATE_PTR;
-
+
+ /*
+ * For v4 we flag static leases so we don't try
+ * and manipulate the lease later. For v6 we don't
+ * get static leases and don't need to flag them.
+ */
if (lease != NULL) {
scope = &(lease->scope);
ddns_cb->address = lease->ip_addr;
+ if (lease->flags & STATIC_LEASE)
+ ddns_cb->flags |= DDNS_STATIC_LEASE;
} else if (lease6 != NULL) {
scope = &(lease6->scope);
memcpy(ddns_cb->address.iabuf, lease6->addr.s6_addr, 16);
@@ -725,6 +732,13 @@ ddns_update_lease_text(dhcp_ddns_cb_t *ddns_cb,
struct in6_addr addr;
struct data_string lease_dhcid;
+ /*
+ * If the lease was static (for a fixed address)
+ * we don't need to do any work.
+ */
+ if (ddns_cb->flags & DDNS_STATIC_LEASE)
+ return (ISC_R_SUCCESS);
+
if (inscope != NULL) {
scope = inscope;
} else if (ddns_cb->address.len == 4) {
@@ -838,8 +852,10 @@ update_lease_failed(struct lease *lease,
sprintf(reason, "unknown");
sprintf(lease_address, "unknown");
- /* let's pretend that everything is ok, so we can continue for
- for information gathering purposes */
+ /*
+ * let's pretend that everything is ok, so we can continue for
+ * information gathering purposes
+ */
if (ddns_cb != NULL) {
strncpy(lease_address, piaddr(ddns_cb->address),
@@ -890,133 +906,138 @@ update_lease_failed(struct lease *lease,
void
safe_lease_update(struct lease *lease,
- struct iasubopt *lease6,
dhcp_ddns_cb_t *oldcb,
dhcp_ddns_cb_t *newcb,
const char *file, int line)
{
- char addrbuf[MAX_ADDRESS_STRING_LEN];
+ if (lease == NULL) {
+ /* should never get here */
+ log_fatal("Impossible condition at %s:%d (called from %s:%d).",
+ MDL, file, line);
+ }
- if (lease != NULL) {
- if ( (lease->ddns_cb == NULL) && (newcb == NULL) ) {
- /*
- * Trying to clean up pointer that is already null. We
- * are most likely trying to update wrong lease here.
- */
+ if ( (lease->ddns_cb == NULL) && (newcb == NULL) ) {
+ /*
+ * Trying to clean up pointer that is already null. We
+ * are most likely trying to update wrong lease here.
+ */
- /*
- * this error message pops out during every DNS Update
- * for fixed leases. It is enabled only for debugging
- * DNS Updates. Investigation pending.
- */
-#if defined (DEBUG_DNS_UPDATES)
- log_error("%s(%d): Invalid lease update. Tried to "
- "clear already NULL DDNS control block "
- "pointer for lease %s.",
- file, line, piaddr(lease->ip_addr) );
-#endif
+ /*
+ * Previously this error message popped out during
+ * DNS update for fixed leases. As we no longer
+ * try to update the lease for a fixed (static) lease
+ * this should not be a problem.
+ */
+ log_error("%s(%d): Invalid lease update. Tried to "
+ "clear already NULL DDNS control block "
+ "pointer for lease %s.",
+ file, line, piaddr(lease->ip_addr) );
#if defined (DNS_UPDATES_MEMORY_CHECKS)
- update_lease_failed(lease, NULL, oldcb, newcb, file,
- line);
+ update_lease_failed(lease, NULL, oldcb, newcb, file, line);
#endif
- /*
- * May not reach this: update_lease_failed calls
- * log_fatal.
- */
- return;
- }
+ /*
+ * May not reach this: update_lease_failed calls
+ * log_fatal.
+ */
+ return;
+ }
- if ( (lease->ddns_cb != NULL) && (lease->ddns_cb != oldcb) ) {
- /*
- * There is existing cb structure, but it differs from
- * what we expected to see there. Most likely we are
- * trying to update wrong lease.
- */
- log_error("%s(%d): Failed to update internal lease "
- "structure with DDNS control block. Existing"
- " ddns_cb structure does not match "
- "expectations.IPv4=%s, old ddns_cb=%p, tried"
- "to update to new ddns_cb=%p", file, line,
- piaddr(lease->ip_addr), oldcb, newcb);
+ if ( (lease->ddns_cb != NULL) && (lease->ddns_cb != oldcb) ) {
+ /*
+ * There is existing cb structure, but it differs from
+ * what we expected to see there. Most likely we are
+ * trying to update wrong lease.
+ */
+ log_error("%s(%d): Failed to update internal lease "
+ "structure with DDNS control block. Existing"
+ " ddns_cb structure does not match "
+ "expectations.IPv4=%s, old ddns_cb=%p, tried"
+ "to update to new ddns_cb=%p", file, line,
+ piaddr(lease->ip_addr), oldcb, newcb);
#if defined (DNS_UPDATES_MEMORY_CHECKS)
- update_lease_failed(lease, NULL, oldcb, newcb, file,
- line);
+ update_lease_failed(lease, NULL, oldcb, newcb, file, line);
#endif
- /*
- * May not reach this: update_lease_failed calls
- * log_fatal.
- */
- return;
- }
- /* additional IPv4 specific checks may be added here */
+ /*
+ * May not reach this: update_lease_failed calls
+ * log_fatal.
+ */
+ return;
+ }
- /* update the lease */
- lease->ddns_cb = newcb;
- } else if (lease6 != NULL) {
- if ( (lease6->ddns_cb == NULL) && (newcb == NULL) ) {
- inet_ntop(AF_INET6, &lease6->addr, addrbuf,
- MAX_ADDRESS_STRING_LEN);
- /*
- * Trying to clean up pointer that is already null. We
- * are most likely trying to update wrong lease here.
- */
-#if defined (DEBUG_DNS_UPDATES)
- log_error("%s(%d): Failed to update internal lease "
- "structure. Tried to clear already NULL "
- "DDNS control block pointer for lease %s.",
- file, line, addrbuf);
-#endif
+ /* additional IPv4 specific checks may be added here */
+
+ /* update the lease */
+ lease->ddns_cb = newcb;
+}
+
+void
+safe_lease6_update(struct iasubopt *lease6,
+ dhcp_ddns_cb_t *oldcb,
+ dhcp_ddns_cb_t *newcb,
+ const char *file, int line)
+{
+ char addrbuf[MAX_ADDRESS_STRING_LEN];
+
+ if (lease6 == NULL) {
+ /* should never get here */
+ log_fatal("Impossible condition at %s:%d (called from %s:%d).",
+ MDL, file, line);
+ }
+
+ if ( (lease6->ddns_cb == NULL) && (newcb == NULL) ) {
+ inet_ntop(AF_INET6, &lease6->addr, addrbuf,
+ MAX_ADDRESS_STRING_LEN);
+ /*
+ * Trying to clean up pointer that is already null. We
+ * are most likely trying to update wrong lease here.
+ */
+ log_error("%s(%d): Failed to update internal lease "
+ "structure. Tried to clear already NULL "
+ "DDNS control block pointer for lease %s.",
+ file, line, addrbuf);
#if defined (DNS_UPDATES_MEMORY_CHECKS)
- update_lease_failed(NULL, lease6, oldcb, newcb, file,
- line);
+ update_lease_failed(NULL, lease6, oldcb, newcb, file, line);
#endif
- /*
- * May not reach this: update_lease_failed calls
- * log_fatal.
- */
- return;
- }
+ /*
+ * May not reach this: update_lease_failed calls
+ * log_fatal.
+ */
+ return;
+ }
- if ( (lease6->ddns_cb != NULL) && (lease6->ddns_cb != oldcb) ) {
- /*
- * there is existing cb structure, but it differs from
- * what we expected to see there. Most likely we are
- * trying to update wrong lease.
- */
- inet_ntop(AF_INET6, &lease6->addr, addrbuf,
- MAX_ADDRESS_STRING_LEN);
+ if ( (lease6->ddns_cb != NULL) && (lease6->ddns_cb != oldcb) ) {
+ /*
+ * there is existing cb structure, but it differs from
+ * what we expected to see there. Most likely we are
+ * trying to update wrong lease.
+ */
+ inet_ntop(AF_INET6, &lease6->addr, addrbuf,
+ MAX_ADDRESS_STRING_LEN);
- log_error("%s(%d): Failed to update internal lease "
- "structure with DDNS control block. Existing"
- " ddns_cb structure does not match "
- "expectations.IPv6=%s, old ddns_cb=%p, tried"
- "to update to new ddns_cb=%p", file, line,
- addrbuf, oldcb, newcb);
+ log_error("%s(%d): Failed to update internal lease "
+ "structure with DDNS control block. Existing"
+ " ddns_cb structure does not match "
+ "expectations.IPv6=%s, old ddns_cb=%p, tried"
+ "to update to new ddns_cb=%p", file, line,
+ addrbuf, oldcb, newcb);
#if defined (DNS_UPDATES_MEMORY_CHECKS)
- update_lease_failed(NULL, lease6, oldcb, newcb, file,
- line);
+ update_lease_failed(NULL, lease6, oldcb, newcb, file, line);
#endif
- /*
- * May not reach this: update_lease_failed calls
- * log_fatal.
- */
- return;
- }
- /* additional IPv6 specific checks may be added here */
-
- /* update the lease */
- lease6->ddns_cb = newcb;
-
- } else {
- /* should never get here */
- log_fatal("Impossible condition at %s:%d (called from %s:%d).",
- MDL, file, line);
+ /*
+ * May not reach this: update_lease_failed calls
+ * log_fatal.
+ */
+ return;
}
+ /* additional IPv6 specific checks may be added here */
+
+ /* update the lease */
+ lease6->ddns_cb = newcb;
}
/*
@@ -1042,7 +1063,7 @@ ddns_update_lease_ptr(struct lease *lease,
const char * file, int line)
{
char ddns_address[MAX_ADDRESS_STRING_LEN];
- sprintf(ddns_address, "uknown");
+ sprintf(ddns_address, "unknown");
if (ddns_cb) {
strncpy(ddns_address, piaddr(ddns_cb->address),
MAX_ADDRESS_STRING_LEN);
@@ -1052,14 +1073,23 @@ ddns_update_lease_ptr(struct lease *lease,
file, line, ddns_cb, ddns_address );
#endif
+ /*
+ * If the lease was static (for a fixed address)
+ * we don't need to do any work.
+ */
+ if (ddns_cb->flags & DDNS_STATIC_LEASE) {
+#if defined (DEBUG_DNS_UPDATES)
+ log_info("lease is static, returning");
+#endif
+ return (ISC_R_SUCCESS);
+ }
+
if (lease != NULL) {
- safe_lease_update(lease, NULL, ddns_cb, ddns_cb_set,
+ safe_lease_update(lease, ddns_cb, ddns_cb_set,
file, line);
- /* lease->ddns_cb = ddns_cb_set; */
} else if (lease6 != NULL) {
- safe_lease_update(NULL, lease6, ddns_cb, ddns_cb_set,
+ safe_lease6_update(lease6, ddns_cb, ddns_cb_set,
file, line);
- /* lease6->ddns_cb = ddns_cb_set; */
} else if (ddns_cb->address.len == 4) {
struct lease *find_lease = NULL;
if (find_lease_by_ip_addr(&find_lease,
@@ -1070,17 +1100,14 @@ ddns_update_lease_ptr(struct lease *lease,
find_lease);
#endif
- /* find_lease->ddns_cb = ddns_cb_set; */
- safe_lease_update(find_lease, NULL, ddns_cb,
+ safe_lease_update(find_lease, ddns_cb,
ddns_cb_set, file, line);
lease_dereference(&find_lease, MDL);
}
else {
-#if defined (DEBUG_DNS_UPDATES)
log_error("%s(%d): ddns_update_lease_ptr failed. "
- "Lease for %s not found. (Is it static lease?)",
+ "Lease for %s not found.",
file, line, piaddr(ddns_cb->address));
-#endif
#if defined (DNS_UPDATES_MEMORY_CHECKS)
update_lease_failed(NULL, NULL, ddns_cb, ddns_cb_set,
@@ -1119,7 +1146,7 @@ ddns_update_lease_ptr(struct lease *lease,
return(ISC_R_FAILURE);
}
- if (iasubopt_hash_lookup(&find_lease6, pool->leases,
+ if (iasubopt_hash_lookup(&find_lease6, pool->leases,
&addr, 16, MDL)) {
find_lease6->ddns_cb = ddns_cb_set;
iasubopt_dereference(&find_lease6, MDL);
@@ -1591,18 +1618,24 @@ ddns_removals(struct lease *lease,
} else if ((lease6 != NULL) && (lease6->ddns_cb != NULL)) {
ddns_cancel(lease6->ddns_cb);
lease6->ddns_cb = NULL;
- } else
- goto cleanup;
+ }
/* allocate our control block */
ddns_cb = ddns_cb_alloc(MDL);
if (ddns_cb == NULL) {
goto cleanup;
}
-
+
+ /*
+ * For v4 we flag static leases so we don't try
+ * and manipulate the lease later. For v6 we don't
+ * get static leases and don't need to flag them.
+ */
if (lease != NULL) {
scope = &(lease->scope);
ddns_cb->address = lease->ip_addr;
+ if (lease->flags & STATIC_LEASE)
+ ddns_cb->flags |= DDNS_STATIC_LEASE;
} else if (lease6 != NULL) {
scope = &(lease6->scope);
memcpy(&ddns_cb->address.iabuf, lease6->addr.s6_addr, 16);
@@ -1618,7 +1651,7 @@ ddns_removals(struct lease *lease,
goto cleanup;
/* Assume that we are removing both records */
- ddns_cb->flags = DDNS_UPDATE_ADDR | DDNS_UPDATE_PTR;
+ ddns_cb->flags |= DDNS_UPDATE_ADDR | DDNS_UPDATE_PTR;
/* and that we want to do the add call */
execute_add = ISC_R_SUCCESS;
diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5
index b6dc9f6..2da8d9e 100644
--- a/server/dhcpd.conf.5
+++ b/server/dhcpd.conf.5
@@ -27,7 +27,7 @@
.\" Support and other services are available for ISC products - see
.\" https://www.isc.org for more information or to learn more about ISC.
.\"
-.\" $Id: dhcpd.conf.5,v 1.106.18.6 2011-06-01 23:30:53 sar Exp $
+.\" $Id: dhcpd.conf.5,v 1.106.18.7 2011-09-21 20:43:10 sar Exp $
.\"
.TH dhcpd.conf 5
.SH NAME
@@ -1357,7 +1357,14 @@ zone 17.127.10.in-addr.arpa. {
.fi
.PP
The \fIprimary\fR statement specifies the IP address of the name
-server whose zone information is to be updated.
+server whose zone information is to be updated. In addition to
+the \fIprimary\fR statement there are also the \fIprimary6\fR ,
+\fIsecondary\fR and \fIsecondary6\fR statements. The \fIprimary6\fR
+statement specifies an IPv6 address for the name server. The
+secondaries provide for additional addresses for name servers
+to be used if the primary does not respond. The number of name
+servers the DDNS code will attempt to use before giving up
+is limited and is currently set to three.
.PP
Note that the zone declarations have to correspond to authority
records in your name server - in the above example, there must be an
diff --git a/server/dhcpd.leases.5 b/server/dhcpd.leases.5
index ba584b1..200556d 100644
--- a/server/dhcpd.leases.5
+++ b/server/dhcpd.leases.5
@@ -28,7 +28,7 @@
.\" see ``http://www.vix.com''. To learn more about Nominum, Inc., see
.\" ``http://www.nominum.com''.
.\"
-.\" $Id: dhcpd.leases.5,v 1.14.24.2 2011-04-22 13:30:14 tomasz Exp $
+.\" $Id: dhcpd.leases.5,v 1.14.24.3 2011-09-19 00:24:22 sar Exp $
.\"
.TH dhcpd.leases 5
.SH NAME
@@ -277,7 +277,9 @@ possible: \fBunknown-state\fR, \fBpartner-down\fR, \fBnormal\fR,
\fBcommunications-interrupted\fR, \fBresolution-interrupted\fR,
\fBpotential-conflict\fR, \fBrecover\fR, \fBrecover-done\fR,
\fBshutdown\fR, \fBpaused\fR, and \fBstartup\fR.
-.B DBDIR/dhcpd.leases
+.RE
+.SH FILES
+.B DBDIR/dhcpd.leases DBDIR/dhcpd.leases~
.SH SEE ALSO
dhcpd(8), dhcp-options(5), dhcp-eval(5), dhcpd.conf(5), RFC2132, RFC2131.
.SH AUTHOR
diff --git a/server/stables.c b/server/stables.c
index 8294527..7ac5994 100644
--- a/server/stables.c
+++ b/server/stables.c
@@ -3,7 +3,7 @@
Tables of information only used by server... */
/*
- * Copyright (c) 2004-2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1995-2003 by Internet Software Consortium
*
* Permission to use, copy, modify, and distribute this software for any
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 3b81ed9..d18fd16 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -86,6 +86,7 @@ LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
@@ -181,7 +182,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -206,9 +207,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(top_srcdir)/configure: $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
clean-checkLIBRARIES: