self._query_check_bond_slaves(ifaceobjcurr, 'bond-ports', user_bond_slaves, running_bond_slaves)
except Exception:
pass
+ try:
+ attr = 'bond-arp-ip-target'
+ nl_attr = self._bond_attr_netlink_map[attr]
+ translate_func = self._bond_attr_ifquery_check_translate_func[nl_attr]
+ current_config = self.cache.get_link_info_data_attribute(ifaceobj.name, nl_attr)
+ user_config = ifaceobj.get_attr_value(attr)
+
+ del iface_attrs[iface_attrs.index('bond-arp-ip-target')]
+
+ current_config = [str(c.ip) for c in current_config]
+ user_config = [str(u) for u in user_config]
+
+ difference = list(set(current_config).symmetric_difference(user_config))
+ intersection = list(set(current_config).intersection(user_config))
+
+ for ip in difference:
+ ifaceobjcurr.update_config_with_status(attr, ip, 1)
+
+ for ip in intersection:
+ ifaceobjcurr.update_config_with_status(attr, ip, 0)
+ except Exception:
+ pass
+ user_config_translate_func = {
+ "es-sys-mac": lambda x: str(x).lower()
+ }
+
+ if "es-sys-mac" in iface_attrs and os.geteuid() != 0:
+ # for some reason es-sys-mac (IFLA_BOND_AD_ACTOR_SYSTEM) is not part
+ # of the netlink dump if requested by non-root user
+ try:
+ iface_attrs.remove("es-sys-mac")
+ self.logger.info("%s: non-root user can't check attribute \"es-sys-mac\" value" % ifaceobj.name)
+ except:
+ pass
+
for attr in iface_attrs:
nl_attr = self._bond_attr_netlink_map[attr]
translate_func = self._bond_attr_ifquery_check_translate_func[nl_attr]