/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGX_STREAM_UPSTREAM_H_INCLUDED_ #define _NGX_STREAM_UPSTREAM_H_INCLUDED_ #include #include #include #include #define NGX_STREAM_UPSTREAM_CREATE 0x0001 #define NGX_STREAM_UPSTREAM_WEIGHT 0x0002 #define NGX_STREAM_UPSTREAM_MAX_FAILS 0x0004 #define NGX_STREAM_UPSTREAM_FAIL_TIMEOUT 0x0008 #define NGX_STREAM_UPSTREAM_DOWN 0x0010 #define NGX_STREAM_UPSTREAM_BACKUP 0x0020 typedef struct { ngx_array_t upstreams; /* ngx_stream_upstream_srv_conf_t */ } ngx_stream_upstream_main_conf_t; typedef struct ngx_stream_upstream_srv_conf_s ngx_stream_upstream_srv_conf_t; typedef ngx_int_t (*ngx_stream_upstream_init_pt)(ngx_conf_t *cf, ngx_stream_upstream_srv_conf_t *us); typedef ngx_int_t (*ngx_stream_upstream_init_peer_pt)(ngx_stream_session_t *s, ngx_stream_upstream_srv_conf_t *us); typedef struct { ngx_stream_upstream_init_pt init_upstream; ngx_stream_upstream_init_peer_pt init; void *data; } ngx_stream_upstream_peer_t; typedef struct { ngx_str_t name; ngx_addr_t *addrs; ngx_uint_t naddrs; ngx_uint_t weight; ngx_uint_t max_fails; time_t fail_timeout; unsigned down:1; unsigned backup:1; } ngx_stream_upstream_server_t; struct ngx_stream_upstream_srv_conf_s { ngx_stream_upstream_peer_t peer; void **srv_conf; ngx_array_t *servers; /* ngx_stream_upstream_server_t */ ngx_uint_t flags; ngx_str_t host; u_char *file_name; ngx_uint_t line; in_port_t port; ngx_uint_t no_port; /* unsigned no_port:1 */ #if (NGX_STREAM_UPSTREAM_ZONE) ngx_shm_zone_t *shm_zone; #endif }; typedef struct { ngx_peer_connection_t peer; ngx_buf_t downstream_buf; ngx_buf_t upstream_buf; off_t received; time_t start_sec; ngx_uint_t responses; #if (NGX_STREAM_SSL) ngx_str_t ssl_name; #endif unsigned connected:1; unsigned proxy_protocol:1; } ngx_stream_upstream_t; ngx_stream_upstream_srv_conf_t *ngx_stream_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags); #define ngx_stream_conf_upstream_srv_conf(uscf, module) \ uscf->srv_conf[module.ctx_index] extern ngx_module_t ngx_stream_upstream_module; #endif /* _NGX_STREAM_UPSTREAM_H_INCLUDED_ */