]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
Merge pull request #237 from svenauhagen/bugfix/bondarpcheck
authorJulien Fortin <jfortin@nvidia.com>
Sat, 28 May 2022 12:02:49 +0000 (14:02 +0200)
committerGitHub <noreply@github.com>
Sat, 28 May 2022 12:02:49 +0000 (14:02 +0200)
addons: bond: fix ifquery for IFLA_BOND_ARP_IP_TARGET

1  2 
ifupdown2/addons/bond.py

index 9eb5916f717ce5e3fad14fc39b6641750f0470d5,163c0f67c79040a1d09bd71598f99e626d749292..e4e46d6508e64475de49c7587641a017cfea860c
@@@ -927,20 -915,29 +927,42 @@@ class bond(Addon, moduleBase)
              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]