aboutsummaryrefslogtreecommitdiff
path: root/common/parse.c
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 /common/parse.c
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>
Diffstat (limited to 'common/parse.c')
-rw-r--r--common/parse.c57
1 files changed, 57 insertions, 0 deletions
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);