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:
@ -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
|
||||
|
Reference in New Issue
Block a user