diff --git a/Makefile b/Makefile index 6e4cad605..9d70f3645 100644 --- a/Makefile +++ b/Makefile @@ -792,7 +792,7 @@ endif OBJS = src/mux_h2.o src/stream.o src/mux_fcgi.o src/cfgparse-listen.o \ src/http_ana.o src/stats.o src/mux_h1.o src/flt_spoe.o src/server.o \ src/cfgparse.o src/checks.o src/backend.o src/log.o src/peers.o \ - src/cli.o src/haproxy.o src/stick_table.o src/standard.o src/sample.o \ + src/cli.o src/haproxy.o src/stick_table.o src/tools.o src/sample.o \ src/proxy.o src/stream_interface.o src/pattern.o src/dns.o \ src/proto_tcp.o src/listener.o src/cfgparse-global.o src/h1.o \ src/http_rules.o src/http_fetch.o src/cache.o src/session.o \ diff --git a/contrib/mod_defender/defender.c b/contrib/mod_defender/defender.c index fdf80d886..8bc3e9735 100644 --- a/contrib/mod_defender/defender.c +++ b/contrib/mod_defender/defender.c @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include diff --git a/include/haproxy/tools-t.h b/include/haproxy/tools-t.h new file mode 100644 index 000000000..bb99a2373 --- /dev/null +++ b/include/haproxy/tools-t.h @@ -0,0 +1,113 @@ +/* + * include/haproxy/tools-t.h + * This files contains some general purpose macros and structures. + * + * Copyright (C) 2000-2020 Willy Tarreau - w@1wt.eu + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, version 2.1 + * exclusively. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef _HAPROXY_TOOLS_T_H +#define _HAPROXY_TOOLS_T_H + +/* size used for max length of decimal representation of long long int. */ +#define NB_LLMAX_STR (sizeof("-9223372036854775807")-1) + +/* number of itoa_str entries */ +#define NB_ITOA_STR 16 + +/* maximum quoted string length (truncated above) */ +#define QSTR_SIZE 200 +#define NB_QSTR 10 + +/* returns 1 only if only zero or one bit is set in X, which means that X is a + * power of 2, and 0 otherwise */ +#define POWEROF2(x) (((x) & ((x)-1)) == 0) + +/* return an integer of type with only the highest bit set. may be + * both a variable or a type. + */ +#define MID_RANGE(ret) ((typeof(ret))1 << (8*sizeof(ret) - 1)) + +/* return the largest possible integer of type , with all bits set */ +#define MAX_RANGE(ret) (~(typeof(ret))0) + +/* DEFNULL() returns either the argument as-is, or NULL if absent. This is for + * use in macros arguments. + */ +#define DEFNULL(...) _FIRST_ARG(NULL, ##__VA_ARGS__, NULL) +#define _FIRST_ARG(a, b, ...) b + +/* special return values for the time parser (parse_time_err()) */ +#define PARSE_TIME_UNDER ((char *)1) +#define PARSE_TIME_OVER ((char *)2) + +/* unit flags to pass to parse_time_err() */ +#define TIME_UNIT_US 0x0000 +#define TIME_UNIT_MS 0x0001 +#define TIME_UNIT_S 0x0002 +#define TIME_UNIT_MIN 0x0003 +#define TIME_UNIT_HOUR 0x0004 +#define TIME_UNIT_DAY 0x0005 +#define TIME_UNIT_MASK 0x0007 + +#define SEC 1 +#define MINUTE (60 * SEC) +#define HOUR (60 * MINUTE) +#define DAY (24 * HOUR) + +/* UTF-8 decoder status */ +#define UTF8_CODE_OK 0x00 +#define UTF8_CODE_OVERLONG 0x10 +#define UTF8_CODE_INVRANGE 0x20 +#define UTF8_CODE_BADSEQ 0x40 + +/* HAP_STRING() makes a string from a literal while HAP_XSTRING() first + * evaluates the argument and is suited to pass macros. + * + * They allow macros like PCRE_MAJOR to be defined without quotes, which + * is convenient for applications that want to test its value. + */ +#define HAP_STRING(...) #__VA_ARGS__ +#define HAP_XSTRING(...) HAP_STRING(__VA_ARGS__) + +/* operators to compare values. They're ordered that way so that the lowest bit + * serves as a negation for the test and contains all tests that are not equal. + */ +enum { + STD_OP_LE = 0, STD_OP_GT = 1, + STD_OP_EQ = 2, STD_OP_NE = 3, + STD_OP_GE = 4, STD_OP_LT = 5, +}; + +enum http_scheme { + SCH_HTTP, + SCH_HTTPS, +}; + +/* output format used by url2sa() */ +struct split_url { + enum http_scheme scheme; + const char *host; + int host_len; +}; + +/* generic structure associating a name and a value, for use in arrays */ +struct name_desc { + const char *name; + const char *desc; +}; + +#endif /* _HAPROXY_TOOLS_T_H */ diff --git a/include/common/standard.h b/include/haproxy/tools.h similarity index 93% rename from include/common/standard.h rename to include/haproxy/tools.h index ab8c07578..627675a95 100644 --- a/include/common/standard.h +++ b/include/haproxy/tools.h @@ -1,8 +1,8 @@ /* - * include/common/standard.h + * include/haproxy/tools.h * This files contains some general purpose functions and macros. * - * Copyright (C) 2000-2010 Willy Tarreau - w@1wt.eu + * Copyright (C) 2000-2020 Willy Tarreau - w@1wt.eu * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,8 +19,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef _COMMON_STANDARD_H -#define _COMMON_STANDARD_H +#ifndef _HAPROXY_TOOLS_H +#define _HAPROXY_TOOLS_H #ifdef USE_BACKTRACE #define _GNU_SOURCE @@ -37,23 +37,14 @@ #include #include #include +#include +#include #include #include #include #include -#include -#include #include - -/* size used for max length of decimal representation of long long int. */ -#define NB_LLMAX_STR (sizeof("-9223372036854775807")-1) - -/* number of itoa_str entries */ -#define NB_ITOA_STR 16 - -/* maximum quoted string length (truncated above) */ -#define QSTR_SIZE 200 -#define NB_QSTR 10 +#include /****** string-specific macros and functions ******/ /* if a > max, then bound to . The macro returns the new */ @@ -62,52 +53,8 @@ /* if a < min, then bound to . The macro returns the new */ #define LBOUND(a, min) ({ typeof(a) b = (min); if ((a) < b) (a) = b; (a); }) -/* returns 1 only if only zero or one bit is set in X, which means that X is a - * power of 2, and 0 otherwise */ -#define POWEROF2(x) (((x) & ((x)-1)) == 0) - #define SWAP(a, b) do { typeof(a) t; t = a; a = b; b = t; } while(0) -/* return an integer of type with only the highest bit set. may be - * both a variable or a type. - */ -#define MID_RANGE(ret) ((typeof(ret))1 << (8*sizeof(ret) - 1)) - -/* return the largest possible integer of type , with all bits set */ -#define MAX_RANGE(ret) (~(typeof(ret))0) - -/* DEFNULL() returns either the argument as-is, or NULL if absent. This is for - * use in macros arguments. - */ -#define DEFNULL(...) _FIRST_ARG(NULL, ##__VA_ARGS__, NULL) -#define _FIRST_ARG(a, b, ...) b - -/* operators to compare values. They're ordered that way so that the lowest bit - * serves as a negation for the test and contains all tests that are not equal. - */ -enum { - STD_OP_LE = 0, STD_OP_GT = 1, - STD_OP_EQ = 2, STD_OP_NE = 3, - STD_OP_GE = 4, STD_OP_LT = 5, -}; - -enum http_scheme { - SCH_HTTP, - SCH_HTTPS, -}; - -struct split_url { - enum http_scheme scheme; - const char *host; - int host_len; -}; - -/* generic structure associating a name and a value, for use in arrays */ -struct name_desc { - const char *name; - const char *desc; -}; - extern THREAD_LOCAL int itoa_idx; /* index of next itoa_str to use */ /* @@ -588,24 +535,6 @@ extern time_t my_timegm(const struct tm *tm); extern const char *parse_time_err(const char *text, unsigned *ret, unsigned unit_flags); extern const char *parse_size_err(const char *text, unsigned *ret); -/* special return values for the time parser */ -#define PARSE_TIME_UNDER ((char *)1) -#define PARSE_TIME_OVER ((char *)2) - -/* unit flags to pass to parse_time_err */ -#define TIME_UNIT_US 0x0000 -#define TIME_UNIT_MS 0x0001 -#define TIME_UNIT_S 0x0002 -#define TIME_UNIT_MIN 0x0003 -#define TIME_UNIT_HOUR 0x0004 -#define TIME_UNIT_DAY 0x0005 -#define TIME_UNIT_MASK 0x0007 - -#define SEC 1 -#define MINUTE (60 * SEC) -#define HOUR (60 * MINUTE) -#define DAY (24 * HOUR) - /* * Parse binary string written in hexadecimal (source) and store the decoded * result into binstr and set binstrlen to the length of binstr. Memory for @@ -1003,12 +932,6 @@ static inline unsigned long caddr_clr_flags(unsigned long caddr, unsigned int da return caddr & ~(unsigned long)(data & 3); } -/* UTF-8 decoder status */ -#define UTF8_CODE_OK 0x00 -#define UTF8_CODE_OVERLONG 0x10 -#define UTF8_CODE_INVRANGE 0x20 -#define UTF8_CODE_BADSEQ 0x40 - unsigned char utf8_next(const char *s, int len, unsigned int *c); static inline unsigned char utf8_return_code(unsigned int code) @@ -1112,13 +1035,4 @@ static inline int32_t ha_random() return ha_random32() >> 1; } -/* HAP_STRING() makes a string from a literal while HAP_XSTRING() first - * evaluates the argument and is suited to pass macros. - * - * They allow macros like PCRE_MAJOR to be defined without quotes, which - * is convenient for applications that want to test its value. - */ -#define HAP_STRING(...) #__VA_ARGS__ -#define HAP_XSTRING(...) HAP_STRING(__VA_ARGS__) - -#endif /* _COMMON_STANDARD_H */ +#endif /* _HAPROXY_TOOLS_H */ diff --git a/include/proto/stats.h b/include/proto/stats.h index 01c08ba13..f98a5ecec 100644 --- a/include/proto/stats.h +++ b/include/proto/stats.h @@ -23,7 +23,7 @@ #ifndef _PROTO_STATS_H #define _PROTO_STATS_H -#include +#include #include #include #include diff --git a/include/proto/stick_table.h b/include/proto/stick_table.h index 1a5a13d0f..7f35cfa1c 100644 --- a/include/proto/stick_table.h +++ b/include/proto/stick_table.h @@ -24,7 +24,7 @@ #define _PROTO_STICK_TABLE_H #include -#include +#include #include #include #include diff --git a/include/proto/trace.h b/include/proto/trace.h index f16763d7f..3a7020512 100644 --- a/include/proto/trace.h +++ b/include/proto/trace.h @@ -23,7 +23,7 @@ #define _PROTO_TRACE_H #include -#include +#include #include #include #include diff --git a/src/acl.c b/src/acl.c index 14a0e0ba6..16e775314 100644 --- a/src/acl.c +++ b/src/acl.c @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include diff --git a/src/action.c b/src/action.c index 1125eca1e..17716b5ea 100644 --- a/src/action.c +++ b/src/action.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/activity.c b/src/activity.c index c0da3e84b..59ae4fad4 100644 --- a/src/activity.c +++ b/src/activity.c @@ -12,7 +12,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/arg.c b/src/arg.c index 5adffe3a0..9c4fa44f8 100644 --- a/src/arg.c +++ b/src/arg.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/cfgparse.c b/src/cfgparse.c index b3a66b829..2f9ed1b84 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/checks.c b/src/checks.c index 4a1b87fda..cd1649b17 100644 --- a/src/checks.c +++ b/src/checks.c @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/chunk.c b/src/chunk.c index 917a4f93e..f9e6fe5d2 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include diff --git a/src/cli.c b/src/cli.c index 932af3038..df0e0f28d 100644 --- a/src/cli.c +++ b/src/cli.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/debug.c b/src/debug.c index 5b25ab757..9aef05ba5 100644 --- a/src/debug.c +++ b/src/debug.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/ev_epoll.c b/src/ev_epoll.c index 65ff1b50d..40f5e9cbb 100644 --- a/src/ev_epoll.c +++ b/src/ev_epoll.c @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include diff --git a/src/fcgi-app.c b/src/fcgi-app.c index eb78807b9..d846c25db 100644 --- a/src/fcgi-app.c +++ b/src/fcgi-app.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include diff --git a/src/filters.c b/src/filters.c index 5cfac4039..31f9f10b6 100644 --- a/src/filters.c +++ b/src/filters.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c index ac4a3bf2e..462ee2595 100644 --- a/src/flt_http_comp.c +++ b/src/flt_http_comp.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/flt_trace.c b/src/flt_trace.c index 94aef8cb3..64dc564df 100644 --- a/src/flt_trace.c +++ b/src/flt_trace.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include diff --git a/src/freq_ctr.c b/src/freq_ctr.c index 8249a3aa5..17d27720c 100644 --- a/src/freq_ctr.c +++ b/src/freq_ctr.c @@ -11,7 +11,7 @@ */ #include -#include +#include #include #include diff --git a/src/frontend.c b/src/frontend.c index 4a66c49c2..22e2acc49 100644 --- a/src/frontend.c +++ b/src/frontend.c @@ -24,7 +24,7 @@ #include #include -#include +#include #include #include diff --git a/src/haproxy.c b/src/haproxy.c index 4bf229cd9..57fedf86e 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -92,7 +92,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/hlua.c b/src/hlua.c index d73abec4f..3de0bea1a 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/hpack-dec.c b/src/hpack-dec.c index e318ac363..c9808d362 100644 --- a/src/hpack-dec.c +++ b/src/hpack-dec.c @@ -30,7 +30,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/http.c b/src/http.c index ae315a828..f8d78763e 100644 --- a/src/http.c +++ b/src/http.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include /* It is about twice as fast on recent architectures to lookup a byte in a * table than to perform a boolean AND or OR between two tests. Refer to diff --git a/src/http_acl.c b/src/http_acl.c index 780962af2..8ff4ab3e4 100644 --- a/src/http_acl.c +++ b/src/http_acl.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/http_act.c b/src/http_act.c index a5ce9d780..165cae27d 100644 --- a/src/http_act.c +++ b/src/http_act.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/http_conv.c b/src/http_conv.c index 72cb4af68..e321dbb05 100644 --- a/src/http_conv.c +++ b/src/http_conv.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/http_fetch.c b/src/http_fetch.c index 221ac9417..5d03dc7c5 100644 --- a/src/http_fetch.c +++ b/src/http_fetch.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/http_rules.c b/src/http_rules.c index 94aff63c7..77ac2cbe3 100644 --- a/src/http_rules.c +++ b/src/http_rules.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/lb_chash.c b/src/lb_chash.c index 0899ee76e..0fc18d92d 100644 --- a/src/lb_chash.c +++ b/src/lb_chash.c @@ -17,7 +17,7 @@ */ #include -#include +#include #include #include diff --git a/src/listener.c b/src/listener.c index 2f9c800b5..ac7b3287e 100644 --- a/src/listener.c +++ b/src/listener.c @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/log.c b/src/log.c index 5778994b7..353b4283c 100644 --- a/src/log.c +++ b/src/log.c @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include diff --git a/src/map.c b/src/map.c index 771fcc813..8dc1b5196 100644 --- a/src/map.c +++ b/src/map.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include diff --git a/src/pattern.c b/src/pattern.c index f2692f0df..d4988b172 100644 --- a/src/pattern.c +++ b/src/pattern.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/peers.c b/src/peers.c index 882f34ab9..ef0946824 100644 --- a/src/peers.c +++ b/src/peers.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/pool.c b/src/pool.c index 2ad2be629..4ff97b660 100644 --- a/src/pool.c +++ b/src/pool.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include diff --git a/src/proto_sockpair.c b/src/proto_sockpair.c index dfba15555..e133a84a7 100644 --- a/src/proto_sockpair.c +++ b/src/proto_sockpair.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/proto_tcp.c b/src/proto_tcp.c index 42c034e03..b9aa82400 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/proto_uxst.c b/src/proto_uxst.c index 1dce1a93d..429ca1cc3 100644 --- a/src/proto_uxst.c +++ b/src/proto_uxst.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/protocol.c b/src/protocol.c index defb19721..f739444a0 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include diff --git a/src/raw_sock.c b/src/raw_sock.c index 744544b23..6503b3b84 100644 --- a/src/raw_sock.c +++ b/src/raw_sock.c @@ -24,7 +24,7 @@ #include #include -#include +#include #include #include diff --git a/src/regex.c b/src/regex.c index 764704da1..bebbaa798 100644 --- a/src/regex.c +++ b/src/regex.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include /* regex trash buffer used by various regex tests */ diff --git a/src/sample.c b/src/sample.c index e1e4d9cca..149ede864 100644 --- a/src/sample.c +++ b/src/sample.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/ssl_ckch.c b/src/ssl_ckch.c index 9011df9bc..61dd35384 100644 --- a/src/ssl_ckch.c +++ b/src/ssl_ckch.c @@ -23,7 +23,7 @@ #include #include -#include +#include #include diff --git a/src/ssl_crtlist.c b/src/ssl_crtlist.c index 1d77362f4..e7c394cc5 100644 --- a/src/ssl_crtlist.c +++ b/src/ssl_crtlist.c @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include diff --git a/src/ssl_sample.c b/src/ssl_sample.c index de3abeeb4..5f8cbd798 100644 --- a/src/ssl_sample.c +++ b/src/ssl_sample.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/ssl_sock.c b/src/ssl_sock.c index 476469f3d..61560125e 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -48,7 +48,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/stats.c b/src/stats.c index d7d581d4e..b43665c01 100644 --- a/src/stats.c +++ b/src/stats.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/stick_table.c b/src/stick_table.c index fcbd58781..8ceafa3c6 100644 --- a/src/stick_table.c +++ b/src/stick_table.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/stream_interface.c b/src/stream_interface.c index dbd9cdfe3..921b19111 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include diff --git a/src/task.c b/src/task.c index 5663abac7..eacc3fdee 100644 --- a/src/task.c +++ b/src/task.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/tcp_rules.c b/src/tcp_rules.c index c08d716a7..012bfd310 100644 --- a/src/tcp_rules.c +++ b/src/tcp_rules.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/thread.c b/src/thread.c index 47c5ab9dd..2a7ec9ae4 100644 --- a/src/thread.c +++ b/src/thread.c @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include diff --git a/src/time.c b/src/time.c index a6aaf4033..f81ffff57 100644 --- a/src/time.c +++ b/src/time.c @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include diff --git a/src/standard.c b/src/tools.c similarity index 99% rename from src/standard.c rename to src/tools.c index 8e9722e34..fbec3f50c 100644 --- a/src/standard.c +++ b/src/tools.c @@ -36,10 +36,13 @@ #include #include +#include +#include + #include #include #include -#include +#include #include #include #include @@ -50,9 +53,6 @@ #include #include -#include -#include - /* This macro returns false if the test __x is false. Many * of the following parsing function must be abort the processing * if it returns 0, so this macro is useful for writing light code. diff --git a/src/wdt.c b/src/wdt.c index 86de28640..1248bebbb 100644 --- a/src/wdt.c +++ b/src/wdt.c @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include