MAJOR: server: add DNS-based server name resolution

Relies on the DNS protocol freshly implemented in HAProxy.
It performs a server IP addr resolution based on a server hostname.
diff --git a/include/proto/checks.h b/include/proto/checks.h
index 67d659f..9ab3e50 100644
--- a/include/proto/checks.h
+++ b/include/proto/checks.h
@@ -29,6 +29,7 @@
 const char *get_check_status_info(short check_status);
 int start_checks();
 void __health_adjust(struct server *s, short status);
+int trigger_resolution(struct server *s);
 
 extern struct data_cb check_conn_cb;
 
diff --git a/include/proto/server.h b/include/proto/server.h
index 64f2327..0a0ccc3 100644
--- a/include/proto/server.h
+++ b/include/proto/server.h
@@ -26,6 +26,7 @@
 
 #include <common/config.h>
 #include <common/time.h>
+#include <types/dns.h>
 #include <types/proxy.h>
 #include <types/queue.h>
 #include <types/server.h>
@@ -40,6 +41,11 @@
 int parse_server(const char *file, int linenum, char **args, struct proxy *curproxy, struct proxy *defproxy);
 int update_server_addr(struct server *s, void *ip, int ip_sin_family, char *updater);
 
+/* functions related to server name resolution */
+int snr_update_srv_status(struct server *s);
+int snr_resolution_cb(struct dns_resolution *resolution, struct dns_nameserver *nameserver, unsigned char *response, int response_len);
+int snr_resolution_error_cb(struct dns_resolution *resolution, int error_code);
+
 /* increase the number of cumulated connections on the designated server */
 static void inline srv_inc_sess_ctr(struct server *s)
 {