1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

addons: address: syntax check for multiple gateways in the same addr family

Ticket: CM-12760
Reviewed By: Roopa, Daniel W, Nikhil G
Testing Done:

$ ifquery br0
auto br0
iface br0
	bridge-ports tap0 tap1
	gateway 1.1.1.2
	gateway 1.1.1.3
	gateway 2001::2
	gateway 2004::2

$ ifreload -a -s
warning: br0: address: 1.1.1.3: multiple gateways for inet family
warning: br0: address: 2004::2: multiple gateways for inet6 family
$
$ echo $?
1
$

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
Julien Fortin
2016-11-21 16:43:57 +01:00
parent b46f4b05cf
commit 38365d4afa

View File

@ -98,6 +98,32 @@ class address(moduleBase):
if self.max_mtu:
self.logger.info('address: using max mtu %s' %self.max_mtu)
def _syntax_check_multiple_gateway(self, family, found, addr, type_obj):
if type(IPNetwork(addr)) == type_obj:
if found:
raise Exception('%s: multiple gateways for %s family'
% (addr, family))
return True
return False
def syntax_check(self, ifaceobj, ifaceobj_func=None):
result = True
inet = False
inet6 = False
gateways = ifaceobj.get_attr_value('gateway')
for addr in gateways if gateways else []:
try:
if self._syntax_check_multiple_gateway('inet', inet, addr,
IPv4Network):
inet = True
if self._syntax_check_multiple_gateway('inet6', inet6, addr,
IPv6Network):
inet6 = True
except Exception as e:
self.logger.warning('%s: address: %s' % (ifaceobj.name, str(e)))
result = False
return result
def _address_valid(self, addrs):
if not addrs:
return False