免费注册 查看新帖 |

Chinaunix

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

skbuff的数据问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-08 10:41 |只看该作者 |倒序浏览
在netfilter里面,注册一个hook函数如下:

static struct nf_hook_ops _ops[] __read_mostly = {
        {
        .hook = _local_in,
        .owner = THIS_MODULE,
        .pf = PF_INET,
        .hooknum = NF_INET_LOCAL_IN,
        .priority = NF_IP_PRI_LAST,
        }
};

这里设定了NF_IP_PRI_LAST,那接受到的数据包里面的sk_buff是否是已经分片重组过了呢?

另外一个问题:
在netfilter的hook里面使用内核的
textsearch_prepare("kmp", pattern, strlen(pattern),GFP_KERNEL, TS_AUTOLOAD);
textsearch_find_continuous(conf, &state, text, strlen(text));
会导致内核报错,但是结果仍然能够正常执行,这个kmp算法有人用过吗?在内核模块里面。

求高人指教指教

论坛徽章:
0
2 [报告]
发表于 2012-04-08 11:17 |只看该作者
就是想要使用内核的textsearch方法, 可是它会报告出错,怎么才是正确使用?我是根据了textsearch那个文件里面的使用方法用的。
报的错是这样的L

  789.408128] BUG: scheduling while atomic: kworker/0:0/0/0x10000100
[  789.408134] Modules linked in: ts_kmp contexfilter rfcomm bnep parport_pc ppdev binfmt_misc arc4 radeon iwlagn i915 mac80211 snd_hda_codec_conexant snd_hda_intel snd_hda_codec ttm snd_hwdep snd_pcm thinkpad_acpi drm_kms_helper snd_seq_midi drm snd_rawmidi uvcvideo snd_seq_midi_event snd_seq cfg80211 btusb r852 videodev joydev sm_common bluetooth nand snd_timer nand_ids pcmcia snd_seq_device v4l2_compat_ioctl32 nand_bch bch snd psmouse yenta_socket nand_ecc pcmcia_rsrc mtd snd_page_alloc pcmcia_core mei(C) serio_raw soundcore i2c_algo_bit tpm_tis wmi nvram video lp parport usbhid hid firewire_ohci firewire_core crc_itu_t sdhci_pci sdhci ahci libahci e1000e [last unloaded: contexfilter]
[  789.408264] CPU 1
[  789.408267] Modules linked in: ts_kmp contexfilter rfcomm bnep parport_pc ppdev binfmt_misc arc4 radeon iwlagn i915 mac80211 snd_hda_codec_conexant snd_hda_intel snd_hda_codec ttm snd_hwdep snd_pcm thinkpad_acpi drm_kms_helper snd_seq_midi drm snd_rawmidi uvcvideo snd_seq_midi_event snd_seq cfg80211 btusb r852 videodev joydev sm_common bluetooth nand snd_timer nand_ids pcmcia snd_seq_device v4l2_compat_ioctl32 nand_bch bch snd psmouse yenta_socket nand_ecc pcmcia_rsrc mtd snd_page_alloc pcmcia_core mei(C) serio_raw soundcore i2c_algo_bit tpm_tis wmi nvram video lp parport usbhid hid firewire_ohci firewire_core crc_itu_t sdhci_pci sdhci ahci libahci e1000e [last unloaded: contexfilter]
[  789.408375]
[  789.408381] Pid: 0, comm: kworker/0:0 Tainted: G         C  3.1.10 #2 LENOVO 2784A33/2784A33
[  789.408391] RIP: 0010:[<ffffffff8137a19f>]  [<ffffffff8137a19f>] arch_local_irq_enable+0x8/0xd
[  789.408410] RSP: 0018:ffff880116335e68  EFLAGS: 00000292
[  789.408415] RAX: 000000b7cc627ec2 RBX: ffffffff815f38ad RCX: 000000b7cc61c1a8
[  789.408421] RDX: 000000b7cc627ec2 RSI: 0000000000000053 RDI: 000000b7cc627e6f
[  789.408426] RBP: ffff880116335e68 R08: ffff880116335fd8 R09: 000000000000001b
[  789.408432] R10: 0000000000000000 R11: 0000000000000000 R12: ffff880116335dd8
[  789.408437] R13: ffffffff815f85de R14: ffff880116335e68 R15: ffff880096e88800
[  789.408444] FS:  0000000000000000(0000) GS:ffff88011bc80000(0000) knlGS:0000000000000000
[  789.408450] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[  789.408455] CR2: 00007f9e89d00000 CR3: 000000004e06d000 CR4: 00000000000406e0
[  789.408461] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  789.408466] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[  789.408473] Process kworker/0:0 (pid: 0, threadinfo ffff880116334000, task ffff880116338000)
[  789.408478] Stack:
[  789.408482]  ffff880116335e98 ffffffff8137ac42 ffff880096e88820 ffff880096e888f0
[  789.408491]  0000000000000000 0000000000000000 ffff880116335ee8 ffffffff814b22d0
[  789.408500]  ffffffff81cbd3c0 0000000000000001 0000000000000000 ffff880116335fd8
[  789.408510] Call Trace:
[  789.408520]  [<ffffffff8137ac42>] acpi_idle_enter_simple+0xcc/0x102
[  789.408530]  [<ffffffff814b22d0>] cpuidle_idle_call+0xc0/0x1d0
[  789.408541]  [<ffffffff81012225>] cpu_idle+0xc5/0x120
[  789.408550]  [<ffffffff815de949>] start_secondary+0x1f7/0x1fe
[  789.408555] Code: 5e 5d c3 90 55 48 89 e5 66 66 66 66 90 0f 09 66 66 90 66 90 5d c3 55 48 89 e5 fa 66 66 90 66 66 90 5d c3 55 48 89 e5 fb 66 66 90
[  789.408612]  66 90 5d c3 55 48 89 e5 66 66 66 66 90 48 8b 15 7c e3 a4 00
[  789.408641] Call Trace:
[  789.408648]  [<ffffffff8137ac42>] acpi_idle_enter_simple+0xcc/0x102
[  789.408655]  [<ffffffff814b22d0>] cpuidle_idle_call+0xc0/0x1d0
[  789.408663]  [<ffffffff81012225>] cpu_idle+0xc5/0x120
[  789.408670]  [<ffffffff815de949>] start_secondary+0x1f7/0x1fe

论坛徽章:
0
3 [报告]
发表于 2012-04-10 17:59 |只看该作者
static struct nf_hook_ops ip_conntrack_defrag_local_out_ops = {
        .hook                = ip_conntrack_defrag,
        .owner                = THIS_MODULE,
        .pf                = PF_INET,
        .hooknum        = NF_IP_LOCAL_OUT,
        .priority        = NF_IP_PRI_CONNTRACK_DEFRAG,
};

论坛徽章:
0
4 [报告]
发表于 2012-04-11 10:02 |只看该作者
回复 3# lujian19861986


   
能详细说一说吗?不是很懂您的意思噢,,,

我打算做的是在接受到的分包里面, 重组成一个完整的包,这样来查看这个完整包的所有数据 这样子

论坛徽章:
0
5 [报告]
发表于 2012-04-25 11:02 |只看该作者
使用 kmp 前你需要初始化
建议参考 xt_string.c 和 xt_layer7.c 的实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP