:
1)使用alloc_netdev()来分配一个net_device结构体
2)设置网卡硬件相关的寄存器
3)设置net_device结构体的成员
4)使用register_netdev()来注册net_device...结构体
4.网卡驱动发包过程
在内核中,当上层要发送一个数据包时, 就会调用网络设备层里net_device数据结构的成员hard_start_xmit()将数据包发送出去。...skb_put(struct sk_buff *skb, unsigned int len);
//len:将数据区向下扩大len字节
使用skb_put()函数后,其中sk_buff缓冲区变化:
6.写虚拟网卡驱动...本节便开始来写一个简单的虚拟网卡驱动,也就是说不需要硬件相关操作,所以就没有中断函数,我们通过linux的ping命令来实现发包,然后在发包函数中伪造一个收的ping包函数,实现能ping通任何ip地址...上图的ping,之所以成功,是因为我们在发包函数中,伪造了一个来收包,通过netif_rx()来将收包上传给上层
使用ifconfig,可以看到这个网卡设备的统计信息共收发了6个包,以及收发的总数据
?