Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ngx_inet.h « core « src - github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 7600ed8019fca3f243850118a3f709794247b14a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

/*
 * Copyright (C) Igor Sysoev
 */


#ifndef _NGX_INET_H_INCLUDED_
#define _NGX_INET_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>


#define NGX_PARSE_URL_INET   1
#define NGX_PARSE_URL_UNIX   2


typedef struct {
    in_addr_t  addr;
    in_addr_t  mask;
} ngx_inet_cidr_t;


typedef struct {
    struct sockaddr    *sockaddr;
    socklen_t           socklen;

    ngx_str_t           name;
    char               *uri_separator;

    ngx_uint_t          weight;

    ngx_uint_t          fails;
    time_t              accessed;

    ngx_uint_t          max_fails;
    time_t              fail_timeout;

#if (NGX_SSL)
    ngx_ssl_session_t  *ssl_session;
#endif
} ngx_peer_t;


struct ngx_peers_s {
    ngx_uint_t          current;
    ngx_uint_t          weight;

    ngx_uint_t          number;
    ngx_uint_t          last_cached;

 /* ngx_mutex_t        *mutex; */
    ngx_connection_t  **cached;

    ngx_peer_t          peer[1];
};


typedef struct {
    ngx_int_t     type;

    ngx_peers_t  *peers;

    ngx_str_t     url;
    ngx_str_t     host;
    ngx_str_t     host_header;
    ngx_str_t     port;
    ngx_str_t     uri;

    in_port_t     portn;
    in_port_t     default_portn;

    unsigned      listen:1;
    unsigned      uri_part:1;
    unsigned      upstream:1;

    unsigned      default_port:1;
    unsigned      wildcard:1;

    char         *err;
} ngx_url_t;


typedef struct {
    ngx_str_t     name;           /* "schema:host:port/uri" */
    ngx_str_t     url;            /* "host:port/uri" */
    ngx_str_t     host;
    ngx_str_t     uri;
    ngx_str_t     host_header;    /* "host:port" */
    ngx_str_t     port_text;      /* "port" */

    in_port_t     port;

    in_port_t     default_port_value;

    unsigned      default_port:1;
    unsigned      wildcard:1;

    unsigned      uri_part:1;
    unsigned      port_only:1;
} ngx_inet_upstream_t;


size_t ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text,
                     size_t len);
size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len);

ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr);

ngx_peers_t *ngx_inet_upstream_parse(ngx_conf_t *cf, ngx_inet_upstream_t *u);
ngx_peers_t *ngx_inet_resolve_peer(ngx_conf_t *cf, ngx_str_t *name,
    in_port_t port);
char *ngx_inet_parse_host_port(ngx_inet_upstream_t *u);
ngx_int_t ngx_parse_url(ngx_conf_t *cf, ngx_url_t *u);


#endif /* _NGX_INET_H_INCLUDED_ */