summaryrefslogtreecommitdiffstats
path: root/install/tools/ipa-replica-prepare
diff options
context:
space:
mode:
Diffstat (limited to 'install/tools/ipa-replica-prepare')
-rwxr-xr-xinstall/tools/ipa-replica-prepare34
1 files changed, 28 insertions, 6 deletions
diff --git a/install/tools/ipa-replica-prepare b/install/tools/ipa-replica-prepare
index 21f30f072..2765e4a0e 100755
--- a/install/tools/ipa-replica-prepare
+++ b/install/tools/ipa-replica-prepare
@@ -27,7 +27,7 @@ import krbV
from ipapython import ipautil
from ipaserver.install import bindinstance, dsinstance, installutils, certs
-from ipaserver.install.bindinstance import add_zone, add_reverse_zone, add_rr, add_ptr_rr
+from ipaserver.install.bindinstance import add_zone, add_reverse_zone, add_fwd_rr, add_ptr_rr, dns_zone_exists
from ipaserver.install.replication import check_replication_plugin, enable_replication_version_checking
from ipaserver.install.installutils import resolve_host
from ipaserver.plugins.ldap2 import ldap2
@@ -426,12 +426,34 @@ def main():
name = domain.pop(0)
domain = ".".join(domain)
- ip_address = str(options.ip_address)
+ ip = options.ip_address
+ ip_address = str(ip)
+ ip_prefixlen = ip.prefixlen
+
+ if ip.defaultnet:
+ revzone = ip.reverse_dns
+ if ip.version == 4:
+ prefix = 32
+ dec = 8
+ elif ip.version == 6:
+ prefix = 128
+ dec = 4
+
+ while prefix > 0:
+ dummy, dot, revzone = revzone.partition('.')
+ prefix = prefix - dec
+ if dns_zone_exists(revzone):
+ break
+
+ if prefix > 0:
+ ip_prefixlen = prefix
+ else:
+ ns_ip_address = resolve_host(api.env.host)
+ add_reverse_zone(ip_address, ip_prefixlen, ns_ip_address)
+
zone = add_zone(domain, nsaddr=ip_address)
- add_rr(zone, name, "A", ip_address)
- ns_ip_address = resolve_host(api.env.host)
- add_reverse_zone(ip_address, ns_ip_address)
- add_ptr_rr(ip_address, replica_fqdn)
+ add_fwd_rr(zone, name, ip_address)
+ add_ptr_rr(ip_address, ip_prefixlen, replica_fqdn)
try:
if not os.geteuid()==0: