Author: file
Date: Wed Mar  4 11:47:24 2015
New Revision: 432449

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432449
Log:
Implement some getter functions.

Modified:
    team/group/dns/main/dns_core.c
    team/group/dns/main/dns_query_set.c

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=432449&r1=432448&r2=432449
==============================================================================
--- team/group/dns/main/dns_core.c (original)
+++ team/group/dns/main/dns_core.c Wed Mar  4 11:47:24 2015
@@ -32,6 +32,7 @@
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 #include "asterisk/linkedlists.h"
+#include "asterisk/vector.h"
 #include "asterisk/dns_core.h"
 #include "asterisk/dns_naptr.h"
 #include "asterisk/dns_srv.h"
@@ -40,6 +41,82 @@
 
 AST_RWLIST_HEAD_STATIC(resolvers, ast_dns_resolver);
 
+/*! \brief Generic DNS record information */
+struct ast_dns_record {
+       /*! \brief Resource record type */
+       int rr_type;
+       /*! \brief Resource record class */
+       int rr_class;
+       /*! \brief Time-to-live of the record */
+       int ttl;
+       /*! \brief The raw DNS record */
+       char *data;
+       /*! \brief The size of the raw DNS record */
+       size_t data_len;
+       /*! \brief Linked list information */
+       AST_LIST_ENTRY(ast_dns_record) list;
+};
+
+/*! \brief An SRV record */
+struct ast_dns_srv_record {
+       /*! \brief Generic DNS record information */
+       struct ast_dns_record generic;
+       /*! \brief The hostname in the SRV record */
+       const char *host;
+       /*! \brief The priority of the SRV record */
+       unsigned short priority;
+       /*! \brief The weight of the SRV record */
+       unsigned short weight;
+       /*! \brief The port in the SRV record */
+       unsigned short port;
+};
+
+/*! \brief A NAPTR record */
+struct ast_dns_naptr_record {
+       /*! \brief Generic DNS record information */
+       struct ast_dns_record generic;
+       /*! \brief The flags from the NAPTR record */
+       const char *flags;
+       /*! \brief The service from the NAPTR record */
+       const char *service;
+       /*! \brief The regular expression from the NAPTR record */
+       const char *regexp;
+       /*! \brief The replacement from the NAPTR record */
+       const char *replacement;
+       /*! \brief The order for the NAPTR record */
+       unsigned short order;
+       /*! \brief The preference of the NAPTR record */
+       unsigned short preference;
+};
+
+/*! \brief The result of a DNS query */
+struct ast_dns_result {
+       /*! \brief Whether the domain was not found */
+       unsigned int nxdomain;
+       /*! \brief Whether the result is secure */
+       unsigned int secure;
+       /*! \brief Whether the result is bogus */
+       unsigned int bogus;
+       /*! \brief The canonical name */
+       const char *canonical;
+       /*! \brief Records returned */
+       AST_LIST_HEAD_NOLOCK(, ast_dns_record) records;
+};
+
+/*! \brief A DNS query */
+struct ast_dns_query {
+       /*! \brief Callback to invoke upon completion */
+       ast_dns_resolve_callback callback;
+       /*! \brief User-specific data */
+       void *user_data;
+       /*! \brief Resolver-specific data */
+       void *resolver_data;
+       /*! \brief Result of the DNS query */
+       struct ast_dns_result *result;
+       /*! \brief Timer for recurring resolution */
+       int timer;
+};
+
 const char *ast_dns_query_get_name(const struct ast_dns_query *query)
 {
        return NULL;
@@ -47,7 +124,7 @@
 
 int ast_dns_query_get_rr_type(const struct ast_dns_query *query)
 {
-               return 0;
+       return 0;
 }
 
 int ast_dns_query_get_rr_class(const struct ast_dns_query *query)
@@ -62,37 +139,37 @@
 
 void *ast_dns_query_get_data(const struct ast_dns_query *query)
 {
-       return NULL;
+       return query->user_data;
 }
 
 struct ast_dns_result *ast_dns_query_get_result(const struct ast_dns_query 
*query)
 {
-       return NULL;
+       return query->result;
 }
 
 unsigned int ast_dns_result_get_nxdomain(const struct ast_dns_result *result)
 {
-       return 0;
+       return result->nxdomain;
 }
 
 unsigned int ast_dns_result_get_secure(const struct ast_dns_result *result)
 {
-       return 0;
+       return result->secure;
 }
 
 unsigned int ast_dns_result_get_bogus(const struct ast_dns_result *result)
 {
-       return 0;
+       return result->bogus;
 }
 
 const char *ast_dns_result_get_canonical(const struct ast_dns_result *result)
 {
-       return NULL;
+       return result->canonical;
 }
 
 const struct ast_dns_record *ast_dns_result_get_records(const struct 
ast_dns_result *result)
 {
-       return NULL;
+       return AST_LIST_FIRST(&result->records);
 }
 
 void ast_dns_result_free(struct ast_dns_result *result)
@@ -101,27 +178,27 @@
 
 int ast_dns_record_get_rr_type(const struct ast_dns_record *record)
 {
-       return 0;
+       return record->rr_type;
 }
 
 int ast_dns_record_get_rr_class(const struct ast_dns_record *record)
 {
-       return 0;
+       return record->rr_class;
 }
 
 int ast_dns_record_get_ttl(const struct ast_dns_record *record)
 {
-       return 0;
+       return record->ttl;
 }
 
 const char *ast_dns_record_get_data(const struct ast_dns_record *record)
 {
-       return NULL;
+       return record->data;
 }
 
 struct ast_dns_record *ast_dns_record_get_next(const struct ast_dns_record 
*record)
 {
-       return NULL;
+       return AST_LIST_NEXT(record, list);
 }
 
 struct ast_dns_query *ast_dns_resolve_async(const char *name, int rr_type, int 
rr_class, ast_dns_resolve_callback callback, void *data)
@@ -216,11 +293,12 @@
 
 void ast_dns_resolver_set_data(struct ast_dns_query *query, void *data)
 {
+       query->resolver_data = data;
 }
 
 void *ast_dns_resolver_get_data(const struct ast_dns_query *query)
 {
-       return NULL;
+       return query->resolver_data;
 }
 
 void ast_dns_resolver_set_result(struct ast_dns_query *query, unsigned int 
nxdomain, unsigned int secure, unsigned int bogus,

Modified: team/group/dns/main/dns_query_set.c
URL: 
http://svnview.digium.com/svn/asterisk/team/group/dns/main/dns_query_set.c?view=diff&rev=432449&r1=432448&r2=432449
==============================================================================
--- team/group/dns/main/dns_query_set.c (original)
+++ team/group/dns/main/dns_query_set.c Wed Mar  4 11:47:24 2015
@@ -31,8 +31,22 @@
 
 ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
+#include "asterisk/vector.h"
+#include "asterisk/astobj2.h"
 #include "asterisk/dns_core.h"
 #include "asterisk/dns_query_set.h"
+
+/*! \brief A set of DNS queries */
+struct ast_dns_query_set {
+       /*! \brief DNS queries */
+       AST_VECTOR(, struct ast_dns_query *) queries;
+       /*! \brief The total number of completed queries */
+       unsigned int queries_completed;
+       /*! \brief Callback to invoke upon completion */
+       ast_dns_query_set_callback callback;
+       /*! \brief User-specific data */
+       void *user_data;
+};
 
 struct ast_dns_query_set *ast_dns_query_set_create(void)
 {
@@ -56,11 +70,13 @@
 
 void *ast_dns_query_set_get_data(const struct ast_dns_query_set *query_set)
 {
-       return NULL;
+       return query_set->user_data;
 }
 
 void ast_dns_query_set_resolve_async(struct ast_dns_query_set *query_set, 
ast_dns_query_set_callback callback, void *data)
 {
+       query_set->callback = callback;
+       query_set->user_data = ao2_bump(data);
 }
 
 void ast_query_set_resolve(struct ast_dns_query_set *query_set)


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to