acl/lib_acl/include/net/acl_ifconf.h

63 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef ACL_IFCONF_INCLUDE_H
#define ACL_IFCONF_INCLUDE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "../stdlib/acl_define.h"
#include "../stdlib/acl_argv.h"
typedef struct ACL_IFADDR {
char *name; /* 接口名称 */
#if defined(_WIN32) || defined(_WIN64)
char *desc; /* 接口描述 */
#endif
char ip[32]; /* 以字符串表示的IP地址 */
unsigned int addr; /* 网络字节序的 32 位 IP 地址 */
} ACL_IFADDR;
typedef struct ACL_IFCONF {
ACL_IFADDR *addrs; /* ACL_IFADDR 数组 */
int length; /* ACL_IFADDR 数组长度 */
/* for acl_iterator */
/* 取迭代器头函数 */
const ACL_IFADDR *(*iter_head)(ACL_ITER*, struct ACL_IFCONF*);
/* 取迭代器下一个函数 */
const ACL_IFADDR *(*iter_next)(ACL_ITER*, struct ACL_IFCONF*);
/* 取迭代器尾函数 */
const ACL_IFADDR *(*iter_tail)(ACL_ITER*, struct ACL_IFCONF*);
/* 取迭代器上一个函数 */
const ACL_IFADDR *(*iter_prev)(ACL_ITER*, struct ACL_IFCONF*);
} ACL_IFCONF;
/**
* 获得主机的所有网络地址及网络接口名称
* @return {ACL_IFCONF*}
*/
ACL_API ACL_IFCONF *acl_get_ifaddrs(void);
/**
* 释放由 acl_get_ifaddrs() 返回的 ACL_IFCONF 内存
* @param ifconf {ACL_IFCONF*}
*/
ACL_API void acl_free_ifaddrs(ACL_IFCONF *ifconf);
/**
* 扫描本机所有网卡 IP将所有匹配指定模式的 IP 地址返回,目前仅支持 IPV4
* @param pattern {const char *} 指定的匹配模式格式为xxx.xxx.xxx.xxx 或
* xxx.xxx.xxx.xxx:port192.168.*.*, 192.168.*.8:8010.*.0.*:81
* @return {ACL_ARGV *} 返回条件的结果集,如果 pattern 后面带有端口,则自动
* 将端口添加在每个 IP 后面,若返回对象非空,调用者用完应调用 acl_argv_free
* 释放该对象
*/
ACL_API ACL_ARGV *acl_ifconf_search(const char *pattern);
#ifdef __cplusplus
}
#endif
#endif