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;