void resolv_stats_clear_counters(int clrall, struct list *stat_modules);
int resolv_allocate_counters(struct list *stat_modules);
int dns_dgram_init(struct dns_nameserver *ns, struct sockaddr_storage *sk);
+int resolvers_create_default();
#endif // _HAPROXY_RESOLVER_H
memprintf(&do_resolve, "do-resolve(txn.hc_ip,%s%s%s)", resolvers_id, resolvers_prefer ? "," : "", resolvers_prefer ? resolvers_prefer : "");
http_rules[1][0] = do_resolve;
+ /* Try to create the default resolvers section */
+ resolvers_create_default();
+
/* if the resolver does not exist and no hard_error was set, simply ignore resolving */
if (!find_resolvers_by_id(resolvers_id) && !hard_error_resolvers) {
free(do_resolve);
free(warnmsg);
return err_code;
}
+
+/* try to create a "default" resolvers section which uses "/etc/resolv.conf"
+ *
+ * This function is opportunistic and does not try to display errors or warnings.
+ */
+int resolvers_create_default()
+{
+ int err_code = 0;
+
+ if (find_resolvers_by_id("default"))
+ return 0;
+
+ err_code |= resolvers_new(&curr_resolvers, "default", "<internal>", 0);
+ if (!(err_code & ERR_CODE))
+ err_code |= parse_resolve_conf(NULL, NULL);
+
+ return 0;
+}
+
int cfg_post_parse_resolvers()
{
int err_code = 0;
REGISTER_CONFIG_SECTION("resolvers", cfg_parse_resolvers, cfg_post_parse_resolvers);
REGISTER_POST_DEINIT(resolvers_deinit);
REGISTER_CONFIG_POSTPARSER("dns runtime resolver", resolvers_finalize_config);
+REGISTER_PRE_CHECK(resolvers_create_default);