blob: aefee3226093466b63aff81675903b8372530954 [file] [log] [blame]
Willy Tarreaubaaee002006-06-26 02:48:02 +02001/*
2 include/types/global.h
3 Global variables.
4
Willy Tarreau92fb9832007-10-16 17:34:28 +02005 Copyright (C) 2000-2007 Willy Tarreau - w@1wt.eu
Willy Tarreaubaaee002006-06-26 02:48:02 +02006
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation, version 2.1
10 exclusively.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20*/
21
22#ifndef _TYPES_GLOBAL_H
23#define _TYPES_GLOBAL_H
24
25#include <netinet/in.h>
26
Willy Tarreaue3ba5f02006-06-29 18:54:54 +020027#include <common/config.h>
Robert Tsai81ae1952007-12-05 10:47:29 +010028#include <types/log.h>
Willy Tarreau92fb9832007-10-16 17:34:28 +020029#include <types/protocols.h>
Willy Tarreau89a63132009-08-16 17:41:45 +020030#include <types/proxy.h>
Willy Tarreaubaaee002006-06-26 02:48:02 +020031#include <types/task.h>
32
33/* modes of operation (global.mode) */
Willy Tarreaufbee7132007-10-18 13:53:22 +020034#define MODE_DEBUG 0x01
35#define MODE_DAEMON 0x02
36#define MODE_QUIET 0x04
37#define MODE_CHECK 0x08
38#define MODE_VERBOSE 0x10
39#define MODE_STARTING 0x20
40#define MODE_FOREGROUND 0x40
Willy Tarreaubaaee002006-06-26 02:48:02 +020041
Willy Tarreau77074d52006-11-12 23:57:19 +010042/* list of last checks to perform, depending on config options */
43#define LSTCHK_CAP_BIND 0x00000001 /* check that we can bind to any port */
44#define LSTCHK_CTTPROXY 0x00000002 /* check that tproxy is enabled */
45#define LSTCHK_NETADM 0x00000004 /* check that we have CAP_NET_ADMIN */
Willy Tarreaubaaee002006-06-26 02:48:02 +020046
Willy Tarreau43b78992009-01-25 15:42:27 +010047/* Global tuning options */
48/* available polling mechanisms */
49#define GTUNE_USE_SELECT (1<<0)
50#define GTUNE_USE_POLL (1<<1)
51#define GTUNE_USE_EPOLL (1<<2)
52#define GTUNE_USE_KQUEUE (1<<3)
53#define GTUNE_USE_SEPOLL (1<<4)
Willy Tarreau3ab68cf2009-01-25 16:03:28 +010054/* platform-specific options */
55#define GTUNE_USE_SPLICE (1<<5)
Willy Tarreau43b78992009-01-25 15:42:27 +010056
57
Willy Tarreaubaaee002006-06-26 02:48:02 +020058/* FIXME : this will have to be redefined correctly */
59struct global {
Willy Tarreau77074d52006-11-12 23:57:19 +010060 int uid;
61 int gid;
62 int nbproc;
63 int maxconn;
Willy Tarreau3ec79b92009-01-18 20:39:42 +010064 int maxpipes; /* max # of pipes */
Willy Tarreau77074d52006-11-12 23:57:19 +010065 int maxsock; /* max # of sockets */
66 int rlimit_nofile; /* default ulimit-n value : 0=unset */
67 int rlimit_memmax; /* default ulimit-d in megs value : 0=unset */
68 int mode;
69 int last_checks;
Krzysztof Oledzkib304dc72007-10-14 23:40:01 +020070 int spread_checks;
Willy Tarreau77074d52006-11-12 23:57:19 +010071 char *chroot;
72 char *pidfile;
73 int logfac1, logfac2;
74 int loglev1, loglev2;
Willy Tarreauf7edefa2009-05-10 17:20:05 +020075 int minlvl1, minlvl2;
Robert Tsai81ae1952007-12-05 10:47:29 +010076 struct logsrv logsrv1, logsrv2;
Willy Tarreau1db37712007-06-03 17:16:49 +020077 struct {
78 int maxpollevents; /* max number of poll events at once */
Willy Tarreaua0250ba2008-01-06 11:22:57 +010079 int maxaccept; /* max number of consecutive accept() */
Willy Tarreau43b78992009-01-25 15:42:27 +010080 int options; /* various tuning options */
Willy Tarreau6f4a82c2009-03-21 20:43:57 +010081 int recv_enough; /* how many input bytes at once are "enough" */
Willy Tarreau1db37712007-06-03 17:16:49 +020082 } tune;
Willy Tarreau92fb9832007-10-16 17:34:28 +020083 struct listener stats_sock; /* unix socket listener for statistics */
Willy Tarreau89a63132009-08-16 17:41:45 +020084 struct proxy *stats_fe; /* the frontend holding the stats settings */
Willy Tarreaubaaee002006-06-26 02:48:02 +020085};
86
87extern struct global global;
88extern char *progname; /* program name */
89extern int pid; /* current process id */
Willy Tarreaudcd47712007-11-04 23:35:08 +010090extern int relative_pid; /* process id starting at 1 */
Willy Tarreaubaaee002006-06-26 02:48:02 +020091extern int actconn; /* # of active sessions */
92extern int listeners;
93extern char trash[BUFSIZE];
94extern const int zero;
95extern const int one;
Alexandre Cassen87ea5482007-10-11 20:48:58 +020096extern const struct linger nolinger;
Willy Tarreaubaaee002006-06-26 02:48:02 +020097extern int stopping; /* non zero means stopping in progress */
Willy Tarreau3ad6a762009-08-16 10:08:02 +020098extern char hostname[MAX_HOSTNAME_LEN];
Willy Tarreaubaaee002006-06-26 02:48:02 +020099
100#endif /* _TYPES_GLOBAL_H */
101
102/*
103 * Local variables:
104 * c-indent-level: 8
105 * c-basic-offset: 8
106 * End:
107 */