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; }
_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; }
_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)); }