acl  3.5.3.0
acl_netdb.h 文件参考
+ acl_netdb.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  ACL_HOSTNAME
 
struct  ACL_DNS_DB
 

宏定义

#define ACL_HOSTNAME_TYPE_IPV4   0
 
#define ACL_HOSTNAME_TYPE_IPV6   1
 
#define ACL_HOSTNAME_TYPE_CNAME   2
 
#define ACL_HOSTNAME_TYPE_MX   3
 
#define ACL_HOSTNAME_TYPE_SOA   4
 
#define ACL_HOSTNAME_TYPE_NS   5
 
#define ACL_HOSTNAME_TYPE_TXT   6
 

类型定义

typedef struct ACL_HOSTNAME ACL_HOST_INFO
 
typedef struct ACL_HOSTNAME ACL_HOSTNAME
 
typedef struct ACL_DNS_DB ACL_DNS_DB
 

函数

ACL_API const ACL_HOSTNAMEacl_netdb_index (const ACL_DNS_DB *h_dns_db, int i)
 
ACL_API const ACL_SOCKADDRacl_netdb_index_saddr (ACL_DNS_DB *h_dns_db, int i)
 
ACL_API void acl_netdb_refer_oper (ACL_DNS_DB *h_dns_db, int i, int n)
 
ACL_API void acl_netdb_refer (ACL_DNS_DB *h_dns_db, int i)
 
ACL_API void acl_netdb_unrefer (ACL_DNS_DB *h_dns_db, int i)
 
ACL_API const char * acl_netdb_index_ip (const ACL_DNS_DB *h_dns_db, int i)
 
ACL_API int acl_netdb_size (const ACL_DNS_DB *h_dns_db)
 
ACL_API void acl_netdb_free (ACL_DNS_DB *h_dns_db)
 
ACL_API ACL_DNS_DBacl_netdb_new (const char *domain)
 
ACL_API void acl_netdb_set_ns (ACL_DNS_DB *db, ACL_SOCKADDR *sa)
 
ACL_API void acl_netdb_addip (ACL_DNS_DB *h_dns_db, const char *ip)
 
ACL_API void acl_netdb_add_addr (ACL_DNS_DB *h_dns_db, const char *ip, int port)
 
ACL_API ACL_DNS_DBacl_netdb_clone (const ACL_DNS_DB *h_dns_db)
 
ACL_API ACL_DNS_DBacl_gethostbyname (const char *name, int *h_error)
 
ACL_API ACL_DNS_DBacl_gethostbyname2 (const char *name, int socktype, int family, int *h_error)
 
ACL_API const char * acl_netdb_strerror (int errnum)
 
ACL_API void acl_netdb_cache_push (const ACL_DNS_DB *h_dns_db, int timeout)
 
ACL_API ACL_DNS_DBacl_netdb_cache_lookup (const char *name)
 
ACL_API void acl_netdb_cache_del_host (const char *name)
 
ACL_API void acl_netdb_cache_init (int timeout, int thread_safe)
 

宏定义说明

◆ ACL_HOSTNAME_TYPE_CNAME

#define ACL_HOSTNAME_TYPE_CNAME   2

在文件 acl_netdb.h27 行定义.

◆ ACL_HOSTNAME_TYPE_IPV4

#define ACL_HOSTNAME_TYPE_IPV4   0

在文件 acl_netdb.h25 行定义.

◆ ACL_HOSTNAME_TYPE_IPV6

#define ACL_HOSTNAME_TYPE_IPV6   1

在文件 acl_netdb.h26 行定义.

◆ ACL_HOSTNAME_TYPE_MX

#define ACL_HOSTNAME_TYPE_MX   3

在文件 acl_netdb.h28 行定义.

◆ ACL_HOSTNAME_TYPE_NS

#define ACL_HOSTNAME_TYPE_NS   5

在文件 acl_netdb.h30 行定义.

◆ ACL_HOSTNAME_TYPE_SOA

#define ACL_HOSTNAME_TYPE_SOA   4

在文件 acl_netdb.h29 行定义.

◆ ACL_HOSTNAME_TYPE_TXT

#define ACL_HOSTNAME_TYPE_TXT   6

在文件 acl_netdb.h31 行定义.

类型定义说明

◆ ACL_DNS_DB

typedef struct ACL_DNS_DB ACL_DNS_DB

DNS查询结果集

◆ ACL_HOST_INFO

typedef struct ACL_HOSTNAME ACL_HOST_INFO

主机地址结构

在文件 acl_netdb.h16 行定义.

◆ ACL_HOSTNAME

typedef struct ACL_HOSTNAME ACL_HOSTNAME

函数说明

◆ acl_gethostbyname()

ACL_API ACL_DNS_DB* acl_gethostbyname ( const char *  name,
int *  h_error 
)

查询某个域名的IP地址集

参数
name{const char*} 域名
h_error{int*} 如果查询失败存储出错原因
返回
{ACL_DNS_DB*} 查询结果集, 如果为NULL则查询失败, 另外,即使返回不为空, 也得需要通过 acl_netdb_size()/1 获得结果集的数组长度

◆ acl_gethostbyname2()

ACL_API ACL_DNS_DB* acl_gethostbyname2 ( const char *  name,
int  socktype,
int  family,
int *  h_error 
)

查询某个域名的IP地址集

参数
name{const char*} 域名
socktype{int} 查询域名服务器所采用的 socket 类型: SOCK_DGRAM – UDP 方式, SOCK_STREAM – TCP 方式
family{int} IP 地址簇类型:PF_INET – IPV4, PF_INET6 – IPV6, PF_UNSPEC – 由系统自动选择
h_error{int*} 如果查询失败存储出错原因
返回
{ACL_DNS_DB*} 查询结果集, 如果为NULL则查询失败, 另外,即使返回不为空, 也得需要通过 acl_netdb_size()/1 获得结果集的数组长度

◆ acl_netdb_add_addr()

ACL_API void acl_netdb_add_addr ( ACL_DNS_DB h_dns_db,
const char *  ip,
int  port 
)

向结果集中添加IP地址及端口号

参数
h_dns_db{ACL_DNS_DB*} 查询结果集对象
ip{const char*} 要添加的IP地址
port{int} 要添加的端口号

◆ acl_netdb_addip()

ACL_API void acl_netdb_addip ( ACL_DNS_DB h_dns_db,
const char *  ip 
)

向结果集中添加IP地址

参数
h_dns_db{ACL_DNS_DB*} 查询结果集对象
ip{const char*} 要添加的IP地址

◆ acl_netdb_cache_del_host()

ACL_API void acl_netdb_cache_del_host ( const char *  name)

从DNS缓存中删除某个DNS查询结果集

参数
name{const char*} 域名

◆ acl_netdb_cache_init()

ACL_API void acl_netdb_cache_init ( int  timeout,
int  thread_safe 
)

初始化DNS缓存区

参数
timeout{int} DNS结果集的默认缓存时间(秒)
thread_safe{int} 是否需要DNS缓存区线程安全, 0: 表示不需要, 1: 表示需要线程安全

◆ acl_netdb_cache_lookup()

ACL_API ACL_DNS_DB* acl_netdb_cache_lookup ( const char *  name)

从DNS缓存中取得DNS查询结果集

参数
name{const char*} 域名
返回
{ACL_DNS_DB*} DNS查询结果集

◆ acl_netdb_cache_push()

ACL_API void acl_netdb_cache_push ( const ACL_DNS_DB h_dns_db,
int  timeout 
)

向DNS缓存中添加缓存数据

参数
h_dns_db{const ACL_DNS_DB*} DNS查询结果集
timeout{int} 该结果集被缓存的超时时间,如果 <= 0, 则采用默认的值, 该默认值是在 acl_netdb_cache_init()/2 中的设置值, 单位为秒

◆ acl_netdb_clone()

ACL_API ACL_DNS_DB* acl_netdb_clone ( const ACL_DNS_DB h_dns_db)

克隆一个查询结果集对象

参数
h_dns_db{const ACL_DNS_DB*} 源结果集对象
返回
{ACL_DNS_DB*} 新克隆的结果集对象

◆ acl_netdb_free()

ACL_API void acl_netdb_free ( ACL_DNS_DB h_dns_db)

释放结果集内存资源

参数
h_dns_db{ACL_DNS_DB*} DNS结果集

◆ acl_netdb_index()

ACL_API const ACL_HOSTNAME* acl_netdb_index ( const ACL_DNS_DB h_dns_db,
int  i 
)

从结果集中取得某个下标位置的主机地址结构

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
i{int} 下标位置
返回
{const ACL_HOSTNAME*} 返回相应下标的主机地址结构

◆ acl_netdb_index_ip()

ACL_API const char* acl_netdb_index_ip ( const ACL_DNS_DB h_dns_db,
int  i 
)

将结果集中的对应某个下标的IP地址,以字符串表示

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
i{int} 下标位置
返回
{const char*} 查得的结果,NULL 表示失败

◆ acl_netdb_index_saddr()

ACL_API const ACL_SOCKADDR* acl_netdb_index_saddr ( ACL_DNS_DB h_dns_db,
int  i 
)

从结果集中取得某个下标位置的主机IP地址

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
i{int} 下标位置
返回
{const ACL_SOCKADDR*} IP地址结构, NULL表示失败

◆ acl_netdb_new()

ACL_API ACL_DNS_DB* acl_netdb_new ( const char *  domain)

根据域名创建一个查询结果集的结构,但并不进行DNS查询

参数
domain{const char*} 要查询的域名
返回
{ACL_DNS_DB*} 创建的结果集对象

◆ acl_netdb_refer()

ACL_API void acl_netdb_refer ( ACL_DNS_DB h_dns_db,
int  i 
)

将结果集中的对应某个下标的主机地址引用加1

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
i{int} 下标位置

◆ acl_netdb_refer_oper()

ACL_API void acl_netdb_refer_oper ( ACL_DNS_DB h_dns_db,
int  i,
int  n 
)

将结果集中的对应某个下标的主机地址引用增加

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
i{int} 下标位置
n{int} 需要增加的引用值

◆ acl_netdb_set_ns()

ACL_API void acl_netdb_set_ns ( ACL_DNS_DB db,
ACL_SOCKADDR sa 
)

设置该 DNS 查询对象所绑定的 DNS 服务器地址

参数
db{ACL_DNS_DB*} 由 acl_netdb_new 或 acl_netdb_clone 创建
sa{ACL_SOCKADDR*} DNS 服务器地址

◆ acl_netdb_size()

ACL_API int acl_netdb_size ( const ACL_DNS_DB h_dns_db)

取得结果集中主机地址的个数

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
返回
{int} 主机地址个数 > 0, -1 表示参数输入有误

◆ acl_netdb_strerror()

ACL_API const char* acl_netdb_strerror ( int  errnum)

根据错误号获得出错提示信息

参数
errnum{int} 错误号
返回
{const char*} 出错信息

◆ acl_netdb_unrefer()

ACL_API void acl_netdb_unrefer ( ACL_DNS_DB h_dns_db,
int  i 
)

将结果集中的对应某个下标的主机地址引用减1

参数
h_dns_db{const ACL_DNS_DB*} DNS结果集
i{int} 下标位置