From: ianmdlvl Date: Tue, 5 Feb 2008 19:50:57 +0000 (+0000) Subject: @@ -1,3 +1,10 @@ X-Git-Tag: debian_version_4_1_27~7 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=7a02dd6311d520761fa3f0f93bf567361d7813be @@ -1,3 +1,10 @@ +chiark-utils (4.1.26) unstable; urgency=low + + * chiark-named-conf: foreign zones work properly using the configuration + prevailing at the end of the config file. + + -- Ian Jackson Tue, 05 Feb 2008 19:50:19 +0000 + chiark-utils (4.1.25) unstable; urgency=low * chiark-backup: remove snap-mount properly whether it's a dir or a leaf --- diff --git a/debian/changelog b/debian/changelog index d2fd986..645fe86 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +chiark-utils (4.1.26) unstable; urgency=low + + * chiark-named-conf: foreign zones work properly using the configuration + prevailing at the end of the config file. + + -- Ian Jackson Tue, 05 Feb 2008 19:50:19 +0000 + chiark-utils (4.1.25) unstable; urgency=low * chiark-backup: remove snap-mount properly whether it's a dir or a leaf diff --git a/scripts/named-conf b/scripts/named-conf index fdfa404..d679077 100755 --- a/scripts/named-conf +++ b/scripts/named-conf @@ -354,9 +354,23 @@ sub bad_modifiers ($) { return 0; } +sub zone_conf_settings ($$) { + my ($cfg,$zone) = @_; + my ($sfx,$aref); + foreach $sfx (qw(self_soa self_ns self_addr forbid_addr forbid_slave + conv_glueless indirect_glue)) { + { no strict 'refs'; $aref= [ @$sfx ]; } + @$aref or cfg_fail("failed to specify $sfx before zone") + if $sfx =~ m/^self/; + $cfg->{$sfx}= $aref; + } + foreach $sfx (qw(self_soa self_ns)) { + map { s/\*$/$zone/ } @{ $zone_cfg{$zone}{$sfx} }; + } +} + sub zone_conf ($$$$$@) { my ($zone,$style,$sabbr,$mod,$file,@servers) = @_; - my ($sfx,$aref); $file= qualify("$slave_dir/$slave_prefix".$zone.$slave_suffix) unless length $file; if (!length $output) { @@ -382,16 +396,7 @@ sub zone_conf ($$$$$@) { $zone_cfg{$zone}{'maildir'}= qualify($mail_state_dir); $zone_cfg{$zone}{'mailmwarn'}= $mail_max_warnfreq; } - foreach $sfx (qw(self_soa self_ns self_addr forbid_addr forbid_slave - conv_glueless indirect_glue)) { - { no strict 'refs'; $aref= [ @$sfx ]; } - @$aref or cfg_fail("failed to specify $sfx before zone") - if $sfx =~ m/^self/; - $zone_cfg{$zone}{$sfx}= $aref; - } - foreach $sfx (qw(self_soa self_ns)) { - map { s/\*$/$zone/ } @{ $zone_cfg{$zone}{$sfx} }; - } + zone_conf_settings($zone_cfg{$zone}, $zone); $zone_cfg{$zone}{'output'}= $output; push @zone_cfg_list, $zone; } @@ -425,6 +430,7 @@ sub process_zones (@) { 's' => "f $group2modcmd{'foreign'}", 'servers' => [ ], }; + zone_conf_settings($cfg, $zone); mail_zone_before() or next if $domail; diff --git a/scripts/named-conf.8 b/scripts/named-conf.8 index 57d5a93..0faae0a 100644 --- a/scripts/named-conf.8 +++ b/scripts/named-conf.8 @@ -152,7 +152,9 @@ several physical lines. .SS GENERAL DIRECTIVES These directives specify general configuration details. They should appear before directives specifying zones, as each will affect only -later zone directives. +later zone directives. Foreign zones (zones explicitly specified on +the command line but not mentioned in the configuration) use the +configuration settings prevailing at the end of the config file. .TP \fBadmin\fP \fIemail\-address\fP Specifies the email address of the local administrator. This is used