From 27479691710d4bc4e0a0307834d5832d410a73b1 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Thu, 10 Dec 2015 16:25:44 +0100
Subject: [PATCH] Added possibility to have DHCP and static addresses
---
src/hostinfo/ifconfig.py | 92 +++++++++++++++++++++++-----------------
1 file changed, 52 insertions(+), 40 deletions(-)
diff --git a/src/hostinfo/ifconfig.py b/src/hostinfo/ifconfig.py
index 3163ab4..6fc900c 100755
--- a/src/hostinfo/ifconfig.py
+++ b/src/hostinfo/ifconfig.py
@@ -17,37 +17,49 @@ def get_uuid(device):
pass
-def is_static(interface):
- if interface._static_:
+def interface_is_static(i):
+ if i._static_:
return True
- if interface._ip_._dhcpserver_:
+ if i._ip_._dhcpserver_:
return True
- if interface._ipv6_._dhcpserver_:
+ if i._ipv6_._dhcpserver_:
+ return True
+ return False
+
+def address_is_static(a):
+ if interface_is_static(a._parent):
+ return True
+ if a.static[0] != None and a.static[0].lower() in [ 'yes', '1' ]:
return True
return False
def generate_ifcfgv4(tree, interface, search, nameservers):
config = []
-
- if not is_static(interface):
+
+ if not interface_is_static(interface):
config.append('BOOTPROTO=dhcp')
pass
else:
config.append('BOOTPROTO=none')
- index = ''
- for ip in filter(util.address, interface._ip_):
- a = util.address(ip)
- netmask = None
- network = None
- broadcast = None
- gateway = None
- for s in filter(util.network, tree._subnet_ ):
- n = util.network(s)
- if a in n:
- netmask = n.netmask
- network = n.network
- broadcast = n.broadcast
- gateway = s.gateway[0]
+ pass
+
+ index = ''
+ for ip in filter(util.address, interface._ip_):
+ if not address_is_static(ip):
+ continue
+ a = util.address(ip)
+ netmask = None
+ network = None
+ broadcast = None
+ gateway = None
+ for s in filter(util.network, tree._subnet_ ):
+ n = util.network(s)
+ if a in n:
+ netmask = n.netmask
+ network = n.network
+ broadcast = n.broadcast
+ gateway = s.gateway[0]
+ if interface_is_static(interface):
if s.name_servers[0]:
nameservers.extend(re.split('[, ]+', s.name_servers[0]))
pass
@@ -56,33 +68,33 @@ def generate_ifcfgv4(tree, interface, search, nameservers):
pass
pass
pass
- if ip.netmask[0]: netmask = ip.netmask[0]
- if ip.network[0]: network = ip.network[0]
- if ip.broadcast[0]: broadcast = ip.broadcast[0]
- if ip.gateway[0]: gateway = ip.gateway[0]
- if ip.search[0]: search.update(ip.search[0].split())
- config.append('IPADDR%s=%s' % (index, a))
- if netmask:
- config.append('NETMASK%s=%s' % (index, netmask))
- pass
- if gateway:
- config.append('GATEWAY%s=%s' % (index, gateway))
- pass
- if network:
- config.append('NETWORK%s=%s' % (index, network))
- pass
- if broadcast:
- config.append('BROADCAST%s=%s' % (index, broadcast))
- pass
- index = int('0%s' % index)+1
pass
+ if ip.netmask[0]: netmask = ip.netmask[0]
+ if ip.network[0]: network = ip.network[0]
+ if ip.broadcast[0]: broadcast = ip.broadcast[0]
+ if ip.gateway[0]: gateway = ip.gateway[0]
+ if ip.search[0]: search.update(ip.search[0].split())
+ config.append('IPADDR%s=%s' % (index, a))
+ if netmask:
+ config.append('NETMASK%s=%s' % (index, netmask))
+ pass
+ if gateway:
+ config.append('GATEWAY%s=%s' % (index, gateway))
+ pass
+ if network:
+ config.append('NETWORK%s=%s' % (index, network))
+ pass
+ if broadcast:
+ config.append('BROADCAST%s=%s' % (index, broadcast))
+ pass
+ index = int('0%s' % index)+1
pass
return config
def generate_ifcfgv6(tree, interface, search, nameservers):
config = []
- if not is_static(interface):
+ if not interface_is_static(interface):
config.append('IPV6INIT=yes')
config.append('IPV6_AUTOCONF=yes')
config.append('IPV6_DEFROUTE=yes')
--
GitLab