Mercurial > hg > nginx-quic
comparison src/core/ngx_inet.h @ 6559:adf25b8d0431
Introduced the ngx_sockaddr_t type.
It's properly aligned and can hold any supported sockaddr.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 23 May 2016 16:37:20 +0300 |
parents | 6d3a60a909c8 |
children | 19db5a6bc34e |
comparison
equal
deleted
inserted
replaced
6558:68854ce64ec7 | 6559:adf25b8d0431 |
---|---|
11 | 11 |
12 #include <ngx_config.h> | 12 #include <ngx_config.h> |
13 #include <ngx_core.h> | 13 #include <ngx_core.h> |
14 | 14 |
15 | 15 |
16 /* | |
17 * TODO: autoconfigure NGX_SOCKADDRLEN and NGX_SOCKADDR_STRLEN as | |
18 * sizeof(struct sockaddr_storage) | |
19 * sizeof(struct sockaddr_un) | |
20 * sizeof(struct sockaddr_in6) | |
21 * sizeof(struct sockaddr_in) | |
22 */ | |
23 | |
24 #define NGX_INET_ADDRSTRLEN (sizeof("255.255.255.255") - 1) | 16 #define NGX_INET_ADDRSTRLEN (sizeof("255.255.255.255") - 1) |
25 #define NGX_INET6_ADDRSTRLEN \ | 17 #define NGX_INET6_ADDRSTRLEN \ |
26 (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") - 1) | 18 (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") - 1) |
27 #define NGX_UNIX_ADDRSTRLEN \ | 19 #define NGX_UNIX_ADDRSTRLEN \ |
28 (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path)) | 20 (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path)) |
29 | 21 |
30 #if (NGX_HAVE_UNIX_DOMAIN) | 22 #if (NGX_HAVE_UNIX_DOMAIN) |
31 #define NGX_SOCKADDR_STRLEN (sizeof("unix:") - 1 + NGX_UNIX_ADDRSTRLEN) | 23 #define NGX_SOCKADDR_STRLEN (sizeof("unix:") - 1 + NGX_UNIX_ADDRSTRLEN) |
24 #elif (NGX_HAVE_INET6) | |
25 #define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1) | |
32 #else | 26 #else |
33 #define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1) | 27 #define NGX_SOCKADDR_STRLEN (NGX_INET_ADDRSTRLEN + sizeof(":65535") - 1) |
34 #endif | 28 #endif |
35 | 29 |
30 /* compatibility */ | |
31 #define NGX_SOCKADDRLEN sizeof(ngx_sockaddr_t) | |
32 | |
33 | |
34 typedef union { | |
35 struct sockaddr sockaddr; | |
36 struct sockaddr_in sockaddr_in; | |
37 #if (NGX_HAVE_INET6) | |
38 struct sockaddr_in6 sockaddr_in6; | |
39 #endif | |
36 #if (NGX_HAVE_UNIX_DOMAIN) | 40 #if (NGX_HAVE_UNIX_DOMAIN) |
37 #define NGX_SOCKADDRLEN sizeof(struct sockaddr_un) | 41 struct sockaddr_un sockaddr_un; |
38 #else | |
39 #define NGX_SOCKADDRLEN 512 | |
40 #endif | 42 #endif |
43 } ngx_sockaddr_t; | |
41 | 44 |
42 | 45 |
43 typedef struct { | 46 typedef struct { |
44 in_addr_t addr; | 47 in_addr_t addr; |
45 in_addr_t mask; | 48 in_addr_t mask; |
90 | 93 |
91 unsigned no_port:1; | 94 unsigned no_port:1; |
92 unsigned wildcard:1; | 95 unsigned wildcard:1; |
93 | 96 |
94 socklen_t socklen; | 97 socklen_t socklen; |
95 u_char sockaddr[NGX_SOCKADDRLEN]; | 98 ngx_sockaddr_t sockaddr; |
96 | 99 |
97 ngx_addr_t *addrs; | 100 ngx_addr_t *addrs; |
98 ngx_uint_t naddrs; | 101 ngx_uint_t naddrs; |
99 | 102 |
100 char *err; | 103 char *err; |