#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