◆创建socket从内核接收数据包例子(PF_PACKET)
创建family为PF_PACKET的socket,接收eapol包;
l2->fd = socket(PF_PACKET, l2_hdr ? SOCK_RAW : SOCK_DGRAM, ETH_P_EAPOL);
找到网口名对应的index
os_memset(&ifr, 0, sizeof(ifr));
os_strlcpy(ifr.ifr_name, l2->ifname,
sizeof(ifr.ifr_name));
ioctl(l2->fd, SIOCGIFINDEX, &ifr)
通过网口的index,把socket绑定到ifname的网口
os_memset(&ll, 0, sizeof(ll));
ll.sll_family = PF_PACKET

本文介绍了Wi-Fi Supplicant如何使用socket与内核进行通信,涉及PF_PACKET和PF_INET类型的socket。通过PF_PACKET创建的socket用于接收EAPOL包,与特定网口绑定进行数据交互;PF_INET则用于控制网口,如开启或关闭。此外,文章还探讨了Supplicant中nl80211驱动的工作原理,包括nl_handle和ioctl_sock的初始化,以及如何通过nl消息精确控制内核中的网口处理命令。
最低0.47元/天 解锁文章
671

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



