免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2676 | 回复: 7
打印 上一主题 下一主题

[内核入门] sk_buff的修改问题 [复制链接]

论坛徽章:
2
天秤座
日期:2014-01-09 21:41:17双鱼座
日期:2014-02-20 21:50:54
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-20 10:28 |只看该作者 |倒序浏览
想在struct sk_buff中添加一个字段,如下
struct sk_buff{
        ....
        __u16                mac_len,
                                hdr_len,
                                mytcp_len; //mytcp首部
        ....
        sk_buff_data_t                network_header;
        sk_buff_data_t                mac_header;
        sk_buff_data_t      mytcp_header; //指向mytcp头部
        ....
};

结构体中添加了2个字段 mytcp_len,mytcp_header。 不知道为什么编译能通过,lilo加载内核时就出错


[<c188569f>] skb_release_data+0x8f/0xa0
....

想问下是内存空间分配不足的原因,还是 未初始化呢?
觉得在 alloc_skb中这些内容是不用关心的
还请大神帮忙

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-12-20 10:44 |只看该作者
回复 1# duoniK
最好不要修改sk_buff结构体,使用skb->cb那48个字节吧。

   

论坛徽章:
2
天秤座
日期:2014-01-09 21:41:17双鱼座
日期:2014-02-20 21:50:54
3 [报告]
发表于 2013-12-20 10:59 |只看该作者
cb[]是字符型的组数。 主要是想添加一个像mac_header这样指向一个头的指针字段。回复 2# 瀚海书香


   

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
4 [报告]
发表于 2013-12-20 11:04 |只看该作者
回复 3# duoniK
cb[]是字符型的组数。 主要是想添加一个像mac_header这样指向一个头的指针字段。

你可以用cb[]中的前四个字节(x86_32)表示一个指针啊。

另外,如果你非要想修改sk_buff的话也可以。你可以参考当年添加secmark的那个patch。

git log 984bc16c -p
commit 984bc16cc92ea3c247bf34ad667cfb95331b9d3c
Author: James Morris <jmorris@namei.org>
Date:   Fri Jun 9 00:29:17 2006 -0700

    [SECMARK]: Add secmark support to core networking.
   
    Add a secmark field to the skbuff structure, to allow security subsystems to
    place security markings on network packets.  This is similar to the nfmark
    field, except is intended for implementing security policy, rather than than
    networking policy.
   
    This patch was already acked in principle by Dave Miller.
   
    Signed-off-by: James Morris <jmorris@namei.org>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>

diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 23bad3b..fe2c58e 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -210,6 +210,7 @@ enum {
  *     @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
  *     @tc_index: Traffic control index
  *     @tc_verd: traffic control verdict
+ *     @secmark: security marking
  */

struct sk_buff {
@@ -289,6 +290,9 @@ struct sk_buff {
#ifdef CONFIG_NET_DMA
        dma_cookie_t            dma_cookie;
#endif
+#ifdef CONFIG_NETWORK_SECMARK
+       __u32                   secmark;
+#endif

   

论坛徽章:
2
天秤座
日期:2014-01-09 21:41:17双鱼座
日期:2014-02-20 21:50:54
5 [报告]
发表于 2013-12-20 11:21 |只看该作者
不是必须改。只是想在数据段前,tcp头部后添加一个额外的头--mytcp头,所以想向操作tcp头,ip头那样来操作这些字段
回复 4# 瀚海书香


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
6 [报告]
发表于 2013-12-20 12:34 |只看该作者
瀚海书香 发表于 2013-12-20 11:04
回复 3# duoniK

你可以用cb[]中的前四个字节(x86_32)表示一个指针啊。

这个补丁的修改方法好像跟直接改的效果差不多呢~~,除了增加宏控制,好像没有特别的地方呢?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
7 [报告]
发表于 2013-12-20 13:12 |只看该作者
回复 6# humjb_1983
那就照着改呗。如果不能启动的话,应该是代码写的问题,而不是实现方式问题

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
8 [报告]
发表于 2013-12-20 14:08 |只看该作者
瀚海书香 发表于 2013-12-20 13:12
回复 6# humjb_1983
那就照着改呗。如果不能启动的话,应该是代码写的问题,而不是实现方式问题

呵呵,原来是这个意思,感觉也应该是其他原因导致的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP