diff options
author | Jan Cholasta <jcholast@redhat.com> | 2011-05-27 20:29:33 +0200 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2011-05-30 13:37:03 +0200 |
commit | db78f362358862c5225f8d3b83ecc2a88d47e45b (patch) | |
tree | bcbab49f726e0521b17121b068197385e9b32692 /install/tools/ipa-replica-prepare | |
parent | 80b4b3d44bbbe745e644b56c5371ef5f4cda6600 (diff) | |
download | freeipa-db78f362358862c5225f8d3b83ecc2a88d47e45b.tar.gz freeipa-db78f362358862c5225f8d3b83ecc2a88d47e45b.tar.xz freeipa-db78f362358862c5225f8d3b83ecc2a88d47e45b.zip |
Honor netmask in DNS reverse zone setup.
ticket 910
Diffstat (limited to 'install/tools/ipa-replica-prepare')
-rwxr-xr-x | install/tools/ipa-replica-prepare | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/install/tools/ipa-replica-prepare b/install/tools/ipa-replica-prepare index 21f30f07..2765e4a0 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: |