acl/lib_acl/include/net/acl_access.h
2014-11-19 00:25:21 +08:00

53 lines
1.4 KiB
C

#ifndef ACL_ACCESS_INCLUDE_H
#define ACL_ACCESS_INCLUDE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "stdlib/acl_stdlib.h"
/**
* 向访问列表中添加一个允许的 ip 地址段
* @param data 多个 IP 地址段数据字符串. 如: 10.0.0.1:10.0.250.1, 192.168.0.1:192.168.0.255
* @param sep1 每个 IP 地址段之间的分隔符, 如上例中的 "," 分隔符
* @param sep2 每个 IP 地址段高地址与低地址之间的分隔符, 如上例中的 ":" 分隔符
* @return 添加 结果. 0: 成功; < 0: 失败
* 注: 该函数是线程不安全的
*/
ACL_API int acl_access_add(const char *data, const char *sep1, const char *sep2);
/**
* 从配置文件中读取 IP 地址字符串, 并自动生成 IP 地址访问列表
* @param xcp 已经成功分析了配置文件的结果句柄
* @param name xcp 结果句柄中与 IP 地址访问相关的变量名
* @return 是否添加成功. 0: 成功; < 0: 失败.
* 注: 该函数是线程不安全的
*/
ACL_API int acl_access_cfg(ACL_XINETD_CFG_PARSER *xcp, const char *name);
/**
* 用户可以设置自己的日志记录函数, 如果不调用此函数, 则本库自动使用 aclMsg.c中的库.
* @param log_fn 用户自己的日志记录函数.
* 注: 该函数是线程不安全的
*/
ACL_API void acl_access_setup_logfn(void (*log_fn)(const char *fmt, ...));
/**
* 判定给定 IP 地址是否在允许的访问 IP 地址列表中.
* @param ip 格式: 192.168.0.1
* @return 是否在允许的访问列表中, != 0: 是; == 0: 不是.
*/
ACL_API int acl_access_permit(const char *ip);
/**
* 将访问地址表表打印出来.
*/
ACL_API void acl_access_debug(void);
#ifdef __cplusplus
}
#endif
#endif