[asterisk-commits] file: branch group/dns r432887 - in /team/group/dns: include/asterisk/ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Mar 13 10:34:26 CDT 2015


Author: file
Date: Fri Mar 13 10:34:23 2015
New Revision: 432887

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432887
Log:
Incorporate review feedback.

1. Split higher level concepts out into their own files
2. Improve documentation detailing behavior
3. Fix overflow bug with high TTL
4. Fix bug where a record TTL of 0 could override non-zero

Added:
    team/group/dns/main/dns_naptr.c   (with props)
    team/group/dns/main/dns_recurring.c   (with props)
    team/group/dns/main/dns_srv.c   (with props)
    team/group/dns/main/dns_tlsa.c   (with props)
Modified:
    team/group/dns/include/asterisk/dns_core.h
    team/group/dns/include/asterisk/dns_internal.h
    team/group/dns/include/asterisk/dns_recurring.h
    team/group/dns/main/dns_core.c

Modified: team/group/dns/include/asterisk/dns_core.h
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/include/asterisk/dns_core.h?view=diff&rev=432887&r1=432886&r2=432887
==============================================================================
--- team/group/dns/include/asterisk/dns_core.h (original)
+++ team/group/dns/include/asterisk/dns_core.h Fri Mar 13 10:34:23 2015
@@ -126,6 +126,18 @@
  */
 const struct ast_dns_record *ast_dns_result_get_records(const struct ast_dns_result *result);
 
+
+/*!
+ * \brief Retrieve the lowest TTL from a result
+ *
+ * \param result The DNS result
+ *
+ * \return the lowest TTL
+ *
+ * \note If no records exist this function will return a TTL of 0
+ */
+int ast_dns_result_get_lowest_ttl(const struct ast_dns_result *result);
+
 /*!
  * \brief Free the DNS result information
  *

Modified: team/group/dns/include/asterisk/dns_internal.h
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/include/asterisk/dns_internal.h?view=diff&rev=432887&r1=432886&r2=432887
==============================================================================
--- team/group/dns/include/asterisk/dns_internal.h (original)
+++ team/group/dns/include/asterisk/dns_internal.h Fri Mar 13 10:34:23 2015
@@ -125,3 +125,12 @@
 	/*! \brief The name of what is being resolved */
 	char name[0];
 };
+
+struct ast_sched_context;
+
+/*!
+ * \brief Retrieve the DNS scheduler context
+ *
+ * \return scheduler context
+ */
+struct ast_sched_context *ast_dns_get_sched(void);

Modified: team/group/dns/include/asterisk/dns_recurring.h
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/include/asterisk/dns_recurring.h?view=diff&rev=432887&r1=432886&r2=432887
==============================================================================
--- team/group/dns/include/asterisk/dns_recurring.h (original)
+++ team/group/dns/include/asterisk/dns_recurring.h Fri Mar 13 10:34:23 2015
@@ -45,9 +45,15 @@
  *
  * \note The user data passed in to this function must be ao2 allocated
  *
- * \note This query will continue to happen according to the lowest TTL unless cancelled using ast_dns_resolve_cancel
+ * \note This query will continue to happen according to the lowest TTL unless cancelled using ast_dns_resolve_recurring_cancel
  *
  * \note It is NOT possible for the callback to be invoked concurrently for the query multiple times
+ *
+ * \note The query will occur when the TTL expires, not before. This means that there is a period of time where the previous
+ *       information can be considered stale.
+ *
+ * \note If the TTL is determined to be 0 (the record specifies 0, or no records exist) this will cease doing a recurring query.
+ *       It is the responsibility of the caller to resume querying at an interval they determine.
  */
 struct ast_dns_query_recurring *ast_dns_resolve_recurring(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data);
 
@@ -56,8 +62,8 @@
  *
  * \param query The DNS query returned from ast_dns_resolve_recurring
  *
- * \retval 0 success
- * \retval -1 failure
+ * \retval 0 success - any active query has been cancelled and the query will no longer occur
+ * \retval -1 failure - an active query was in progress and could not be cancelled
  *
  * \note If successfully cancelled the callback will not be invoked
  */

Modified: team/group/dns/main/dns_core.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_core.c?view=diff&rev=432887&r1=432886&r2=432887
==============================================================================
--- team/group/dns/main/dns_core.c (original)
+++ team/group/dns/main/dns_core.c Fri Mar 13 10:34:23 2015
@@ -37,7 +37,6 @@
 #include "asterisk/strings.h"
 #include "asterisk/sched.h"
 #include "asterisk/dns_core.h"
-#include "asterisk/dns_naptr.h"
 #include "asterisk/dns_srv.h"
 #include "asterisk/dns_tlsa.h"
 #include "asterisk/dns_recurring.h"
@@ -50,6 +49,11 @@
 
 static struct ast_sched_context *sched;
 
+struct ast_sched_context *ast_dns_get_sched(void)
+{
+	return sched;
+}
+
 const char *ast_dns_query_get_name(const struct ast_dns_query *query)
 {
 	return query->name;
@@ -98,6 +102,24 @@
 const struct ast_dns_record *ast_dns_result_get_records(const struct ast_dns_result *result)
 {
 	return AST_LIST_FIRST(&result->records);
+}
+
+int ast_dns_result_get_lowest_ttl(const struct ast_dns_result *result)
+{
+	int ttl = 0;
+	const struct ast_dns_record *record;
+
+	if (ast_dns_result_get_rcode(result) == ns_r_nxdomain) {
+		return 0;
+	}
+
+	for (record = ast_dns_result_get_records(result); record; record = ast_dns_record_get_next(record)) {
+		if (!ttl || (ast_dns_record_get_ttl(record) && (ast_dns_record_get_ttl(record) < ttl))) {
+			ttl = ast_dns_record_get_ttl(record);
+		}
+	}
+
+	return ttl;
 }
 
 void ast_dns_result_free(struct ast_dns_result *result)
@@ -297,76 +319,6 @@
 	return *result ? 0 : -1;
 }
 
-const char *ast_dns_naptr_get_flags(const struct ast_dns_record *record)
-{
-	return NULL;
-}
-
-const char *ast_dns_naptr_get_service(const struct ast_dns_record *record)
-{
-	return NULL;
-}
-
-const char *ast_dns_naptr_get_regexp(const struct ast_dns_record *record)
-{
-	return NULL;
-}
-
-const char *ast_dns_naptr_get_replacement(const struct ast_dns_record *record)
-{
-	return NULL;
-}
-
-unsigned short ast_dns_naptr_get_order(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-unsigned short ast_dns_naptr_get_preference(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-const char *ast_dns_srv_get_host(const struct ast_dns_record *record)
-{
-	return NULL;
-}
-
-unsigned short ast_dns_srv_get_priority(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-unsigned short ast_dns_srv_get_weight(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-unsigned short ast_dns_srv_get_port(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-unsigned int ast_dns_tlsa_get_usage(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-unsigned int ast_dns_tlsa_get_selector(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-unsigned int ast_dns_tlsa_get_matching_type(const struct ast_dns_record *record)
-{
-	return 0;
-}
-
-const char *ast_dns_tlsa_get_association_data(const struct ast_dns_record *record)
-{
-	return NULL;
-}
-
 int ast_dns_resolver_set_data(struct ast_dns_query *query, void *data)
 {
 	if (query->resolver_data) {
@@ -479,130 +431,6 @@
 void ast_dns_resolver_completed(struct ast_dns_query *query)
 {
 	query->callback(query);
-}
-
-/*! \brief Destructor for a DNS query */
-static void dns_query_recurring_destroy(void *data)
-{
-	struct ast_dns_query_recurring *recurring = data;
-
-	ao2_cleanup(recurring->user_data);
-}
-
-/*! \brief Determine the TTL to use when scheduling recurring resolution */
-static int dns_query_recurring_get_ttl(const struct ast_dns_query *query)
-{
-	int ttl = 0;
-	const struct ast_dns_result *result = ast_dns_query_get_result(query);
-	const struct ast_dns_record *record;
-
-	if (ast_dns_result_get_rcode(result) == ns_r_nxdomain) {
-		return 0;
-	}
-
-	for (record = ast_dns_result_get_records(result); record; record = ast_dns_record_get_next(record)) {
-		if (!ttl || (ast_dns_record_get_ttl(record) < ttl)) {
-			ttl = ast_dns_record_get_ttl(record);
-		}
-	}
-
-	return ttl;
-}
-
-static void dns_query_recurring_resolution_callback(const struct ast_dns_query *query);
-
-/*! \brief Scheduled recurring query callback */
-static int dns_query_recurring_scheduled_callback(const void *data)
-{
-	struct ast_dns_query_recurring *recurring = (struct ast_dns_query_recurring *)data;
-
-	ao2_lock(recurring);
-	recurring->timer = -1;
-	if (!recurring->cancelled) {
-		recurring->query = ast_dns_resolve_async(recurring->name, recurring->rr_type, recurring->rr_class, dns_query_recurring_resolution_callback,
-			recurring);
-	}
-	ao2_unlock(recurring);
-
-	ao2_ref(recurring, -1);
-
-	return 0;
-}
-
-/*! \brief Query resolution callback */
-static void dns_query_recurring_resolution_callback(const struct ast_dns_query *query)
-{
-	struct ast_dns_query_recurring *recurring = ast_dns_query_get_data(query);
-
-	/* Replace the user data so the actual callback sees what it provided */
-	((struct ast_dns_query*)query)->user_data = ao2_bump(recurring->user_data);
-	recurring->callback(query);
-
-	ao2_lock(recurring);
-	/* So.. if something has not externally cancelled this we can reschedule based on the TTL */
-	if (!recurring->cancelled) {
-		int ttl = dns_query_recurring_get_ttl(query);
-
-		if (ttl) {
-			recurring->timer = ast_sched_add(sched, ttl * 1000, dns_query_recurring_scheduled_callback, ao2_bump(recurring));
-			if (recurring->timer < 0) {
-				ao2_ref(recurring, -1);
-			}
-		}
-	}
-
-	ao2_replace(recurring->query, NULL);
-	ao2_unlock(recurring);
-
-	/* Since we stole the reference from the query we need to drop it ourselves */
-	ao2_ref(recurring, -1);
-}
-
-struct ast_dns_query_recurring *ast_dns_resolve_recurring(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data)
-{
-	struct ast_dns_query_recurring *recurring;
-
-	if (ast_strlen_zero(name) || !callback) {
-		return NULL;
-	}
-
-	recurring = ao2_alloc(sizeof(*recurring) + strlen(name) + 1, dns_query_recurring_destroy);
-	if (!recurring) {
-		return NULL;
-	}
-
-	recurring->callback = callback;
-	recurring->user_data = ao2_bump(data);
-	recurring->timer = -1;
-	recurring->rr_type = rr_type;
-	recurring->rr_class = rr_class;
-	strcpy(recurring->name, name); /* SAFE */
-
-	/* The scheduler callback expects a reference, so bump it up */
-	recurring->query = ast_dns_resolve_async(name, rr_type, rr_class, dns_query_recurring_resolution_callback, recurring);
-	if (!recurring->query) {
-		ao2_ref(recurring, -1);
-		return NULL;
-	}
-
-	return recurring;
-}
-
-int ast_dns_resolve_recurring_cancel(struct ast_dns_query_recurring *recurring)
-{
-	ao2_lock(recurring);
-
-	recurring->cancelled = 1;
-	AST_SCHED_DEL_UNREF(sched, recurring->timer, ao2_ref(recurring, -1));
-
-	if (recurring->query) {
-		ast_dns_resolve_cancel(recurring->query);
-		ao2_replace(recurring->query, NULL);
-	}
-
-	ao2_unlock(recurring);
-
-	return 0;
 }
 
 static void dns_shutdown(void)

Added: team/group/dns/main/dns_naptr.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_naptr.c?view=auto&rev=432887
==============================================================================
--- team/group/dns/main/dns_naptr.c (added)
+++ team/group/dns/main/dns_naptr.c Fri Mar 13 10:34:23 2015
@@ -1,0 +1,65 @@
+/*
+ * Asterisk -- An open source telephony toolkit.
+ *
+ * Copyright (C) 2015, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+/*! \file
+ *
+ * \brief DNS NAPTR Record Support
+ *
+ * \author Joshua Colp <jcolp at digium.com>
+ */
+
+/*** MODULEINFO
+	<support_level>core</support_level>
+ ***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
+#include "asterisk/dns_core.h"
+#include "asterisk/dns_naptr.h"
+
+const char *ast_dns_naptr_get_flags(const struct ast_dns_record *record)
+{
+	return NULL;
+}
+
+const char *ast_dns_naptr_get_service(const struct ast_dns_record *record)
+{
+	return NULL;
+}
+
+const char *ast_dns_naptr_get_regexp(const struct ast_dns_record *record)
+{
+	return NULL;
+}
+
+const char *ast_dns_naptr_get_replacement(const struct ast_dns_record *record)
+{
+	return NULL;
+}
+
+unsigned short ast_dns_naptr_get_order(const struct ast_dns_record *record)
+{
+	return 0;
+}
+
+unsigned short ast_dns_naptr_get_preference(const struct ast_dns_record *record)
+{
+	return 0;
+}

Propchange: team/group/dns/main/dns_naptr.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/group/dns/main/dns_naptr.c
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/group/dns/main/dns_naptr.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/group/dns/main/dns_recurring.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_recurring.c?view=auto&rev=432887
==============================================================================
--- team/group/dns/main/dns_recurring.c (added)
+++ team/group/dns/main/dns_recurring.c Fri Mar 13 10:34:23 2015
@@ -1,0 +1,149 @@
+/*
+ * Asterisk -- An open source telephony toolkit.
+ *
+ * Copyright (C) 2015, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+/*! \file
+ *
+ * \brief DNS Recurring Query Support
+ *
+ * \author Joshua Colp <jcolp at digium.com>
+ */
+
+/*** MODULEINFO
+	<support_level>core</support_level>
+ ***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
+#include "asterisk/astobj2.h"
+#include "asterisk/linkedlists.h"
+#include "asterisk/sched.h"
+#include "asterisk/strings.h"
+#include "asterisk/dns_core.h"
+#include "asterisk/dns_recurring.h"
+#include "asterisk/dns_internal.h"
+
+#include <arpa/nameser.h>
+
+/*! \brief Destructor for a DNS query */
+static void dns_query_recurring_destroy(void *data)
+{
+	struct ast_dns_query_recurring *recurring = data;
+
+	ao2_cleanup(recurring->user_data);
+}
+
+static void dns_query_recurring_resolution_callback(const struct ast_dns_query *query);
+
+/*! \brief Scheduled recurring query callback */
+static int dns_query_recurring_scheduled_callback(const void *data)
+{
+	struct ast_dns_query_recurring *recurring = (struct ast_dns_query_recurring *)data;
+
+	ao2_lock(recurring);
+	recurring->timer = -1;
+	if (!recurring->cancelled) {
+		recurring->query = ast_dns_resolve_async(recurring->name, recurring->rr_type, recurring->rr_class, dns_query_recurring_resolution_callback,
+			recurring);
+	}
+	ao2_unlock(recurring);
+
+	ao2_ref(recurring, -1);
+
+	return 0;
+}
+
+/*! \brief Query resolution callback */
+static void dns_query_recurring_resolution_callback(const struct ast_dns_query *query)
+{
+	struct ast_dns_query_recurring *recurring = ast_dns_query_get_data(query);
+
+	/* Replace the user data so the actual callback sees what it provided */
+	((struct ast_dns_query*)query)->user_data = ao2_bump(recurring->user_data);
+	recurring->callback(query);
+
+	ao2_lock(recurring);
+	/* So.. if something has not externally cancelled this we can reschedule based on the TTL */
+	if (!recurring->cancelled) {
+		const struct ast_dns_result *result = ast_dns_query_get_result(query);
+		int ttl = MIN(ast_dns_result_get_lowest_ttl(result), INT_MAX / 1000);
+
+		if (ttl) {
+			recurring->timer = ast_sched_add(ast_dns_get_sched(), ttl * 1000, dns_query_recurring_scheduled_callback, ao2_bump(recurring));
+			if (recurring->timer < 0) {
+				ao2_ref(recurring, -1);
+			}
+		}
+	}
+
+	ao2_replace(recurring->query, NULL);
+	ao2_unlock(recurring);
+
+	/* Since we stole the reference from the query we need to drop it ourselves */
+	ao2_ref(recurring, -1);
+}
+
+struct ast_dns_query_recurring *ast_dns_resolve_recurring(const char *name, int rr_type, int rr_class, ast_dns_resolve_callback callback, void *data)
+{
+	struct ast_dns_query_recurring *recurring;
+
+	if (ast_strlen_zero(name) || !callback || !ast_dns_get_sched()) {
+		return NULL;
+	}
+
+	recurring = ao2_alloc(sizeof(*recurring) + strlen(name) + 1, dns_query_recurring_destroy);
+	if (!recurring) {
+		return NULL;
+	}
+
+	recurring->callback = callback;
+	recurring->user_data = ao2_bump(data);
+	recurring->timer = -1;
+	recurring->rr_type = rr_type;
+	recurring->rr_class = rr_class;
+	strcpy(recurring->name, name); /* SAFE */
+
+	/* The resolution callback expects a reference, so bump it up */
+	recurring->query = ast_dns_resolve_async(name, rr_type, rr_class, dns_query_recurring_resolution_callback, ao2_bump(recurring));
+	if (!recurring->query) {
+		ao2_ref(recurring, -1);
+		return NULL;
+	}
+
+	return recurring;
+}
+
+int ast_dns_resolve_recurring_cancel(struct ast_dns_query_recurring *recurring)
+{
+	int res = 0;
+
+	ao2_lock(recurring);
+
+	recurring->cancelled = 1;
+	AST_SCHED_DEL_UNREF(ast_dns_get_sched(), recurring->timer, ao2_ref(recurring, -1));
+
+	if (recurring->query) {
+		res = ast_dns_resolve_cancel(recurring->query);
+		ao2_replace(recurring->query, NULL);
+	}
+
+	ao2_unlock(recurring);
+
+	return res;
+}

Propchange: team/group/dns/main/dns_recurring.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/group/dns/main/dns_recurring.c
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/group/dns/main/dns_recurring.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/group/dns/main/dns_srv.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_srv.c?view=auto&rev=432887
==============================================================================
--- team/group/dns/main/dns_srv.c (added)
+++ team/group/dns/main/dns_srv.c Fri Mar 13 10:34:23 2015
@@ -1,0 +1,55 @@
+/*
+ * Asterisk -- An open source telephony toolkit.
+ *
+ * Copyright (C) 2015, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+/*! \file
+ *
+ * \brief DNS SRV Record Support
+ *
+ * \author Joshua Colp <jcolp at digium.com>
+ */
+
+/*** MODULEINFO
+	<support_level>core</support_level>
+ ***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
+#include "asterisk/dns_core.h"
+#include "asterisk/dns_srv.h"
+
+const char *ast_dns_srv_get_host(const struct ast_dns_record *record)
+{
+	return NULL;
+}
+
+unsigned short ast_dns_srv_get_priority(const struct ast_dns_record *record)
+{
+	return 0;
+}
+
+unsigned short ast_dns_srv_get_weight(const struct ast_dns_record *record)
+{
+	return 0;
+}
+
+unsigned short ast_dns_srv_get_port(const struct ast_dns_record *record)
+{
+	return 0;
+}

Propchange: team/group/dns/main/dns_srv.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/group/dns/main/dns_srv.c
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/group/dns/main/dns_srv.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/group/dns/main/dns_tlsa.c
URL: http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_tlsa.c?view=auto&rev=432887
==============================================================================
--- team/group/dns/main/dns_tlsa.c (added)
+++ team/group/dns/main/dns_tlsa.c Fri Mar 13 10:34:23 2015
@@ -1,0 +1,55 @@
+/*
+ * Asterisk -- An open source telephony toolkit.
+ *
+ * Copyright (C) 2015, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+/*! \file
+ *
+ * \brief DNS TLSA Record Support
+ *
+ * \author Joshua Colp <jcolp at digium.com>
+ */
+
+/*** MODULEINFO
+	<support_level>core</support_level>
+ ***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
+#include "asterisk/dns_core.h"
+#include "asterisk/dns_tlsa.h"
+
+unsigned int ast_dns_tlsa_get_usage(const struct ast_dns_record *record)
+{
+	return 0;
+}
+
+unsigned int ast_dns_tlsa_get_selector(const struct ast_dns_record *record)
+{
+	return 0;
+}
+
+unsigned int ast_dns_tlsa_get_matching_type(const struct ast_dns_record *record)
+{
+	return 0;
+}
+
+const char *ast_dns_tlsa_get_association_data(const struct ast_dns_record *record)
+{
+	return NULL;
+}

Propchange: team/group/dns/main/dns_tlsa.c
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/group/dns/main/dns_tlsa.c
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/group/dns/main/dns_tlsa.c
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the asterisk-commits mailing list