The IP address provided to ipa-server-install must be local

Compare the configured interfaces with the supplied IP address and
optional netmask to determine if the interface is available.

https://fedorahosted.org/freeipa/ticket/1175
This commit is contained in:
Rob Crittenden 2011-06-13 16:37:40 -04:00
parent d0af8b28d7
commit c329a54c09
2 changed files with 6 additions and 3 deletions

View File

@ -597,7 +597,7 @@ def main():
# Check we have a public IP that is associated with the hostname
hostaddr = resolve_host(host_name)
if hostaddr is not None:
ip = CheckedIPAddress(hostaddr)
ip = CheckedIPAddress(hostaddr, match_local=True)
else:
if not options.ip_address:
print "Unable to resolve IP address for host name"

View File

@ -66,7 +66,7 @@ def get_domain_name():
return domain_name
class CheckedIPAddress(netaddr.IPAddress):
def __init__(self, addr, match_local=True, parse_netmask=True):
def __init__(self, addr, match_local=False, parse_netmask=True):
if isinstance(addr, CheckedIPAddress):
super(CheckedIPAddress, self).__init__(addr)
self.prefixlen = addr.prefixlen
@ -117,11 +117,14 @@ class CheckedIPAddress(netaddr.IPAddress):
continue
ifnet = netaddr.IPNetwork(fields[3])
if ifnet == net or ifnet.ip == addr:
if ifnet == net or (net is None and ifnet.ip == addr):
net = ifnet
iface = fields[1]
break
if iface is None:
raise ValueError('No network interface matches the provided IP address and netmask')
if net is None:
defnet = True
if addr.version == 4: