1、回环网卡:它是一种虚拟设备,原理是自发自收,形成逻辑上的回路
2、回环网卡驱动设计步骤
设备初始化:
1、分配网卡设备:struct net_device *dev = alloc_netdev(0, "lo", loopback_setup);
参数1:私有空间
设备名:"lo"
回调函数:用来初始化设备,初始化数据包格式,关联操作函数集合
2、向内核注册网络设备:
err = register_netdev(dev);
错误跳转到注销:free_netdev(dev);
3、将注册好的设备回传给内核,不然会报错
net->loopback_dev = dev;
初始化回调函数 static void loopback_setup(struct net_device *dev)
1、 初始化数据格式 dev->mtu(网卡最大接收包长度)、网卡类型标志 dev->flags等
2、 关联操作函数:
dev->header_ops = ð_header_ops; /*这个函数是内核提供的,
用来构造数据包包头*/
dev->netdev_ops = &loopback_ops; /*网卡操作集合*/
编写网卡操作集合
1、关联集合
/*操作函数集合*/
static const struct net_device_ops loopback_ops = {
.ndo_start_xmit= loopback_xmit, /*