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