docs: def _get_for_address(address, key):
      """Retrieve an attribute of or the physical interface that
      the IP address provided could be bound to.
  
      :param address (str): An individual IPv4 or IPv6 address without a net
          mask or subnet prefix. For example, '192.168.1.1'.
      :param key: 'iface' for the physical interface name or an attribute
          of the configured interface, for example 'netmask'.
      :returns str: Requested attribute or None if address is not bindable.
      """
      address = netaddr.IPAddress(address)
      for iface in netifaces.interfaces():
          addresses = netifaces.ifaddresses(iface)
          if address.version == 4 and netifaces.AF_INET in addresses:
              addr = addresses[netifaces.AF_INET][0]['addr']
              netmask = addresses[netifaces.AF_INET][0]['netmask']
              network = netaddr.IPNetwork("%s/%s" % (addr, netmask))
              cidr = network.cidr
              if address in cidr:
                  if key == 'iface':
                      return iface
                  else:
                      return addresses[netifaces.AF_INET][0][key]
  
          if address.version == 6 and netifaces.AF_INET6 in addresses:
              for addr in addresses[netifaces.AF_INET6]:
                  network = _get_ipv6_network_from_address(addr)
                  if not network:
                      continue
  
                  cidr = network.cidr
                  if address in cidr:
                      if key == 'iface':
                          return iface
                      elif key == 'netmask' and cidr:
                          return str(cidr).split('/')[1]
                      else:
                          return addr[key]
      return None