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

addons: addressvirtual: vrr virtual mac multicast bit check

Ticket: CM-8658
Reviewed By: Roopa Prabhu, Scott Emery
Testing Done: Yes, by installing ifupdown .deb file onto cel-e1031-01

This patch includes a check for multicast bit of vrr virtual mac
address and set an error

Signed-off-by: Nikhil <nikhil@cumulusnetworks.com>
This commit is contained in:
Nikhil
2016-03-17 13:01:26 -07:00
parent 3cdb161971
commit 4d3dc0f752

View File

@@ -156,6 +156,9 @@ class addressvirtual(moduleBase):
av_idx += 1
continue
mac = av_attrs[0]
if not self.check_mac_address(ifaceobj, mac):
continue
# Create a macvlan device on this device and set the virtual
# router mac and ip on it
link_created = False
@@ -164,7 +167,6 @@ class addressvirtual(moduleBase):
rtnetlink_api.rtnl_api.create_macvlan(macvlan_ifacename,
ifaceobj.name)
link_created = True
mac = av_attrs[0]
ips = av_attrs[1:]
if mac != 'None':
mac = mac.lower()
@@ -237,6 +239,18 @@ class addressvirtual(moduleBase):
self.ipcmd.batch_commit()
self._remove_addresses_from_bridge(ifaceobj, hwaddress)
def check_mac_address(self, ifaceobj, mac):
if mac == 'None':
return True
mac = mac.lower()
try:
if int(mac.split(":")[0][1], 16) & 1 :
self.logger.error("%s: Multicast bit is set in the virtual mac address '%s'" %(ifaceobj.name, mac))
return False
return True
except Exception, e:
return False
def _up(self, ifaceobj):
address_virtual_list = ifaceobj.get_attr_value('address-virtual')
if not address_virtual_list: