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

addons: addressvirtual: ifquery normalizing ip address to IPNetwork format for comparaisons

Ticket: None
Reviewed By: Roopa
Testing Done:

Test from CM-8736:

auto bridge
iface bridge
      bridge-vlan-aware yes
      bridge-ports swp42
      mstpctl-treeprio 4096
      bridge-stp on
      bridge-vids 5 13 14 20 799 1001-1006
      bridge-pvid 192

auto bridge.20
iface bridge.20
      address 10.7.192.194/27
      address-virtual 44:38:39:ff:00:20 10.7.192.193

$ ifreload -a
$ ifquery bridge.20 -c
auto bridge.20
iface bridge.20                                                     [fail]
      address 10.7.192.194/27                                     [pass]
      address-virtual 44:38:39:ff:00:20 10.7.192.193/32           [fail]
$

it fails because ifquery is comparing : ['10.7.192.193/32'] with ['10.7.192.193']

after the patch:

$ ifquery bridge.20 -c
auto bridge.20
iface bridge.20                                                     [pass]
      address 10.7.192.194/27                                     [pass]
      	      address-virtual 44:38:39:ff:00:20 10.7.192.193              [pass]

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
Julien Fortin
2016-10-19 00:41:02 +02:00
parent 8e9fc17804
commit 90649d374a

View File

@ -359,14 +359,27 @@ class addressvirtual(moduleBase):
% (ifaceobj.name,
macvlan_ifacename,
' '.join(av_attrs)))
if (rhwaddress == av_attrs[0] and raddrs == av_attrs[1:] and
self._check_addresses_in_bridge(ifaceobj, av_attrs[0])):
ifaceobjcurr.update_config_with_status('address-virtual',
address_virtual, 0)
else:
raddress_virtual = '%s %s' %(rhwaddress, ' '.join(raddrs))
ifaceobjcurr.update_config_with_status('address-virtual',
raddress_virtual, 1)
try:
cmp_av_addr = av_attrs[1:][0]
cmp_raddr = raddrs[0]
if '/' in cmp_raddr and '/' not in cmp_av_addr:
cmp_av_addr = str(IPNetwork(cmp_av_addr))
elif '/' in cmp_av_addr and '/' not in cmp_raddr:
cmp_raddr = str(IPNetwork(cmp_raddr))
if (rhwaddress == av_attrs[0] and cmp_raddr == cmp_av_addr and
self._check_addresses_in_bridge(ifaceobj, av_attrs[0])):
ifaceobjcurr.update_config_with_status('address-virtual',
address_virtual, 0)
else:
raddress_virtual = '%s %s' % (rhwaddress, ' '.join(raddrs))
ifaceobjcurr.update_config_with_status('address-virtual',
raddress_virtual, 1)
except:
raddress_virtual = '%s %s' % (rhwaddress, ' '.join(raddrs))
ifaceobjcurr.update_config_with_status('address-virtual',
raddress_virtual, 1)
av_idx += 1
return