be78142ea59d915098de269f9b6d1ce94f656a24
[nginx.git] / nginx / src / core / ngx_inet.h
1
2 /*
3  * Copyright (C) Igor Sysoev
4  */
5
6
7 #ifndef _NGX_INET_H_INCLUDED_
8 #define _NGX_INET_H_INCLUDED_
9
10
11 #include <ngx_config.h>
12 #include <ngx_core.h>
13
14
15 #define NGX_INET_ADDRSTRLEN  (sizeof("255.255.255.255") - 1)
16
17
18 typedef struct {
19     in_addr_t         addr;
20     in_addr_t         mask;
21 } ngx_inet_cidr_t;
22
23
24 typedef union {
25     in_addr_t         in_addr;
26 } ngx_url_addr_t;
27
28
29 typedef struct {
30     struct sockaddr  *sockaddr;
31     socklen_t         socklen;
32     ngx_str_t         name;
33 } ngx_peer_addr_t;
34
35
36 typedef struct {
37     ngx_str_t         url;
38     ngx_str_t         host;
39     ngx_str_t         port_text;
40     ngx_str_t         uri;
41
42     in_port_t         port;
43     in_port_t         default_port;
44     int               family;
45
46     unsigned          listen:1;
47     unsigned          uri_part:1;
48     unsigned          no_resolve:1;
49     unsigned          one_addr:1;
50
51     unsigned          no_port:1;
52
53     ngx_url_addr_t    addr;
54
55     ngx_peer_addr_t  *addrs;
56     ngx_uint_t        naddrs;
57
58     char             *err;
59 } ngx_url_t;
60
61
62 in_addr_t ngx_inet_addr(u_char *text, size_t len);
63 size_t ngx_sock_ntop(struct sockaddr *sa, u_char *text, size_t len);
64 size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len);
65 ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr);
66 ngx_int_t ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u);
67 ngx_int_t ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u);
68
69
70
71 #endif /* _NGX_INET_H_INCLUDED_ */