10Sigor@sysoev.ru 20Sigor@sysoev.ru /* 30Sigor@sysoev.ru * Copyright (C) Igor Sysoev 40Sigor@sysoev.ru * Copyright (C) NGINX, Inc. 50Sigor@sysoev.ru */ 60Sigor@sysoev.ru 70Sigor@sysoev.ru #ifndef _NXT_LISTEN_SOCKET_H_INCLUDED_ 80Sigor@sysoev.ru #define _NXT_LISTEN_SOCKET_H_INCLUDED_ 90Sigor@sysoev.ru 100Sigor@sysoev.ru 110Sigor@sysoev.ru typedef struct { 120Sigor@sysoev.ru /* nxt_socket_t is int. */ 130Sigor@sysoev.ru nxt_socket_t socket; 140Sigor@sysoev.ru int backlog; 150Sigor@sysoev.ru 160Sigor@sysoev.ru nxt_work_queue_t *work_queue; 170Sigor@sysoev.ru nxt_work_handler_t handler; 180Sigor@sysoev.ru 190Sigor@sysoev.ru nxt_sockaddr_t *sockaddr; 200Sigor@sysoev.ru 21359Sigor@sysoev.ru uint32_t count; 22359Sigor@sysoev.ru 230Sigor@sysoev.ru uint8_t flags; 240Sigor@sysoev.ru uint8_t read_after_accept; /* 1 bit */ 250Sigor@sysoev.ru 26771Sigor@sysoev.ru #if (NXT_TLS) 27771Sigor@sysoev.ru uint8_t tls; /* 1 bit */ 280Sigor@sysoev.ru #endif 290Sigor@sysoev.ru #if (NXT_INET6 && defined IPV6_V6ONLY) 300Sigor@sysoev.ru uint8_t ipv6only; /* 2 bits */ 310Sigor@sysoev.ru #endif 320Sigor@sysoev.ru 3313Sigor@sysoev.ru uint8_t socklen; 3413Sigor@sysoev.ru uint8_t address_length; 350Sigor@sysoev.ru } nxt_listen_socket_t; 360Sigor@sysoev.ru 370Sigor@sysoev.ru 380Sigor@sysoev.ru #if (NXT_FREEBSD || NXT_MACOSX || NXT_OPENBSD) 390Sigor@sysoev.ru /* 400Sigor@sysoev.ru * A backlog is limited by system-wide sysctl kern.ipc.somaxconn. 410Sigor@sysoev.ru * This is supported by FreeBSD 2.2, OpenBSD 2.0, and MacOSX. 420Sigor@sysoev.ru */ 430Sigor@sysoev.ru #define NXT_LISTEN_BACKLOG -1 440Sigor@sysoev.ru 450Sigor@sysoev.ru #else 460Sigor@sysoev.ru /* 470Sigor@sysoev.ru * Linux, Solaris, and NetBSD treat negative value as 0. 480Sigor@sysoev.ru * 511 is a safe default. 490Sigor@sysoev.ru */ 500Sigor@sysoev.ru #define NXT_LISTEN_BACKLOG 511 510Sigor@sysoev.ru #endif 520Sigor@sysoev.ru 530Sigor@sysoev.ru 54115Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_listen_socket(nxt_task_t *task, nxt_socket_t s, 55115Sigor@sysoev.ru int backlog); 56115Sigor@sysoev.ru 57*1451Svbart@nginx.com NXT_EXPORT nxt_int_t nxt_listen_socket_create(nxt_task_t *task, nxt_mp_t *mp, 581449Svbart@nginx.com nxt_listen_socket_t *ls); 5913Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_listen_socket_update(nxt_task_t *task, 6013Sigor@sysoev.ru nxt_listen_socket_t *ls, nxt_listen_socket_t *prev); 61359Sigor@sysoev.ru NXT_EXPORT void nxt_listen_socket_remote_size(nxt_listen_socket_t *ls); 620Sigor@sysoev.ru NXT_EXPORT size_t nxt_listen_socket_pool_min_size(nxt_listen_socket_t *ls); 630Sigor@sysoev.ru 640Sigor@sysoev.ru 650Sigor@sysoev.ru #endif /* _NXT_LISTEN_SOCKET_H_INCLUDED_ */ 66