Lines Matching refs:tctx

199 	struct tcp_ctx *tctx;  in tcp_setup_new()  local
207 tctx = malloc(sizeof(*tctx)); in tcp_setup_new()
208 if (tctx == NULL) in tcp_setup_new()
212 error = tcp_addr(addr, atoi(proto_get("tcp:port")), &tctx->tc_sa); in tcp_setup_new()
214 free(tctx); in tcp_setup_new()
218 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC); in tcp_setup_new()
220 tctx->tc_fd = socket(tctx->tc_sa.ss_family, SOCK_STREAM, 0); in tcp_setup_new()
221 if (tctx->tc_fd == -1) { in tcp_setup_new()
223 free(tctx); in tcp_setup_new()
227 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC); in tcp_setup_new()
231 if (setsockopt(tctx->tc_fd, IPPROTO_TCP, TCP_NODELAY, &nodelay, in tcp_setup_new()
236 tctx->tc_wait_called = (side == TCP_SIDE_CLIENT ? false : true); in tcp_setup_new()
237 tctx->tc_side = side; in tcp_setup_new()
238 tctx->tc_magic = TCP_CTX_MAGIC; in tcp_setup_new()
239 *tctxp = tctx; in tcp_setup_new()
265 struct tcp_ctx *tctx; in tcp_connect() local
273 error = tcp_setup_new(dstaddr, TCP_SIDE_CLIENT, &tctx); in tcp_connect()
280 if (bind(tctx->tc_fd, (struct sockaddr *)&sa, in tcp_connect()
287 flags = fcntl(tctx->tc_fd, F_GETFL); in tcp_connect()
298 if (fcntl(tctx->tc_fd, F_SETFL, flags) == -1) { in tcp_connect()
305 ret = connect(tctx->tc_fd, (struct sockaddr *)&tctx->tc_sa, in tcp_connect()
306 sockaddr_len(&tctx->tc_sa)); in tcp_connect()
316 error = tcp_connect_wait(tctx, timeout); in tcp_connect()
322 if (fcntl(tctx->tc_fd, F_SETFL, flags) == -1) { in tcp_connect()
331 *ctxp = tctx; in tcp_connect()
334 tcp_close(tctx); in tcp_connect()
341 struct tcp_ctx *tctx = ctx; in tcp_connect_wait() local
347 PJDLOG_ASSERT(tctx != NULL); in tcp_connect_wait()
348 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_connect_wait()
349 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_CLIENT); in tcp_connect_wait()
350 PJDLOG_ASSERT(!tctx->tc_wait_called); in tcp_connect_wait()
351 PJDLOG_ASSERT(tctx->tc_fd >= 0); in tcp_connect_wait()
358 FD_SET(tctx->tc_fd, &fdset); in tcp_connect_wait()
359 ret = select(tctx->tc_fd + 1, NULL, &fdset, NULL, &tv); in tcp_connect_wait()
371 PJDLOG_ASSERT(FD_ISSET(tctx->tc_fd, &fdset)); in tcp_connect_wait()
373 if (getsockopt(tctx->tc_fd, SOL_SOCKET, SO_ERROR, &error, in tcp_connect_wait()
386 tctx->tc_wait_called = true; in tcp_connect_wait()
388 flags = fcntl(tctx->tc_fd, F_GETFL); in tcp_connect_wait()
396 if (fcntl(tctx->tc_fd, F_SETFL, flags) == -1) { in tcp_connect_wait()
408 struct tcp_ctx *tctx; in tcp_server() local
411 error = tcp_setup_new(addr, TCP_SIDE_SERVER_LISTEN, &tctx); in tcp_server()
417 (void)setsockopt(tctx->tc_fd, SOL_SOCKET, SO_REUSEADDR, &val, in tcp_server()
420 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC); in tcp_server()
422 if (bind(tctx->tc_fd, (struct sockaddr *)&tctx->tc_sa, in tcp_server()
423 sockaddr_len(&tctx->tc_sa)) == -1) { in tcp_server()
425 tcp_close(tctx); in tcp_server()
428 if (listen(tctx->tc_fd, 8) == -1) { in tcp_server()
430 tcp_close(tctx); in tcp_server()
434 *ctxp = tctx; in tcp_server()
442 struct tcp_ctx *tctx = ctx; in tcp_accept() local
447 PJDLOG_ASSERT(tctx != NULL); in tcp_accept()
448 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_accept()
449 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_SERVER_LISTEN); in tcp_accept()
450 PJDLOG_ASSERT(tctx->tc_fd >= 0); in tcp_accept()
451 PJDLOG_ASSERT(tctx->tc_sa.ss_family != AF_UNSPEC); in tcp_accept()
457 fromlen = sockaddr_len(&tctx->tc_sa); in tcp_accept()
458 newtctx->tc_fd = accept(tctx->tc_fd, (struct sockaddr *)&tctx->tc_sa, in tcp_accept()
477 struct tcp_ctx *tctx; in tcp_wrap() local
482 tctx = malloc(sizeof(*tctx)); in tcp_wrap()
483 if (tctx == NULL) in tcp_wrap()
486 tctx->tc_fd = fd; in tcp_wrap()
487 tctx->tc_sa.ss_family = AF_UNSPEC; in tcp_wrap()
488 tctx->tc_wait_called = (client ? false : true); in tcp_wrap()
489 tctx->tc_side = (client ? TCP_SIDE_CLIENT : TCP_SIDE_SERVER_WORK); in tcp_wrap()
490 tctx->tc_magic = TCP_CTX_MAGIC; in tcp_wrap()
491 *ctxp = tctx; in tcp_wrap()
499 struct tcp_ctx *tctx = ctx; in tcp_send() local
501 PJDLOG_ASSERT(tctx != NULL); in tcp_send()
502 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_send()
503 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_CLIENT || in tcp_send()
504 tctx->tc_side == TCP_SIDE_SERVER_WORK); in tcp_send()
505 PJDLOG_ASSERT(tctx->tc_wait_called); in tcp_send()
506 PJDLOG_ASSERT(tctx->tc_fd >= 0); in tcp_send()
509 return (proto_common_send(tctx->tc_fd, data, size, -1)); in tcp_send()
515 struct tcp_ctx *tctx = ctx; in tcp_recv() local
517 PJDLOG_ASSERT(tctx != NULL); in tcp_recv()
518 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_recv()
519 PJDLOG_ASSERT(tctx->tc_side == TCP_SIDE_CLIENT || in tcp_recv()
520 tctx->tc_side == TCP_SIDE_SERVER_WORK); in tcp_recv()
521 PJDLOG_ASSERT(tctx->tc_wait_called); in tcp_recv()
522 PJDLOG_ASSERT(tctx->tc_fd >= 0); in tcp_recv()
525 return (proto_common_recv(tctx->tc_fd, data, size, NULL)); in tcp_recv()
531 const struct tcp_ctx *tctx = ctx; in tcp_descriptor() local
533 PJDLOG_ASSERT(tctx != NULL); in tcp_descriptor()
534 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_descriptor()
536 return (tctx->tc_fd); in tcp_descriptor()
542 const struct tcp_ctx *tctx = ctx; in tcp_address_match() local
546 PJDLOG_ASSERT(tctx != NULL); in tcp_address_match()
547 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_address_match()
553 if (getpeername(tctx->tc_fd, (struct sockaddr *)&sa2, &salen) < 0) in tcp_address_match()
641 const struct tcp_ctx *tctx = ctx; in tcp_local_address() local
645 PJDLOG_ASSERT(tctx != NULL); in tcp_local_address()
646 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_local_address()
649 if (getsockname(tctx->tc_fd, (struct sockaddr *)&sa, &salen) < 0) { in tcp_local_address()
665 const struct tcp_ctx *tctx = ctx; in tcp_remote_address() local
669 PJDLOG_ASSERT(tctx != NULL); in tcp_remote_address()
670 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_remote_address()
673 if (getpeername(tctx->tc_fd, (struct sockaddr *)&sa, &salen) < 0) { in tcp_remote_address()
689 struct tcp_ctx *tctx = ctx; in tcp_close() local
691 PJDLOG_ASSERT(tctx != NULL); in tcp_close()
692 PJDLOG_ASSERT(tctx->tc_magic == TCP_CTX_MAGIC); in tcp_close()
694 if (tctx->tc_fd >= 0) in tcp_close()
695 close(tctx->tc_fd); in tcp_close()
696 tctx->tc_magic = 0; in tcp_close()
697 free(tctx); in tcp_close()