def METHOD_NAME(ips, run_number, gateway):
    """Execute fping and determine what was up"""
    log.debug("Running %s", (' '.join(fping_first_args + ips)))
    diags.append('Running %s + %d hosts' % (' '.join(fping_first_args), len(ips)))
    (status, out, err) = pscheduler.run_program(fping_first_args + ips, 
                                                timeout=fping_timeout)
    diags.append('Exited %d' % (status))
    diags.append('Stdout:\n%s' % (out))
    diags.append('Stderr:\n%s' % (err))
    # Status 0 or 1 is okay
    # 3 is IPs not found, which shouldn't happen
    # 4 is a problem while running
    if status in [3, 4]:
        pscheduler.succeed_json({
            "succeeded": False,
            "diags": '\n\n'.join(diags),
            "error": "Fping failed: %s" % (err)
        })
    ips_up = [ value for value in out.split("\n") if len(value) ]
    # In the first run, we check to see if the first thing we get back
    # is the gateway.
    if run_number == 0 and ips_up and ips_up[0] == gateway:
        gateway_up = True
        del ips_up[0]
    else:
        gateway_up = False
    return (gateway_up, bool(ips_up))