00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef INC_SPF_DNS
00020 #define INC_SPF_DNS
00021
00022
00067
00068
00069
00070
00071
00072 #if !defined( HAVE_NS_TYPE )
00073
00074 #define ns_t_invalid 0
00075 #define ns_t_a 1
00076 #define ns_t_ns 2
00077 #define ns_t_cname 5
00078 #define ns_t_ptr 12
00079 #define ns_t_mx 15
00080 #define ns_t_txt 16
00081 #define ns_t_aaaa 28
00082
00083 #define ns_t_any 255
00085 typedef int ns_type;
00086 #endif
00087
00088 #if ! HAVE_DECL_NS_T_SPF
00089 #define ns_t_spf 99
00090 #endif
00091
00092 #if ! HAVE_DECL_NS_T_INVALID
00093 #define ns_t_invalid 0
00094 #endif
00095
00096
00097
00098
00099
00100
00101 #if !defined(HAVE_NETDB_H) && !defined(_WIN32)
00102 #define NETDB_SUCCESS 0
00103 #define HOST_NOT_FOUND 1
00104 #define TRY_AGAIN 2
00105 #define NO_RECOVERY 3
00106 #define NO_DATA 4
00107 #endif
00108 typedef int SPF_dns_stat_t;
00109
00110 typedef struct SPF_dns_server_struct SPF_dns_server_t;
00111
00112 #include "spf_request.h"
00113 #include "spf_dns_rr.h"
00114
00115
00116
00117
00118
00119 typedef void (*SPF_dns_destroy_t)(SPF_dns_server_t *spf_dns_server);
00120 typedef SPF_dns_rr_t *(*SPF_dns_lookup_t)(
00121 SPF_dns_server_t *spf_dns_server,
00122 const char *domain,
00123 ns_type ns_type, int should_cache
00124 );
00125 typedef SPF_errcode_t (*SPF_dns_get_spf_t)( SPF_server_t *spf_server,
00126 SPF_request_t *spf_request,
00127 SPF_response_t *spf_response,
00128 SPF_record_t **spf_recordp);
00129 typedef SPF_errcode_t (*SPF_dns_get_exp_t)( SPF_server_t *spf_server,
00130 const char *domain,
00131 char **buf, size_t *buf_len );
00132 typedef int (*SPF_dns_add_cache_t)( SPF_server_t *spf_server,
00133 SPF_dns_rr_t spfrr );
00134
00135 struct SPF_dns_server_struct
00136 {
00142 SPF_dns_destroy_t destroy;
00143
00144 SPF_dns_lookup_t lookup;
00145 SPF_dns_get_spf_t get_spf;
00146 SPF_dns_get_exp_t get_exp;
00147 SPF_dns_add_cache_t add_cache;
00148
00149
00150 SPF_dns_server_t *layer_below;
00151
00152 const char *name;
00153 int debug;
00154 void *hook;
00155 };
00156
00157
00158 void SPF_dns_free( SPF_dns_server_t *spf_dns_server );
00159 SPF_dns_rr_t *SPF_dns_lookup( SPF_dns_server_t *spf_dns_server,
00160 const char *domain, ns_type rr_type,
00161 int should_cache );
00162 SPF_dns_rr_t *SPF_dns_rlookup( SPF_dns_server_t *spf_dns_server,
00163 struct in_addr ipv4, ns_type rr_type,
00164 int should_cache );
00165 SPF_dns_rr_t *SPF_dns_rlookup6( SPF_dns_server_t *spf_dns_server,
00166 struct in6_addr ipv6, ns_type rr_type,
00167 int should_cache );
00168
00169
00177 char *SPF_dns_get_client_dom(SPF_dns_server_t *spf_dns_server,
00178 SPF_request_t *sr);
00179
00180
00181 #endif