if
if (Network Interface) 提供网络接口名称与索引之间的转换功能,支持获取本地所有网络接口信息及释放相关资源。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| if_nametoindex | 将网卡名称转换为对应的网卡索引序号 |
| if_indextoname | 将网卡索引序号转换为对应的网卡名称 |
| if_nameindex | 获取本地所有网络接口的名称与索引信息 |
| if_freenameindex | 释放由if_nameindex()动态分配的内存 |
Functions
if_nametoindex
头文件清单
功能说明
- 将网卡名称转换为对应的网卡索引序号
- 若网卡名称存在,返回对应的非零索引值
- 若网卡名称不存在或无效,返回0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ifname | const char * | 网卡名称字符串指针 | 非NULL,指向以'\0'结尾的合法网卡名称字符串 |
返回值
- 返回类型:unsigned int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非零值 | 网卡索引序号 | 网卡名称存在且有效 |
| 0 | 无效索引 | 网卡名称不存在或参数无效 |
if_indextoname
头文件清单
功能说明
- 将网卡索引序号转换为对应的网卡名称
- 若索引有效,将网卡名称写入ifname指向的缓冲区并返回该指针
- 若索引无效,返回NULL并设置errno为ENXIO
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ifindex | unsigned int | 网卡索引序号 | 1 ~ 255 |
| ifname | char * | 存储网卡名称的缓冲区指针 | 非NULL,缓冲区大小不小于IF_NAMESIZE(16)字节 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| ifname | char * | 若转换成功,写入以'\0'结尾的网卡名称字符串 |
返回值
- 返回类型:char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ifname指针 | 转换成功,返回缓冲区指针 | 索引对应的网卡存在 |
| NULL | 转换失败 | 索引无效或无对应网卡,errno置为ENXIO |
if_nameindex
头文件清单
功能说明
- 返回本地所有网络接口的名称与索引信息
- 返回动态分配的struct if_nameindex结构数组,数组末尾以if_index为0的元素作为结束标记
- 调用方使用完毕后须调用if_freenameindex()释放该数组
返回值
- 返回类型:struct if_nameindex *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| struct if_nameindex * | 动态分配的接口名称索引数组指针 | 成功获取网络接口信息 |
| NULL | 获取失败 | 内存分配失败或无可用接口 |
if_freenameindex
头文件清单
功能说明
- 释放由if_nameindex()动态分配的struct if_nameindex结构数组及其内部内存
- 调用if_nameindex()获取接口信息后,须调用本函数释放分配的内存区域
- 传入的指针应为if_nameindex()返回的指针,释放后不应再访问该内存
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| ptr | struct if_nameindex * | if_nameindex()返回的结构数组指针 | 应为if_nameindex()返回的有效指针 |
Structures
struct if_nameindex
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| if_index | unsigned int | 网卡索引序号,0表示数组结束标记 |
| if_name | char * | 网卡名称字符串指针 |