mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-05 05:18:53 +08:00
52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#ifndef ACL_IFCONF_INCLUDE_H
|
|
#define ACL_IFCONF_INCLUDE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "stdlib/acl_define.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);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|