Yedidyah Bar David has uploaded a new change for review. Change subject: packaging: setup: correctly verify local IPv6 addresses ......................................................................
packaging: setup: correctly verify local IPv6 addresses Change-Id: I4f4bffdb083755c60704f436a24a960848fbd056 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1009990 Signed-off-by: Yedidyah Bar David <d...@redhat.com> --- M packaging/setup/plugins/ovirt-engine-setup/config/hostname.py 1 file changed, 38 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/21709/1 diff --git a/packaging/setup/plugins/ovirt-engine-setup/config/hostname.py b/packaging/setup/plugins/ovirt-engine-setup/config/hostname.py index 9092655..2662650 100644 --- a/packaging/setup/plugins/ovirt-engine-setup/config/hostname.py +++ b/packaging/setup/plugins/ovirt-engine-setup/config/hostname.py @@ -76,6 +76,21 @@ """ ) + _IPV6_ADDRESS_RE = re.compile( + flags=re.VERBOSE, + pattern=r""" + \s+ + inet6 + \s + (?P<address>[a-f0-9:]+) + / + \d+ + \s+ + .* + $ + """ + ) + _DIG_LOOKUP_RE = re.compile( flags=re.VERBOSE, pattern=r""" @@ -113,6 +128,15 @@ def __init__(self, context): super(Plugin, self).__init__(context=context) + def _is_valid_IPv6_address(self, address): + # We do not use a regexp to validate an IPv6 address + # because it's too complex. Simply use the library for that. + try: + socket.inet_pton(socket.AF_INET6, address) + except socket.error: + return False + return True + def _getNonLoopbackAddresses(self): interfaces = {} addresses = {} @@ -122,12 +146,15 @@ 'addr', ), ) + currentinterface = '' for line in stdout: interfacematch = self._INTERFACE_RE.match(line) addressmatch = self._ADDRESS_RE.match(line) + v6addressmatch = self._IPV6_ADDRESS_RE.match(line) if interfacematch is not None: + currentinterface = interfacematch.group('interface') interfaces[ - interfacematch.group('interface') + currentinterface ] = 'LOOPBACK' in interfacematch.group('options') elif addressmatch is not None: addresses.setdefault( @@ -136,6 +163,16 @@ ).append( addressmatch.group('address') ) + elif ( + v6addressmatch is not None and + self._is_valid_IPv6_address(v6addressmatch.group('address')) + ): + addresses.setdefault( + currentinterface, # no interface in inet6 lines + [] + ).append( + v6addressmatch.group('address') + ) iplist = [] for interface, loopback in interfaces.iteritems(): if not loopback: -- To view, visit http://gerrit.ovirt.org/21709 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4f4bffdb083755c60704f436a24a960848fbd056 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yedidyah Bar David <d...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches