文章目录
网络设备驱动
为什么从网络设备入手?
不为什么。
loopback 设备
我们要探访的第一个目的地位于源码目录的drivers/net/loopback.c
。200行左右的代码量很适合作为第一个分析的目标。执行
ifconfig lo
你就可以看到这个设备的信息。没错,它就是将所有发出数据包再发给自己的"回环"接口,网络地址127.0.0.1
。一起来看看这是怎么实现的吧。
向网络命名空间注册
从代码的最后一段可以看到,该设备通过pernet_operations
结构进行注册,其初始化函数为loopback_net_init()
函数。
/* Registered in net/core/dev.c */
struct pernet_operations __net_initdata loopback_net_ops = {
.init = loopback_net_init,
};
从注释看到,该结构体是在net/core/dev.c
进行注册的,过去看一下,果不其然
if (register_pernet_device(&loopback_net_ops)