Ejemplo n.º 1
0
int
tcp_connect_thread(thread_t * thread)
{
	checker_t *checker = THREAD_ARG(thread);
	tcp_checker_t *tcp_check = CHECKER_ARG(checker);
	int fd;
	int status;

	/*
	 * Register a new checker thread & return
	 * if checker is disabled
	 */
	if (!CHECKER_ENABLED(checker)) {
		thread_add_timer(thread->master, tcp_connect_thread, checker,
				 checker->vs->delay_loop);
		return 0;
	}

	if ((fd = socket(tcp_check->dst.ss_family, SOCK_STREAM, IPPROTO_TCP)) == -1) {
		DBG("TCP connect fail to create socket.");
		return 0;
	}

	status = tcp_bind_connect(fd, &tcp_check->dst, &tcp_check->bindto);
	if (status == connect_error) {
		thread_add_timer(thread->master, tcp_connect_thread, checker,
				 checker->vs->delay_loop);
	}

	/* handle tcp connection status & register check worker thread */
	tcp_connection_state(fd, status, thread, tcp_check_thread,
			     tcp_check->connection_to);
	return 0;
}
Ejemplo n.º 2
0
enum connect_result
tcp_connect(int fd, struct sockaddr_storage *addr)
{
	conn_opts_t co;
	memset(&co, 0, sizeof(co));
	co.dst = *addr;
	return tcp_bind_connect(fd, &co);
}
Ejemplo n.º 3
0
enum connect_result
tcp_connect(int fd, uint32_t addr_ip, uint16_t addr_port)
{
	return tcp_bind_connect(fd, addr_ip, addr_port, 0);
}
Ejemplo n.º 4
0
enum connect_result
tcp_connect(int fd, struct sockaddr_storage *addr)
{
	return tcp_bind_connect(fd, addr, NULL);
}