acl  3.5.3.0
acl_ifconf.h
浏览该文件的文档.
1 #ifndef ACL_IFCONF_INCLUDE_H
2 #define ACL_IFCONF_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "../stdlib/acl_define.h"
9 #include "../stdlib/acl_argv.h"
10 #include "acl_sane_inet.h"
11 
12 typedef struct ACL_IFADDR {
13  char name[256]; /* 接口名称 */
14 #if defined(_WIN32) || defined(_WIN64)
15  char desc[256]; /* 接口描述 */
16 #endif
17  char addr[128]; /* 以字符串表示的IP地址 */
18  ACL_SOCKADDR saddr; /* 兼容 IPV4 & IPV6 的地址 */
19 } ACL_IFADDR;
20 
21 typedef struct ACL_IFCONF {
22  ACL_IFADDR *addrs; /* ACL_IFADDR 数组 */
23  int length; /* ACL_IFADDR 数组长度 */
24 
25  /* for acl_iterator */
26 
27  /* 取迭代器头函数 */
28  const ACL_IFADDR *(*iter_head)(ACL_ITER*, struct ACL_IFCONF*);
29  /* 取迭代器下一个函数 */
30  const ACL_IFADDR *(*iter_next)(ACL_ITER*, struct ACL_IFCONF*);
31  /* 取迭代器尾函数 */
32  const ACL_IFADDR *(*iter_tail)(ACL_ITER*, struct ACL_IFCONF*);
33  /* 取迭代器上一个函数 */
34  const ACL_IFADDR *(*iter_prev)(ACL_ITER*, struct ACL_IFCONF*);
35 } ACL_IFCONF;
36 
37 /**
38  * 获得主机的所有网络地址及网络接口名称
39  * @return {ACL_IFCONF*} 返回值非 NULL 时,需调用 acl_free_ifaddrs 释放
40  */
41 ACL_API ACL_IFCONF *acl_get_ifaddrs(void);
42 
43 /**
44  * 释放由 acl_get_ifaddrs() 返回的 ACL_IFCONF 内存
45  * @param ifconf {ACL_IFCONF*}
46  */
47 ACL_API void acl_free_ifaddrs(ACL_IFCONF *ifconf);
48 
49 /**
50  * 扫描本机所有网卡 IP,将所有匹配指定模式的 IP 地址返回,目前仅支持 IPV4
51  * @param pattern {const char *} 指定的匹配模式,格式为:xxx.xxx.xxx.xxx 或
52  * xxx.xxx.xxx.xxx:port,如:192.168.*.*, 192.168.*.8:80,10.*.0.*:81
53  * @return {ACL_IFCONF *} 返回条件的结果集,如果 pattern 后面带有端口,则自动
54  * 将端口添加在每个 IP 后面,若返回对象非空,通过调用 acl_free_ifaddrs
55  * 释放该对象
56  */
57 ACL_API ACL_IFCONF *acl_ifconf_search(const char *pattern);
58 
59 #ifdef __cplusplus
60 }
61 #endif
62 
63 #endif
ACL_API void acl_free_ifaddrs(ACL_IFCONF *ifconf)
ACL_SOCKADDR saddr
Definition: acl_ifconf.h:18
ACL_API ACL_IFCONF * acl_ifconf_search(const char *pattern)
struct ACL_IFCONF ACL_IFCONF
char addr[128]
Definition: acl_ifconf.h:17
char name[256]
Definition: acl_ifconf.h:13
struct ACL_IFADDR ACL_IFADDR
int length
Definition: acl_ifconf.h:23
ACL_IFADDR * addrs
Definition: acl_ifconf.h:22
ACL_API ACL_IFCONF * acl_get_ifaddrs(void)