def METHOD_NAME(self, dst=None, verbose=conf.verb):
    """Returns the IPv4 routes to a host.
    parameters:
     - dst: the IPv4 of the destination host
    returns: (iface, output_ip, gateway_ip)
     - iface: the interface used to connect to the host
     - output_ip: the outgoing IP that will be used
     - gateway_ip: the gateway IP that will be used
    """
    dst = dst or "0.0.0.0"  # Enable route(None) to return default route
    if isinstance(dst, bytes):
        try:
            dst = plain_str(dst)
        except UnicodeDecodeError:
            raise TypeError("Unknown IP address input (bytes)")
    if dst in self.cache:
        return self.cache[dst]
    # Transform "192.168.*.1-5" to one IP of the set
    _dst = dst.split("/")[0].replace("*", "0")
    while True:
        idx = _dst.find("-")
        if idx < 0:
            break
        m = (_dst[idx:] + ".").find(".")
        _dst = _dst[:idx] + _dst[idx + m:]
    atol_dst = atol(_dst)
    paths = []
    for d, m, gw, i, a, me in self.routes:
        if not a:  # some interfaces may not currently be connected
            continue
        aa = atol(a)
        if aa == atol_dst:
            paths.append(
                (0xffffffff, 1, (scapy.consts.LOOPBACK_INTERFACE, a, "0.0.0.0"))  # noqa: E501
            )
        if (atol_dst & m) == (d & m):
            paths.append((m, me, (i, a, gw)))
    if not paths:
        if verbose:
            warning("No route found (no default route?)")
        return scapy.consts.LOOPBACK_INTERFACE, "0.0.0.0", "0.0.0.0"
    # Choose the more specific route
    # Sort by greatest netmask and use metrics as a tie-breaker
    paths.sort(key=lambda x: (-x[0], x[1]))
    # Return interface
    ret = paths[0][2]
    self.cache[dst] = ret
    return ret