linux tap 源码分析,tun/tap 驱动源码分析

此驱动运行时可设置tun模式和tap模式,tun模式能取到IP数据包,无法获得ARP数据,而tap模式取到的是以太包,可以得到链路层以上的一切数据包。

由于项目需要使用tun驱动,而又不想不求甚解,从而阅读了驱动代码,想对此做一些记录,可以使自己理解的更为透彻,虽然代码并不多,但是涉及内核态编程,倘若追根溯源,恐怕需读完Linux协议栈代码了。

我阅读的代码取自Linux 2.6.34内核源码,路径 drivers\net\tun.c

驱动入口点,Linux驱动入口点不同Windows平台,入口函数都是DriverEntry,Linux平台需要通过module_init宏指定入口点(当然最终宏也会统一把函数转化成init_module作为入口点),当执行modprobe加载内核模块时由内核调用,module_exit宏指定清理函数,当执行rmmod时由内核调用。另外,通过 MODULE_* 一系列宏记录作者,驱动描述,以及协议信息。

module_init(tun_init);

module_exit(tun_cleanup);

MODULE_DESCRIPTION(DRV_DESCRIPTION);

MODULE_AUTHOR(DRV_COPYRIGHT);

MODULE_LICENSE("GPL");

MODULE_ALIAS_MISCDEV(TUN_MINOR);

这里指明了驱动程序的基本信息,MODULE_DESCRIPTION声明驱动描述,MODULE_AUTHOR声明作者,在程序开始已有定义。

#define DRV_DESCRIP

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值