Annotation of embedaddon/nginx/src/core/ngx_inet.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #ifndef _NGX_INET_H_INCLUDED_
9: #define _NGX_INET_H_INCLUDED_
10:
11:
12: #include <ngx_config.h>
13: #include <ngx_core.h>
14:
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)
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))
29:
30: #if (NGX_HAVE_UNIX_DOMAIN)
31: #define NGX_SOCKADDR_STRLEN (sizeof("unix:") - 1 + NGX_UNIX_ADDRSTRLEN)
32: #else
33: #define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1)
34: #endif
35:
36: #if (NGX_HAVE_UNIX_DOMAIN)
37: #define NGX_SOCKADDRLEN sizeof(struct sockaddr_un)
38: #else
39: #define NGX_SOCKADDRLEN 512
40: #endif
41:
42:
43: typedef struct {
44: in_addr_t addr;
45: in_addr_t mask;
46: } ngx_in_cidr_t;
47:
48:
49: #if (NGX_HAVE_INET6)
50:
51: typedef struct {
52: struct in6_addr addr;
53: struct in6_addr mask;
54: } ngx_in6_cidr_t;
55:
56: #endif
57:
58:
59: typedef struct {
60: ngx_uint_t family;
61: union {
62: ngx_in_cidr_t in;
63: #if (NGX_HAVE_INET6)
64: ngx_in6_cidr_t in6;
65: #endif
66: } u;
67: } ngx_cidr_t;
68:
69:
70: typedef struct {
71: struct sockaddr *sockaddr;
72: socklen_t socklen;
73: ngx_str_t name;
74: } ngx_addr_t;
75:
76:
77: typedef struct {
78: ngx_str_t url;
79: ngx_str_t host;
80: ngx_str_t port_text;
81: ngx_str_t uri;
82:
83: in_port_t port;
84: in_port_t default_port;
85: int family;
86:
87: unsigned listen:1;
88: unsigned uri_part:1;
89: unsigned no_resolve:1;
90: unsigned one_addr:1; /* compatibility */
91:
92: unsigned no_port:1;
93: unsigned wildcard:1;
94:
95: socklen_t socklen;
96: u_char sockaddr[NGX_SOCKADDRLEN];
97:
98: ngx_addr_t *addrs;
99: ngx_uint_t naddrs;
100:
101: char *err;
102: } ngx_url_t;
103:
104:
105: in_addr_t ngx_inet_addr(u_char *text, size_t len);
106: #if (NGX_HAVE_INET6)
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);
109: #endif
110: size_t ngx_sock_ntop(struct sockaddr *sa, u_char *text, size_t len,
111: ngx_uint_t port);
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,
115: size_t len);
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);
118:
119:
120: #endif /* _NGX_INET_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>