Blob Blame History Raw
From bc2e1a64e64bddf04fd3e27c79432facbedca182 Mon Sep 17 00:00:00 2001
From: Ryan McCabe <rmccabe@redhat.com>
Date: Tue, 13 Jun 2017 11:45:07 -0400
Subject: [PATCH] Fix ipv6 subnet detection

Add better ipv6 subnet detection that was added as part of a
much larger patch set in upstream commit
ef18b8ac4cf7e3dfd98830fbdb298380a192a0fc

Related: rhbz#1438082
X-approved-upstream: true

Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
---
 cloudinit/net/sysconfig.py | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
index ef80d99..6a0dd43 100644
--- a/cloudinit/net/sysconfig.py
+++ b/cloudinit/net/sysconfig.py
@@ -11,6 +11,17 @@ from cloudinit import util
 from . import renderer
 
 
+def _subnet_is_ipv6(subnet):
+    """Common helper for checking network_state subnets for ipv6."""
+    # 'static6' or 'dhcp6'
+    if subnet['type'].endswith('6'):
+        # This is a request for DHCPv6.
+        return True
+    elif subnet['type'] == 'static' and ":" in subnet['address']:
+        return True
+    return False
+
+
 def _make_header(sep='#'):
     lines = [
         "Created by cloud-init on instance boot automatically, do not edit.",
@@ -286,7 +297,7 @@ class Renderer(renderer.Renderer):
                 # but should remain 'none'
                 # if iface_cfg['BOOTPROTO'] == 'none':
                 #    iface_cfg['BOOTPROTO'] = 'static'
-                if subnet.get('ipv6'):
+                if _subnet_is_ipv6(subnet):
                     iface_cfg['IPV6INIT'] = True
             else:
                 raise ValueError("Unknown subnet type '%s' found"
@@ -303,7 +314,7 @@ class Renderer(renderer.Renderer):
             elif subnet_type in ['dhcp4', 'dhcp']:
                 continue
             elif subnet_type == 'static':
-                if subnet.get('ipv6'):
+                if _subnet_is_ipv6(subnet):
                     ipv6_index = ipv6_index + 1
                     if 'netmask' in subnet and str(subnet['netmask']) != "":
                         ipv6_cidr = (subnet['address'] +