深入了解Linux设备驱动与网络设备
1. 网络设备概述
网络设备与普通设备不同,它不通过设备节点访问,也没有主设备号和次设备号。内核会根据字符串和实例编号为网络设备分配名称。例如,网络驱动注册接口的示例代码如下:
my_netdev = alloc_netdev(0, "net%d", NET_NAME_UNKNOWN, netdev_setup);
ret = register_netdev(my_netdev);
首次调用时会创建名为 net0 的网络设备,第二次调用创建 net1 ,依此类推。常见的网络设备名称还有 lo 、 eth0 和 wlan0 ,不过设备管理器(如 udev )可能会更改这些名称。
通常,网络接口名称仅在使用 ip 和 ifconfig 等工具配置网络、建立网络地址和路由时使用。之后,通过打开套接字与网络驱动间接交互,由网络层决定如何将数据包路由到正确的接口。
也可以从用户空间直接访问网络设备,通过创建套接字并使用 include/linux/sockios.h 中列出的 ioctl 命令。以下是一个使用 SIOCGIFHWADDR 查询驱动硬件(MAC)地址的示例代码:
超级会员免费看
订阅专栏 解锁全文
1804

被折叠的 条评论
为什么被折叠?



