免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123456
最近访问板块 发新帖
楼主: ubuntuer

教你修改以及重构skb [复制链接]

论坛徽章:
2
天秤座
日期:2014-01-09 21:41:17双鱼座
日期:2014-02-20 21:50:54
发表于 2013-12-20 11:17 |显示全部楼层
你好,想问下在sk_buff中添加字段,我在skbuff.h文件中给sk_buff添加了2各字段。编译没有问题,但是加载内核时 总是死掉,想问下你是怎样解决的,谢谢
http://bbs.chinaunix.net/forum.p ... ;page=1#pid24083335
回复 1# ubuntuer


   

论坛徽章:
0
发表于 2014-02-09 22:33 |显示全部楼层
        我们在内核态下发送数据包有两种方式:调用NF_HOOK函数让构造的数据包在Netfilter框架下继续处理 和 调用dev_queue_xmit函数直接将数据包发送出去。既然在OUTPUT 和 POSTROUTING点无法,mac指针为NULL,说明无法利用第一种方法修改MAC地址。但是第二种方法却是直接将数据包(L2--L7)发送到制定的网卡上,即使数据包的源MAC与网卡的MAC不相同,也可以。
       至于NetFilter框架下MAC地址添加的时机,小弟还不太清楚。
       刚学Netfilter不久,错误之处还请指教

回复 39# jinxinxin163


   

论坛徽章:
0
发表于 2014-03-07 10:06 |显示全部楼层
本科生到这种水平,很不错。赞一个。

论坛徽章:
0
发表于 2015-05-04 16:08 |显示全部楼层
不知道有没有人回复,  我有两个问题!!

一个是已经有人提了, 但是没有人回答:

卖萌犯法 发表于 2013-06-21 11:01
很好的帖子,不过有个地方有问题:

第三段代码99行:


另一个是使用skb_copy, 但是最终返回NF_STOLEN, 这样做是不是不对啊!!   原来的skb什么时候free呢!!!

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2015-05-04 18:34 |显示全部楼层
回复 54# fengidri


   目测skb/STOLEN内存泄漏,可以通过观察skb slab的个数确认一下。

   dev引用计数同样缺少对应的dev_put,而且需要put两次。

论坛徽章:
0
发表于 2015-05-05 08:57 |显示全部楼层
回复 55# nswcfd


    为什么是put两次呢? 我感觉只要把99行的hold改成put就可以了吧!!!

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2015-05-05 09:43 |显示全部楼层
第82行还有dev_get_by_name

论坛徽章:
0
发表于 2015-05-05 11:23 |显示全部楼层
回复 57# nswcfd


    我原来想的是, 因为有82行的dev_get_by_name 所以要有一个次put. 从你的回复来看, 是不是说对于之前的那个原始的skb也要有一次put.

论坛徽章:
0
发表于 2016-04-06 21:45 |显示全部楼层
厉害!!!想来我也是研究生,差距太大了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP