chiark / gitweb /
@@ -1,3 +1,10 @@
[chiark-utils.git] / scripts / named-conf
index fdfa404792adbfe7cb42767a6f598ffa2d87acf0..d6790773c16d70d1ab99237a8f4bc268e9a2e479 100755 (executable)
@@ -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;