|
|
ef3f20 |
From bc2e1a64e64bddf04fd3e27c79432facbedca182 Mon Sep 17 00:00:00 2001
|
|
|
ef3f20 |
From: Ryan McCabe <rmccabe@redhat.com>
|
|
|
ef3f20 |
Date: Tue, 13 Jun 2017 11:45:07 -0400
|
|
|
ef3f20 |
Subject: [PATCH] Fix ipv6 subnet detection
|
|
|
ef3f20 |
|
|
|
ef3f20 |
Add better ipv6 subnet detection that was added as part of a
|
|
|
ef3f20 |
much larger patch set in upstream commit
|
|
|
ef3f20 |
ef18b8ac4cf7e3dfd98830fbdb298380a192a0fc
|
|
|
ef3f20 |
|
|
|
ef3f20 |
Related: rhbz#1438082
|
|
|
ef3f20 |
X-approved-upstream: true
|
|
|
ef3f20 |
|
|
|
ef3f20 |
Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
|
|
|
ef3f20 |
---
|
|
|
ef3f20 |
cloudinit/net/sysconfig.py | 15 +++++++++++++--
|
|
|
ef3f20 |
1 file changed, 13 insertions(+), 2 deletions(-)
|
|
|
ef3f20 |
|
|
|
ef3f20 |
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
|
|
|
ef3f20 |
index ef80d99..6a0dd43 100644
|
|
|
ef3f20 |
--- a/cloudinit/net/sysconfig.py
|
|
|
ef3f20 |
+++ b/cloudinit/net/sysconfig.py
|
|
|
ef3f20 |
@@ -11,6 +11,17 @@ from cloudinit import util
|
|
|
ef3f20 |
from . import renderer
|
|
|
ef3f20 |
|
|
|
ef3f20 |
|
|
|
ef3f20 |
+def _subnet_is_ipv6(subnet):
|
|
|
ef3f20 |
+ """Common helper for checking network_state subnets for ipv6."""
|
|
|
ef3f20 |
+ # 'static6' or 'dhcp6'
|
|
|
ef3f20 |
+ if subnet['type'].endswith('6'):
|
|
|
ef3f20 |
+ # This is a request for DHCPv6.
|
|
|
ef3f20 |
+ return True
|
|
|
ef3f20 |
+ elif subnet['type'] == 'static' and ":" in subnet['address']:
|
|
|
ef3f20 |
+ return True
|
|
|
ef3f20 |
+ return False
|
|
|
ef3f20 |
+
|
|
|
ef3f20 |
+
|
|
|
ef3f20 |
def _make_header(sep='#'):
|
|
|
ef3f20 |
lines = [
|
|
|
ef3f20 |
"Created by cloud-init on instance boot automatically, do not edit.",
|
|
|
ef3f20 |
@@ -286,7 +297,7 @@ class Renderer(renderer.Renderer):
|
|
|
ef3f20 |
# but should remain 'none'
|
|
|
ef3f20 |
# if iface_cfg['BOOTPROTO'] == 'none':
|
|
|
ef3f20 |
# iface_cfg['BOOTPROTO'] = 'static'
|
|
|
ef3f20 |
- if subnet.get('ipv6'):
|
|
|
ef3f20 |
+ if _subnet_is_ipv6(subnet):
|
|
|
ef3f20 |
iface_cfg['IPV6INIT'] = True
|
|
|
ef3f20 |
else:
|
|
|
ef3f20 |
raise ValueError("Unknown subnet type '%s' found"
|
|
|
ef3f20 |
@@ -303,7 +314,7 @@ class Renderer(renderer.Renderer):
|
|
|
ef3f20 |
elif subnet_type in ['dhcp4', 'dhcp']:
|
|
|
ef3f20 |
continue
|
|
|
ef3f20 |
elif subnet_type == 'static':
|
|
|
ef3f20 |
- if subnet.get('ipv6'):
|
|
|
ef3f20 |
+ if _subnet_is_ipv6(subnet):
|
|
|
ef3f20 |
ipv6_index = ipv6_index + 1
|
|
|
ef3f20 |
if 'netmask' in subnet and str(subnet['netmask']) != "":
|
|
|
ef3f20 |
ipv6_cidr = (subnet['address'] +
|