3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #ifndef _NGX_INET_H_INCLUDED_
9 #define _NGX_INET_H_INCLUDED_
12 #include <ngx_config.h>
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)
24 #define NGX_INET_ADDRSTRLEN (sizeof("255.255.255.255") - 1)
25 #define NGX_INET6_ADDRSTRLEN \
26 (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") - 1)
27 #define NGX_UNIX_ADDRSTRLEN \
28 (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path))
30 #if (NGX_HAVE_UNIX_DOMAIN)
31 #define NGX_SOCKADDR_STRLEN (sizeof("unix:") - 1 + NGX_UNIX_ADDRSTRLEN)
33 #define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1)
36 #if (NGX_HAVE_UNIX_DOMAIN)
37 #define NGX_SOCKADDRLEN sizeof(struct sockaddr_un)
39 #define NGX_SOCKADDRLEN 512
71 struct sockaddr
*sockaddr
;
84 in_port_t default_port
;
89 unsigned no_resolve
:1;
90 unsigned one_addr
:1; /* compatibility */
96 u_char sockaddr
[NGX_SOCKADDRLEN
];
105 in_addr_t
ngx_inet_addr(u_char
*text
, size_t len
);
107 ngx_int_t
ngx_inet6_addr(u_char
*p
, size_t len
, u_char
*addr
);
108 size_t ngx_inet6_ntop(u_char
*p
, u_char
*text
, size_t len
);
110 size_t ngx_sock_ntop(struct sockaddr
*sa
, u_char
*text
, size_t len
,
112 size_t ngx_inet_ntop(int family
, void *addr
, u_char
*text
, size_t len
);
113 ngx_int_t
ngx_ptocidr(ngx_str_t
*text
, ngx_cidr_t
*cidr
);
114 ngx_int_t
ngx_parse_addr(ngx_pool_t
*pool
, ngx_addr_t
*addr
, u_char
*text
,
116 ngx_int_t
ngx_parse_url(ngx_pool_t
*pool
, ngx_url_t
*u
);
117 ngx_int_t
ngx_inet_resolve_host(ngx_pool_t
*pool
, ngx_url_t
*u
);
120 #endif /* _NGX_INET_H_INCLUDED_ */