'Send an ARP to a server to see if it\'s still up'

def _do_probe(self):

    self._do_expire()
    server = self.servers.pop(0)
    self.servers.append(server)
    r = arp()
    r.hwtype = r.HW_TYPE_ETHERNET
    r.prototype = r.PROTO_TYPE_IP
    r.opcode = r.REQUEST
    r.hwdst = ETHER_BROADCAST
    r.protodst = server
    r.hwsrc = self.mac
    r.protosrc = self.service_ip
    e = ethernet(type=ethernet.ARP_TYPE, src=self.mac, dst=ETHER_BROADCAST)
    e.set_payload(r)
    msg = of.ofp_packet_out()
    msg.data = e.pack()
    msg.actions.append(of.ofp_action_output(port=of.OFPP_FLOOD))
    msg.in_port = of.OFPP_NONE
    self.con.send(msg)
    self.outstanding_probes[server] = (time.time() + self.arp_timeout)
    core.callDelayed(self._probe_wait_time, self._do_probe)
