mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-13 16:35:35 +08:00
550b1095de
This reverts commit dff6771da7
.
76 lines
2.1 KiB
C
76 lines
2.1 KiB
C
|
||
#ifndef __DNS_SERVER_INCLUDE_H__
|
||
#define __DNS_SERVER_INCLUDE_H__
|
||
|
||
#include "lib_acl.h"
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#define USE_THREAD_POOL /* 外挂查询DNS模块采用线程池方式 */
|
||
|
||
/* 查询DNS的消息类型定义 */
|
||
#define DNS_MSG_LOOKUP ACL_MSGIO_USER + 100
|
||
#define DNS_MSG_LOOKUP_RESULT ACL_MSGIO_USER + 101
|
||
|
||
#define DNS_IP_MAX 5
|
||
|
||
typedef struct DNS_CTX DNS_CTX;
|
||
typedef struct DNS_SERVER DNS_SERVER;
|
||
typedef struct DNS_CACHE DNS_CACHE;
|
||
|
||
typedef void (*DNS_CALLBACK)(const DNS_CTX *);
|
||
|
||
struct DNS_CTX {
|
||
/* public */
|
||
char domain_key[256]; /* 域名(小写) */
|
||
char ip[DNS_IP_MAX][64]; /* IP地址数组 */
|
||
int port[DNS_IP_MAX]; /* port 数组 */
|
||
int ip_cnt; /* IP地址数组中的有效IP地址个数 */
|
||
time_t begin; /* 开始查询时的时间截 */
|
||
|
||
/* public */
|
||
DNS_CALLBACK callback; /* 查询返回调用的用户的回调函数 */
|
||
void *context; /* 用户传递的参数 */
|
||
|
||
/* private */
|
||
DNS_SERVER *dns; /* DNS对象句柄,内部变量 */
|
||
ACL_MSGIO *mio; /* IO消息句柄,内部变量 */
|
||
ACL_DNS_DB *dns_db; /* 临时用以传递DNS查询结果,内部变量 */
|
||
};
|
||
|
||
struct DNS_SERVER {
|
||
ACL_AIO *aio; /* 异步通信框架 */
|
||
acl_pthread_pool_t *wq; /* 线程池句柄 */
|
||
ACL_MSGIO *listener; /* 消息监听者句柄 */
|
||
ACL_MSGIO *mio; /* 消息句柄 */
|
||
char addr[256];
|
||
|
||
DNS_CACHE *dns_cache; /* DNS缓存句柄 */
|
||
acl_pthread_mutex_t lock; /* 线程锁 */
|
||
};
|
||
|
||
/* in dns_server.c */
|
||
DNS_SERVER *dns_server_create(ACL_AIO *aio, int timeout);
|
||
void dns_server_close(DNS_SERVER *dns);
|
||
void dns_server_static_add(DNS_SERVER *dns, const char *map, const char *delim, int def_port);
|
||
int dns_server_lookup(DNS_SERVER *dns, const DNS_CTX *ctx);
|
||
|
||
/* in dns_cache.c */
|
||
void dns_cache_push_one(DNS_CACHE *dns_cache, const ACL_DNS_DB *dns_db, int timeout);
|
||
void dns_cache_push(DNS_CACHE *dns_cache, const ACL_DNS_DB *dns_db);
|
||
void dns_cache_push2(DNS_CACHE *dns_cache, const DNS_CTX *dns_ctx);
|
||
|
||
ACL_DNS_DB *dns_cache_lookup(DNS_CACHE *dns_cache, const char *name);
|
||
void dns_cache_del_host(DNS_CACHE *dns_cache, const char *name);
|
||
DNS_CACHE *dns_cache_create(int timeout, int thread_safe);
|
||
|
||
/* in dns_hosts.c */
|
||
void dns_hosts_load(ACL_DNS *dns_handle, const char *filename);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif
|