1/* The list of network interface device */

2struct netdev *netdev_list;

3/* The default network interface device */

4struct netdev *netdev_default;

为了方便网卡的管理和控制,netdev 组件中提供网卡列表用于统一管理各个网卡设备,系统中每个网卡在初始化时会创建和注册网卡对象到 netdev 组件网卡列表中。

网卡列表中有且只有一个默认网卡,一般为系统中第一个注册的网卡,可以通过 netdev_set_default() 函数设置默认网卡,默认网卡的主要作用是确定优先使用的进行网络通讯的网卡类型,方便网卡的切换和网卡信息的获取。

1.3 网卡注册

1int netdev_register(struct netdev *netdev, const char *name, void *user_data);

参数描述

netdev网卡对象

name网卡名称

user_data用户使用数据

返回——

0网卡注册成功

-1网卡注册失败

将网卡挂载到网卡列表(netdev_list)和默认网卡(netdev_default)。

该函数不需要在用户层调用,一般为网卡驱动初始化完成之后自动调用,如 esp8266 网卡的注册在 esp8266 设备网络初始化之后自动完成。

1.2 注销网卡

该函数可以在网卡使用时,注销网卡的注册,即从网卡列表中删除对应网卡,注销网卡的接口如下所示:

1int netdev_unregister(struct netdev *netdev);

1.3 获取网卡对象

通过状态获取第一个匹配的网卡对象

1struct netdev *netdev_get_first_by_flags(uint16_t flags);

获取第一个指定协议簇类型的网卡对象

1struct netdev *netdev_get_by_family(int family);

了解协议栈的相关概念

通过 IP 地址获取网卡对象

1struct netdev *netdev_get_by_ipaddr(ip_addr_t *ip_addr);

该函数主要用于 bind 函数绑定指定 IP 地址时获取网卡状态信息的情况。

通过名称获取网卡对象

1struct netdev *netdev_get_by_name(const char *name);

1.4 设置网卡信息

设置默认网卡

1void netdev_set_default(struct netdev *netdev);

设置网卡 up/down 状态

1int netdev_set_up(struct netdev *netdev);

2int netdev_set_down(struct netdev *netdev);

设置网卡 DHCP 功能状态

DHCP 即动态主机配置协议,如果开启该网卡 DHCP 功能将无法设置该网卡 IP 、网关和子网掩码地址等信息,如果关闭该功能则可以设置上述信息。

1int netdev_dhcp_enabled(struct netdev *netdev, rt_bool_t is_enabled);

设置网卡地址信息

设置指定网卡地址 IP 、网关和子网掩码地址,需要在网卡关闭 DHCP 功能状态使用。

1/* 设置网卡 IP 地址 */

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查