summaryrefslogtreecommitdiffstats
path: root/install/tools/ipa-replica-install
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2010-12-01 17:22:56 +0100
committerRob Crittenden <rcritten@redhat.com>2010-12-20 11:27:34 -0500
commitee4d2739f11465ba6a7d817f9b988da5bfe86e2c (patch)
tree2640194c2e0adb7a95471420250b9b9ce0eb702f /install/tools/ipa-replica-install
parentb328d845deaa2f894a6842a9920f46ea341572f2 (diff)
downloadfreeipa-ee4d2739f11465ba6a7d817f9b988da5bfe86e2c.tar.gz
freeipa-ee4d2739f11465ba6a7d817f9b988da5bfe86e2c.tar.xz
freeipa-ee4d2739f11465ba6a7d817f9b988da5bfe86e2c.zip
Make the IPA installer IPv6 friendly
Notable changes include: * parse AAAA records in dnsclient * also ask for AAAA records when verifying FQDN * do not use functions that are not IPv6 aware - notably socket.gethostbyname() The complete list of functions was taken from http://www.akkadia.org/drepper/userapi-ipv6.html section "Interface Checklist"
Diffstat (limited to 'install/tools/ipa-replica-install')
-rwxr-xr-xinstall/tools/ipa-replica-install19
1 files changed, 13 insertions, 6 deletions
diff --git a/install/tools/ipa-replica-install b/install/tools/ipa-replica-install
index 0826afa59..906a098d2 100755
--- a/install/tools/ipa-replica-install
+++ b/install/tools/ipa-replica-install
@@ -127,12 +127,17 @@ def get_host_name(no_host_dns):
return hostname
def resolve_host(host_name):
- ip = socket.gethostbyname(host_name)
-
- if ip == "127.0.0.1" or ip == "::1":
- raise HostnameLocalhost
-
- return ip
+ try:
+ addrinfos = socket.getaddrinfo(host_name, None,
+ socket.AF_UNSPEC, socket.SOCK_STREAM)
+ for ai in addrinfos:
+ ip = ai[4][0]
+ if ip == "127.0.0.1" or ip == "::1":
+ raise HostnameLocalhost
+
+ return addrinfos[0][4][0]
+ except:
+ return None
def set_owner(config, dir):
pw = pwd.getpwnam(config.ds_user)
@@ -240,6 +245,8 @@ def install_bind(config, options):
forwarders = ()
bind = bindinstance.BindInstance(dm_password=config.dirman_password)
ip_address = resolve_host(config.host_name)
+ if not ip_address:
+ sys.exit("Unable to resolve IP address for host name")
create_reverse = bindinstance.create_reverse(options.unattended)
bind.setup(config.host_name, ip_address, config.realm_name,
config.domain_name, forwarders, options.conf_ntp, create_reverse)