xref: /unit/src/nxt_listen_socket.h (revision 1449)
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 
5713Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_listen_socket_create(nxt_task_t *task,
58*1449Svbart@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