static int test_jprobes(void)
{
	int ret;
	struct jprobe *jps[2] = {&jp, &jp2};

	/*                                                     */
	jp.kp.addr = NULL;
	jp.kp.flags = 0;
	ret = register_jprobes(jps, 2);
	if (ret < 0) {
		printk(KERN_ERR "Kprobe smoke test failed: "
				"register_jprobes returned %d\n", ret);
		return ret;
	}

	jph_val = 0;
	ret = target(rand1);
	if (jph_val == 0) {
		printk(KERN_ERR "Kprobe smoke test failed: "
				"jprobe handler not called\n");
		handler_errors++;
	}

	jph_val = 0;
	ret = target2(rand1);
	if (jph_val == 0) {
		printk(KERN_ERR "Kprobe smoke test failed: "
				"jprobe handler2 not called\n");
		handler_errors++;
	}
	unregister_jprobes(jps, 2);

	return 0;
}
示例#2
0
_STATIC int __init packet_notify_init(void)
{
    int err;

    if ((err = register_jprobes(inet_jprobes, ARRAY_SIZE(inet_jprobes)))) {
        printk(KERN_ERR "%s: jprobes registration failed (error %d)\n",
               THIS_MODULE->name, err);
        return -1;
    }
    if ((err = nf_register_hooks(nf_inet_hooks, ARRAY_SIZE(nf_inet_hooks)))) {
        printk(KERN_ERR "%s: netfilter hook registration failed (error %d)\n",
               THIS_MODULE->name, err);
        unregister_jprobes(inet_jprobes, ARRAY_SIZE(inet_jprobes));
        return -1;
    }
    return 0;
}
示例#3
0
_STATIC void packet_notify_remove(void)
{
    unregister_jprobes(inet_jprobes, ARRAY_SIZE(inet_jprobes));
    nf_unregister_hooks(nf_inet_hooks, ARRAY_SIZE(nf_inet_hooks));
}