跳转至

if

if (Network Interface) 提供网络接口名称与索引之间的转换功能,支持获取本地所有网络接口信息及释放相关资源。

头文件清单

#include "open_source/musl/include/net/if.h"

接口清单

接口名称 功能简述
if_nametoindex 将网卡名称转换为对应的网卡索引序号
if_indextoname 将网卡索引序号转换为对应的网卡名称
if_nameindex 获取本地所有网络接口的名称与索引信息
if_freenameindex 释放由if_nameindex()动态分配的内存

Functions

if_nametoindex

unsigned int if_nametoindex (const char *)

头文件清单

#include "open_source/musl/include/net/if.h"

功能说明

  • 将网卡名称转换为对应的网卡索引序号
  • 若网卡名称存在,返回对应的非零索引值
  • 若网卡名称不存在或无效,返回0

入参

名称 参数类型 详细说明 约束取值范围
ifname const char * 网卡名称字符串指针 非NULL,指向以'\0'结尾的合法网卡名称字符串

返回值

  • 返回类型:unsigned int
返回值 文字含义 触发场景
非零值 网卡索引序号 网卡名称存在且有效
0 无效索引 网卡名称不存在或参数无效

if_indextoname

char *if_indextoname (unsigned int, char *)

头文件清单

#include "open_source/musl/include/net/if.h"

功能说明

  • 将网卡索引序号转换为对应的网卡名称
  • 若索引有效,将网卡名称写入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_nameindex (void)

头文件清单

#include "open_source/musl/include/net/if.h"

功能说明

  • 返回本地所有网络接口的名称与索引信息
  • 返回动态分配的struct if_nameindex结构数组,数组末尾以if_index为0的元素作为结束标记
  • 调用方使用完毕后须调用if_freenameindex()释放该数组

返回值

返回值 文字含义 触发场景
struct if_nameindex * 动态分配的接口名称索引数组指针 成功获取网络接口信息
NULL 获取失败 内存分配失败或无可用接口

if_freenameindex

void if_freenameindex (struct if_nameindex *)

头文件清单

#include "open_source/musl/include/net/if.h"

功能说明

  • 释放由if_nameindex()动态分配的struct if_nameindex结构数组及其内部内存
  • 调用if_nameindex()获取接口信息后,须调用本函数释放分配的内存区域
  • 传入的指针应为if_nameindex()返回的指针,释放后不应再访问该内存

入参

名称 参数类型 详细说明 约束取值范围
ptr struct if_nameindex * if_nameindex()返回的结构数组指针 应为if_nameindex()返回的有效指针

Structures

struct if_nameindex

struct if_nameindex {
    unsigned int if_index;
    char *if_name;
};

成员说明

成员名称 数据类型 描述
if_index unsigned int 网卡索引序号,0表示数组结束标记
if_name char * 网卡名称字符串指针

Macros

IF_NAMESIZE

#define IF_NAMESIZE 16