注意

这是最新开发分支的文档,可能包含尚未在发布版本中提供的功能。如果您在寻找特定版本的文档,请使用左侧的下拉菜单选择。

NetMgmt 示例#

简介#

本示例是网络管理 HAL 的综合测试,覆盖 WLAN STA、WLAN AP、LAN、物理 Wi-Fi 选择、动态设备名、默认网卡与 IP 配置接口。

源码位置:src/rtsmart/examples/peripheral/netmgmt/test_netmgmt.c

示例行为#

  • UTILS:默认网卡、逻辑接口名称解析、设备探测、ifconfig、设备列表

  • WLAN STA:自动重连、连接/断开、扫描、RSSI、MAC、AP 信息

  • WLAN AP:启动/停止、激活状态、国家码、连接 STA 管理

  • LAN:链路状态、MAC、静态 IP、DHCP 切换

示例中测试 SSID/密码为源码内宏(TEST_SSID/TEST_PASSWORD),实际使用请按现场网络修改源码。

关键接口#

  • netmgmt_utils_*

  • netmgmt_wlan_select_device()

  • netmgmt_wlan_sta_*

  • netmgmt_wlan_ap_*

  • netmgmt_lan_*

编译与运行#

cd src/rtsmart/examples/peripheral/netmgmt
make
./test_netmgmt

该示例无命令行参数。

多网卡使用要点#

驱动会自动注册 WLAN 与 USB LAN 设备。应用先使用 netmgmt_utils_get_dev_list() 查看当前设备;需要将逻辑接口与实际名称关联时, 调用 netmgmt_utils_get_netdev_name(),不要写死 eth0wlan0

多块 Wi-Fi 同时存在时,可在角色操作前选择物理设备:

char name[32];

if (netmgmt_wlan_select_device(NETMGMT_WLAN_DEVICE_USB,
                               RT_NET_DEV_WLAN_STA) != 0) {
    /* USB Wi-Fi 当前不可用 */
}
if (netmgmt_utils_get_netdev_name(RT_NET_DEV_WLAN_STA, name) == 0) {
    printf("selected STA netdev: %s\n", name);
}

如果不要求固定硬件,使用 NETMGMT_WLAN_DEVICE_AUTO。自动选择可在设备移除后 切换到同角色的其他 Wi-Fi 设备。

默认路由#

/* 将当前逻辑 LAN 对应设备设为首选上行。 */
char name[32];
if (netmgmt_utils_get_netdev_name(RT_NET_DEV_LAN, name) == 0) {
    netmgmt_utils_set_default_dev(name);
}

/* 清除人工首选,恢复自动选择。 */
netmgmt_utils_set_default_dev(NULL);

系统仅从已启用、链路已连接并取得非零 IP 与网关的 LAN/WLAN STA 中选择默认 路由。自动模式按 metric 选择,LAN 默认优先于 Wi-Fi STA。首选设备断开时会 临时切换到其他已就绪接口,恢复后再切回。

默认路由也是 IPv4 NAT 的上行选择依据。SoftAP 网络共享的编译选项、自动启停 和会话检查见 IPv4 NAT 使用指南

提示

接口说明与参数定义请参考 NetMgmt API 文档

评论列表
条评论
登录