pkg/kamailio/fedora/16: Updated rel in .spec to dev2
[sip-router] / resolve.h
index 4b702ec..8ce68e6 100644 (file)
--- a/resolve.h
+++ b/resolve.h
@@ -47,6 +47,7 @@
 #include <netdb.h>
 #include <arpa/nameser.h>
 #include <resolv.h>
+#include "counters.h"
 
 #ifdef __OS_darwin
 #include <arpa/nameser_compat.h>
 #define MAX_DNS_NAME 256
 #define MAX_DNS_STRING 255
 
+#ifndef T_EBL
+/** not official yet - iEnum. */
+#define T_EBL 65300
+#endif
 
 /* get_record flags */
 #define RES_ONLY_TYPE 1   /* return only the specified type records */
 #define RES_AR           2   /* return also the additional records */
 
+/* counter for failed DNS requests
+*/
+struct dns_counters_h {
+    counter_handle_t failed_dns_req;
+};
+
+extern struct dns_counters_h dns_cnts_h;
+
 /* query union*/
 union dns_query{
        HEADER hdr;
@@ -84,7 +97,7 @@ union dns_query{
 /* rdata struct*/
 struct rdata {
        unsigned short type;
-       unsigned short class;
+       unsigned short pclass;
        unsigned int   ttl;
        void* rdata;
        struct rdata* next;
@@ -152,6 +165,45 @@ struct cname_rdata {
 /* real size of the structure */
 #define CNAME_RDATA_SIZE(s) (sizeof(struct cname_rdata)+(s).name_len)
 
+/* dns character-string */
+struct dns_cstr{
+       char* cstr; /* pointer to null term. string */
+       unsigned char cstr_len;
+};
+
+/* txt rec. struct */
+struct txt_rdata {
+       unsigned short cstr_no; /* number of strings */
+       unsigned short tslen; /* total strings table len */
+       struct dns_cstr txt[1]; /* at least 1 */
+       /* all txt[*].cstr point inside a string table at the end of the struct.*/
+};
+
+#define TXT_RDATA_SIZE(s) \
+       (sizeof(struct txt_rdata)+((s).cstr_no-1)*sizeof(struct dns_cstr)+\
+               (s).tslen)
+
+/* ebl rec. struct, see
+   http://tools.ietf.org/html/draft-ietf-enum-branch-location-record-03 */
+struct ebl_rdata {
+       char* separator; /* points inside str_table */
+       char* apex;      /* point inside str_table */
+       unsigned char separator_len; /* separator len w/o the terminating 0 */
+       unsigned char apex_len;      /* apex len w/p the terminating 0 */
+       unsigned char position;
+       char str_table[1]; /* contains the 2 strings: separator and apex */
+};
+#define EBL_RDATA_SIZE(s) \
+       (sizeof(struct ebl_rdata)-1+(s).separator_len+1+(s).apex_len+1)
+
+
+struct ptr_rdata {
+       unsigned char ptrdname_len; /* name length w/o the terminating 0 */
+       char ptrdname[1]; /* null terminated name (len=name_len+1) */
+};
+/* real size of the structure */
+#define PTR_RDATA_SIZE(s) (sizeof(struct ptr_rdata)-1+(s).ptrdname_len+1)
+
 
 #ifdef HAVE_RESOLV_RES
 int match_search_list(const struct __res_state* res, char* name);
@@ -405,13 +457,13 @@ skip_ipv4:
 }
 
 
-int resolv_init();
+int resolv_init(void);
 
 /* callback/fixup functions executed by the configuration framework */
-void resolv_reinit(str *name);
-int dns_reinit_fixup(void *handle, str *name, void **val);
-int dns_try_ipv6_fixup(void *handle, str *name, void **val);
-void reinit_naptr_proto_prefs(str *name);
+void resolv_reinit(str *gname, str *name);
+int dns_reinit_fixup(void *handle, str *gname, str *name, void **val);
+int dns_try_ipv6_fixup(void *handle, str *gname, str *name, void **val);
+void reinit_naptr_proto_prefs(str *gname, str *name);
 
 #ifdef DNS_WATCHDOG_SUPPORT
 /* callback function that is called by the child processes