pbxlibdir="-L${UNBOUND_DIR}"
fi
fi
- pbxfuncname="ub_ctx_add_ta_autr"
+ pbxfuncname="ub_ctx_delete"
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
AST_UNBOUND_FOUND=yes
else
+ if test "x${PBX_UNBOUND_CONST_PARAMS}" != "x1" -a "${USE_UNBOUND_CONST_PARAMS}" != "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNBOUND_VERSION_MAJOR declared in unbound.h" >&5
+$as_echo_n "checking for UNBOUND_VERSION_MAJOR declared in unbound.h... " >&6; }
+ saved_cppflags="${CPPFLAGS}"
+ if test "x${UNBOUND_CONST_PARAMS_DIR}" != "x"; then
+ UNBOUND_CONST_PARAMS_INCLUDE="-I${UNBOUND_CONST_PARAMS_DIR}/include"
+ fi
+ CPPFLAGS="${CPPFLAGS} ${UNBOUND_CONST_PARAMS_INCLUDE}"
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+ #include <unbound.h>
+int
+main ()
+{
+#if !defined(UNBOUND_VERSION_MAJOR)
+ (void) UNBOUND_VERSION_MAJOR;
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ PBX_UNBOUND_CONST_PARAMS=1
+
+$as_echo "#define HAVE_UNBOUND_CONST_PARAMS 1" >>confdefs.h
+
+
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ CPPFLAGS="${saved_cppflags}"
+ fi
+
+
if test "x${PBX_UNIXODBC}" != "x1" -a "${USE_UNIXODBC}" != "no"; then
pbxlibdir=""
</configInfo>
***/
+/*!
+ * Unbound versions <= 1.4.20 declare string function parameters as 'char *'
+ * but versions >= 1.4.21 declare them as 'const char *'. Since CentOS6 is still
+ * at 1.4.20, we need to cast away the 'const' if we detect the earlier version.
+ */
+#ifdef HAVE_UNBOUND_CONST_PARAMS
+#define UNBOUND_CHAR const char
+#else
+#define UNBOUND_CHAR char
+#endif
+
/*! \brief Structure for an unbound resolver */
struct unbound_resolver {
/*! \brief Resolver context itself */
data->resolver = ao2_bump(cfg->global->state->resolver);
ast_dns_resolver_set_data(query, data);
- res = ub_resolve_async(data->resolver->context, ast_dns_query_get_name(query),
+ res = ub_resolve_async(data->resolver->context, (UNBOUND_CHAR *)ast_dns_query_get_name(query),
ast_dns_query_get_rr_type(query), ast_dns_query_get_rr_class(query),
ao2_bump(query), unbound_resolver_callback, &data->id);
if (!strcmp(cfg->global->hosts, "system")) {
res = ub_ctx_hosts(cfg->global->state->resolver->context, NULL);
} else if (!ast_strlen_zero(cfg->global->hosts)) {
- res = ub_ctx_hosts(cfg->global->state->resolver->context, cfg->global->hosts);
+ res = ub_ctx_hosts(cfg->global->state->resolver->context, (UNBOUND_CHAR *)cfg->global->hosts);
}
if (res) {
it_nameservers = ao2_iterator_init(cfg->global->nameservers, 0);
while ((nameserver = ao2_iterator_next(&it_nameservers))) {
- res = ub_ctx_set_fwd(cfg->global->state->resolver->context, nameserver);
+ res = ub_ctx_set_fwd(cfg->global->state->resolver->context, (UNBOUND_CHAR *)nameserver);
if (res) {
ast_log(LOG_ERROR, "Failed to add nameserver '%s' to unbound resolver: %s\n",
if (!strcmp(cfg->global->resolv, "system")) {
res = ub_ctx_resolvconf(cfg->global->state->resolver->context, NULL);
} else if (!ast_strlen_zero(cfg->global->resolv)) {
- res = ub_ctx_resolvconf(cfg->global->state->resolver->context, cfg->global->resolv);
+ res = ub_ctx_resolvconf(cfg->global->state->resolver->context, (UNBOUND_CHAR *)cfg->global->resolv);
}
if (res) {
}
if (!ast_strlen_zero(cfg->global->ta_file)) {
- res = ub_ctx_add_ta_file(cfg->global->state->resolver->context, cfg->global->ta_file);
+ res = ub_ctx_add_ta_file(cfg->global->state->resolver->context, (UNBOUND_CHAR *)cfg->global->ta_file);
if (res) {
ast_log(LOG_ERROR, "Failed to set trusted anchor file to '%s' in unbound resolver: %s\n",
static const size_t V4_SIZE = sizeof(struct in_addr);
static const size_t V6_SIZE = sizeof(struct in6_addr);
- static const char *DOMAIN1 = "goose.feathers";
- static const char *DOMAIN2 = "duck.feathers";
+ static UNBOUND_CHAR *DOMAIN1 = "goose.feathers";
+ static UNBOUND_CHAR *DOMAIN2 = "duck.feathers";
- static const char *ADDR1 = "127.0.0.2";
- static const char *ADDR2 = "127.0.0.3";
- static const char *ADDR3 = "::1";
- static const char *ADDR4 = "127.0.0.4";
+ static UNBOUND_CHAR *ADDR1 = "127.0.0.2";
+ static UNBOUND_CHAR *ADDR2 = "127.0.0.3";
+ static UNBOUND_CHAR *ADDR3 = "::1";
+ static UNBOUND_CHAR *ADDR4 = "127.0.0.4";
char addr1_buf[V4_SIZE];
char addr2_buf[V4_SIZE];
ub_ctx_zone_add(resolver->context, DOMAIN2, "static");
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_add(resolver->context, records[i].as_string);
+ ub_ctx_data_add(resolver->context, (UNBOUND_CHAR *)records[i].as_string);
}
for (i = 0; i < ARRAY_LEN(runs); ++i) {
cleanup:
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_remove(resolver->context, records[i].as_string);
+ ub_ctx_data_remove(resolver->context, (UNBOUND_CHAR *)records[i].as_string);
}
ub_ctx_zone_remove(resolver->context, DOMAIN1);
ub_ctx_zone_remove(resolver->context, DOMAIN2);
static const size_t V4_SIZE = sizeof(struct in_addr);
- static const char *DOMAIN1 = "goose.feathers";
- static const char *DOMAIN2 = "duck.feathers";
+ static UNBOUND_CHAR *DOMAIN1 = "goose.feathers";
+ static UNBOUND_CHAR *DOMAIN2 = "duck.feathers";
- static const char *ADDR1 = "127.0.0.2";
+ static UNBOUND_CHAR *ADDR1 = "127.0.0.2";
char addr1_buf[V4_SIZE];
ub_ctx_zone_add(resolver->context, DOMAIN2, "static");
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_add(resolver->context, records[i].as_string);
+ ub_ctx_data_add(resolver->context, (UNBOUND_CHAR *)records[i].as_string);
}
for (i = 0; i < ARRAY_LEN(runs); ++i) {
const struct ast_dns_record *record;
- static const char * DOMAIN1 = "goose.feathers";
+ static char * DOMAIN1 = "goose.feathers";
int i;
enum ast_test_result_state res = AST_TEST_PASS;
ub_ctx_zone_add(resolver->context, DOMAIN1, "static");
for (i = 0; i < ARRAY_LEN(records); ++i) {
- ub_ctx_data_add(resolver->context, records[i].zone_entry);
+ ub_ctx_data_add(resolver->context, (UNBOUND_CHAR *)records[i].zone_entry);
}
if (ast_dns_resolve(DOMAIN1, ns_t_naptr, ns_c_in, &result)) {
RAII_VAR(struct unbound_config *, cfg, NULL, ao2_cleanup);
RAII_VAR(struct ast_dns_result *, result, NULL, ast_dns_result_free);
const struct ast_dns_record *record;
- static const char *DOMAIN1 = "taco.bananas";
- static const char *DOMAIN1_SRV = "taco.bananas 12345 IN SRV 10 20 5060 sip.taco.bananas";
+ static UNBOUND_CHAR *DOMAIN1 = "taco.bananas";
+ static UNBOUND_CHAR *DOMAIN1_SRV = "taco.bananas 12345 IN SRV 10 20 5060 sip.taco.bananas";
enum ast_test_result_state res = AST_TEST_PASS;
switch (cmd) {