haproxy/include/types
Christopher Faulet 67957bd59e MAJOR: dns: Refactor the DNS code
This is a huge patch with many changes, all about the DNS. Initially, the idea
was to update the DNS part to ease the threads support integration. But quickly,
I started to refactor some parts. And after several iterations, it was
impossible for me to commit the different parts atomically. So, instead of
adding tens of patches, often reworking the same parts, it was easier to merge
all my changes in a uniq patch. Here are all changes made on the DNS.

First, the DNS initialization has been refactored. The DNS configuration parsing
remains untouched, in cfgparse.c. But all checks have been moved in a post-check
callback. In the function dns_finalize_config, for each resolvers, the
nameservers configuration is tested and the task used to manage DNS resolutions
is created. The links between the backend's servers and the resolvers are also
created at this step. Here no connection are kept alive. So there is no needs
anymore to reopen them after HAProxy fork. Connections used to send DNS queries
will be opened on demand.

Then, the way DNS requesters are linked to a DNS resolution has been
reworked. The resolution used by a requester is now referenced into the
dns_requester structure and the resolution pointers in server and dns_srvrq
structures have been removed. wait and curr list of requesters, for a DNS
resolution, have been replaced by a uniq list. And Finally, the way a requester
is removed from a DNS resolution has been simplified. Now everything is done in
dns_unlink_resolution.

srv_set_fqdn function has been simplified. Now, there is only 1 way to set the
server's FQDN, independently it is done by the CLI or when a SRV record is
resolved.

The static DNS resolutions pool has been replaced by a dynamoc pool. The part
has been modified by Baptiste Assmann.

The way the DNS resolutions are triggered by the task or by a health-check has
been totally refactored. Now, all timeouts are respected. Especially
hold.valid. The default frequency to wake up a resolvers is now configurable
using "timeout resolve" parameter.

Now, as documented, as long as invalid repsonses are received, we really wait
all name servers responses before retrying.

As far as possible, resources allocated during DNS configuration parsing are
releases when HAProxy is shutdown.

Beside all these changes, the code has been cleaned to ease code review and the
doc has been updated.
2017-10-31 11:36:12 +01:00
..
acl.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
action.h MINOR: action: Add a function pointer in act_rule struct to check its validity 2017-10-31 11:36:12 +01:00
applet.h MINOR: cli: add socket commands and config to prepend informational messages with severity 2017-09-13 13:37:59 +02:00
arg.h MINOR: http/conf: store the use_backend configuration file and line for logs 2016-11-25 07:15:09 +01:00
auth.h MAJOR: auth: Change the internal authentication system. 2014-03-17 18:06:06 +01:00
backend.h MEDIUM: backend: add the crc32 hash algorithm for load balancing 2015-01-20 19:48:14 +01:00
capture.h MINOR: capture: extend the captures to support non-header keys 2014-06-13 16:32:48 +02:00
channel.h BUG/MEDIUM: filters: Fix channels synchronization in flt_end_analyze 2017-03-15 19:09:06 +01:00
checks.h MINOR: checks: Add a new keyword to specify a SNI when doing SSL checks. 2017-10-17 18:10:24 +02:00
cli.h MINOR: cli: add socket commands and config to prepend informational messages with severity 2017-09-13 13:37:59 +02:00
compression.h MAJOR: filters/http: Rewrite the HTTP compression as a filter 2016-02-09 14:53:15 +01:00
connection.h MINOR: update proxy-protocol-v2 #define 2017-10-27 19:32:36 +02:00
counters.h CLEANUP: counters: move from 3 types to 2 types 2016-11-25 15:03:12 +01:00
dns.h MAJOR: dns: Refactor the DNS code 2017-10-31 11:36:12 +01:00
fd.h MINOR: fd: add a new flag HAP_POLL_F_RDHUP to struct poller 2017-03-21 16:30:35 +01:00
filters.h MINOR: filters: Add check_timeouts callback to handle timers expiration on streams 2016-11-21 15:29:58 +01:00
freq_ctr.h [MINOR] freq_ctr: add new types and functions for periods different from 1s 2010-08-10 14:01:09 +02:00
global.h MAJOR: dns: Refactor the DNS code 2017-10-31 11:36:12 +01:00
h1.h MINOR: h1: store the status code in the H1 message 2017-10-31 08:43:29 +01:00
hdr_idx.h [BUG] files were missing for hdr_idx in previous commit 2006-12-04 02:20:02 +01:00
hlua.h MINOR: hlua: Add regex class 2017-10-27 10:30:44 +02:00
lb_chash.h MINOR: backend: add hash-balance-factor option for hash-type consistent 2016-10-25 20:21:32 +02:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_fwrr.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_map.h [CLEANUP] proxy: move last lb-specific bits to their respective files 2009-10-03 18:41:18 +02:00
listener.h MINOR: ssl: Don't abuse ssl_options. 2017-10-27 19:26:52 +02:00
log.h CLEANUP: logs: remove unused log format field definitions 2016-08-23 15:25:28 +02:00
mailers.h MINOR: mailers: make it possible to configure the connection timeout 2016-02-20 15:33:06 +01:00
map.h CLEANUP: map: it seems that the map were planed to be chained 2016-03-30 15:41:15 +02:00
obj_type.h MINOR: obj: Add a new type of object, OBJ_TYPE_SRVRQ. 2017-08-09 16:32:49 +02:00
pattern.h BUG/MAJOR: map: fix segfault during 'show map/acl' on cli. 2017-06-30 06:49:42 +02:00
peers.h BUG/MINOR: peers: peer synchronization issue (with several peers sections). 2017-07-13 09:39:29 +02:00
pipe.h [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
port_range.h [MEDIUM] add support for binding to source port ranges during connect 2009-06-10 12:23:32 +02:00
proto_http.h MINOR: http: Mark the 425 code as "Too Early". 2017-10-27 10:53:32 +02:00
proto_udp.h MEDIUM: protocol: add minimalist UDP protocol client 2015-06-13 22:07:35 +02:00
protocol.h MINOR: protocols: register the ->add function and stop calling them directly 2017-09-15 11:49:52 +02:00
proxy.h MAJOR: dns: Refactor the DNS code 2017-10-31 11:36:12 +01:00
queue.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
sample.h BUG/MEDIUM: samples: make smp_dup() always duplicate the sample 2016-08-09 14:03:23 +02:00
server.h MAJOR: dns: Refactor the DNS code 2017-10-31 11:36:12 +01:00
session.h MINOR: session: remove the list of streams from struct session 2017-10-08 22:32:05 +02:00
shctx.h MEDIUM: shctx: separate ssl and shctx 2017-10-31 03:49:40 +01:00
signal.h [MEDIUM] signals: add support for registering functions and tasks 2010-08-27 18:00:40 +02:00
spoe.h MEDIUM: spoe/rules: Process "send-spoe-group" action 2017-10-31 11:36:12 +01:00
ssl_sock.h MEDIUM: shctx: separate ssl and shctx 2017-10-31 03:49:40 +01:00
stats.h MEDIUM: stats: Add show json schema 2017-03-14 11:14:03 +01:00
stick_table.h MEDIUM: http: implement http-response track-sc* directive 2016-07-26 14:31:14 +02:00
stream_interface.h BUG/MEDIUM: stream: fix client-fin/server-fin handling 2017-03-21 15:04:43 +01:00
stream.h MINOR: session: remove the list of streams from struct session 2017-10-08 22:32:05 +02:00
task.h MINOR: tasks: Move Lua notification from Lua to tasks 2017-09-11 18:59:40 +02:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00
vars.h MEDIUM: vars: Add a per-process scope for variables 2016-11-09 22:57:00 +01:00