X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/e0b80e65c8132f096ed5c92e42d4da7d33ff369b..07d66c3691fac5239dfa1f5a8858623ef542c71f:/src/domain.sml diff --git a/src/domain.sml b/src/domain.sml index ea3d70a..b192236 100644 --- a/src/domain.sml +++ b/src/domain.sml @@ -538,7 +538,7 @@ val _ = Env.containerV_one "domain" close () end - fun saveNamed (kind, soa : soa, masterIp) node = + fun saveNamed (kind, soa : soa, masterIp, slaveIps) node = if dom = "localhost" then () else let @@ -546,7 +546,7 @@ val _ = Env.containerV_one "domain" in write "\nzone \""; writeDom (); - write "\" IN {\n\ttype "; + write "\" {\n\ttype "; write kind; write ";\n\tfile \""; write Config.Bind.zonePath_real; @@ -554,7 +554,11 @@ val _ = Env.containerV_one "domain" writeDom (); write ".zone\";\n"; case kind of - "master" => write "\tallow-update { none; };\n" + "master" => (write "\tallow-transfer {\n"; + app (fn ip => (write "\t\t"; + write ip; + write ";\n")) slaveIps; + write "\t};\n") | _ => (write "\tmasters { "; write masterIp; write "; };\n"); @@ -568,16 +572,18 @@ val _ = Env.containerV_one "domain" let val masterIp = case #master dns of - InternalMaster node => valOf (SM.find (nodeMap, node)) + InternalMaster node => nodeIp node | ExternalMaster ip => ip + + val slaveIps = map nodeIp (#slaves dns) in app (saveSoa ("slave", #soa dns)) (#slaves dns); - app (saveNamed ("slave", #soa dns, masterIp)) (#slaves dns); + app (saveNamed ("slave", #soa dns, masterIp, slaveIps)) (#slaves dns); case #master dns of InternalMaster node => (masterNode := SOME node; saveSoa ("master", #soa dns) node; - saveNamed ("master", #soa dns, masterIp) node) + saveNamed ("master", #soa dns, masterIp, slaveIps) node) | _ => masterNode := NONE; !befores dom end