    def determine_address(address)
      begin
        ipaddr = IPAddr.new(address)
      rescue IPAddr::InvalidAddressError
        return address
      end

      Logger.debug("Determining ip address...")

      if ipaddr.to_range.begin == ipaddr.to_range.end
        # subnet mask is 255.255.255.255
        return ipaddr.to_s
      end

      all_addresses = fetch_all_addresses
      Logger.debug(all_addresses)

      matched = all_addresses.select do |a|
        ipaddr.include?(a)
      end
      Logger.debug(matched)

      if matched.empty?
        raise Error, "No IP address matching #{ipaddr} is not found."
      elsif matched.size > 1
        raise Error, "Multiple IP addresses matching #{ipaddr} are found."
      end

      matched.first
    end