acl  3.5.3.0
acl_res.h
浏览该文件的文档.
1 #ifndef ACL_RES_INCLUDE_H
2 #define ACL_RES_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "../stdlib/acl_define.h"
9 #include "acl_netdb.h"
10 #include <time.h>
11 
12 #ifdef ACL_UNIX
13 #include <netinet/in.h>
14 #include <sys/un.h>
15 #endif
16 
17 /**
18  * DNS返回结果的存储结构
19  */
20 typedef struct ACL_RES {
21  char dns_ip[64]; /**< DNS的IP地址 */
22  unsigned short dns_port; /**< DNS的Port */
23  unsigned short cur_qid; /**< 内部变量,数据包的标识 */
24  time_t tm_spent; /**< 查询时间耗费(秒) */
25  int errnum;
26 #define ACL_RES_ERR_SEND -100 /**< 写出错 */
27 #define ACL_RES_ERR_READ -101 /**< 读出错 */
28 #define ACL_RES_ERR_RTMO -102 /**< 读超时 */
29 #define ACL_RES_ERR_NULL -103 /**< 空结果 */
30 #define ACL_RES_ERR_CONN -104 /**< TCP方式时连接失败 */
31 
32  int transfer; /**< TCP/UDP 传输模式 */
33 #define ACL_RES_USE_UDP 0 /**< UDP 传输模式 */
34 #define ACL_RES_USE_TCP 1 /**< TCP 传输模式 */
35 
36  int conn_timeout; /**< TCP 传输时的连接超时时间, 默认为10秒 */
37  int rw_timeout; /**< TCP/UDP 传输的IO超时时间, 默认为10秒 */
38 } ACL_RES;
39 
40 /**
41  * 创建一个DNS查询对象
42  * @param dns_ip {const char*} DNS的IP地址
43  * @param dns_port {unsigned short} DNS的Port
44  * @return {ACL_RES*} 新创建的查询对象
45  */
46 ACL_API ACL_RES *acl_res_new(const char *dns_ip, unsigned short dns_port);
47 
48 /**
49  * 设置DNS查询的超时时间
50  * @param conn_timeout {int} TCP 传输时的连接超时时间
51  * @param rw_timeout {int} TCP/UDP 传输的IO超时时间
52  */
53 ACL_API void acl_res_set_timeout(int conn_timeout, int rw_timeout);
54 
55 /**
56  * 释放一个DNS查询对象
57  * @param res {ACL_RES*} DNS查询对象
58  */
59 ACL_API void acl_res_free(ACL_RES *res);
60 
61 /**
62  * 查询某个域名的IP地址
63  * @param res {ACL_RES*} DNS查询对象
64  * @param domain {const char*} 要查询的域名
65  * @return {ACL_DNS_DB*} 查询的结果集
66  */
67 ACL_API ACL_DNS_DB *acl_res_lookup(ACL_RES *res, const char *domain);
68 
69 #ifdef AF_INET6
70 ACL_API ACL_DNS_DB *acl_res_lookup6(ACL_RES *res, const char *domain);
71 #endif
72 
73 /**
74  * 根据错误号获得查询失败的原因
75  * @param errnum {int} 错误号
76  * @return {const char*} 错误信息
77  */
78 ACL_API const char *acl_res_strerror(int errnum);
79 
80 /**
81  * 获得当前查询的错误信息
82  * @param res {ACL_RES*} DNS查询对象
83  * @return {const char*} 错误信息
84  */
85 ACL_API const char *acl_res_errmsg(const ACL_RES *res);
86 
87 #ifdef __cplusplus
88 }
89 #endif
90 
91 #endif
92 
unsigned short cur_qid
Definition: acl_res.h:23
int errnum
Definition: acl_res.h:25
ACL_API void acl_res_free(ACL_RES *res)
ACL_API const char * acl_res_errmsg(const ACL_RES *res)
ACL_API void acl_res_set_timeout(int conn_timeout, int rw_timeout)
ACL_API ACL_DNS_DB * acl_res_lookup(ACL_RES *res, const char *domain)
char dns_ip[64]
Definition: acl_res.h:21
int conn_timeout
Definition: acl_res.h:36
time_t tm_spent
Definition: acl_res.h:24
struct ACL_RES ACL_RES
int transfer
Definition: acl_res.h:32
ACL_API const char * acl_res_strerror(int errnum)
int rw_timeout
Definition: acl_res.h:37
unsigned short dns_port
Definition: acl_res.h:22
ACL_API ACL_RES * acl_res_new(const char *dns_ip, unsigned short dns_port)