Skip to content

[Bug] netid.h 里面的NETIF_NAMESIZE 宏定义设置为6。会导致多网卡的时候,网卡添加后,用find函数找不到网卡。 #10891

@zhangjun1992

Description

@zhangjun1992

RT-Thread Version

5.0.2

Hardware Type/Architectures

hpm6300

Develop Toolchain

RT-Thread Studio

Describe the bug

1、在ethernetif.c里面的 netdev_add 函数中:
rt_strncpy(name, lwip_netif->name, NETIF_NAMESIZE);
result = netdev_register(netdev, name, (void *)lwip_netif);
拷贝名称的时候,name数组是定义的6字节。lwip_netif->name是定义的2字节数组。但是NETIF_NAMESIZE 确实6。当创建第一个网口后,再添加第二个网卡的时候,再次拷贝,就会出现把lwip_netif->name后面非0的数据也拷贝进了name。所以把name传给netdev_register 函数注册的时候,由于netdev_register 这个函数里面的name最大又是8,所以就导致名字不一致了。最终调用find函数去查找网卡的时候查找不到。
2、解决方案:NETIF_NAMESIZE 设置为2。也就是网卡名字应该是e0,u0,w1类似。2字节长度限制。或者修改lwip底层。改为6字节。

Image Image Image Image

Other additional context

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions