1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/netfilter_arp/arp_tables.h>
static struct nf_hook_ops netfilter_ops_in;
static struct nf_hook_ops netfilter_ops_out;
static unsigned int main_hook(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff*)) {
printk(KERN_ALERT "ARP !\n");
return NF_ACCEPT;
}
static int __init mon_module_init(void) {
printk(KERN_ALERT "init. \n");
netfilter_ops_in.hook = main_hook;
netfilter_ops_in.pf = NF_ARP;
netfilter_ops_in.hooknum = NF_ARP_IN;
netfilter_ops_out.hook = main_hook;
netfilter_ops_out.pf = NF_ARP;
netfilter_ops_out.hooknum = NF_ARP_OUT;
netfilter_ops_out.priority = NF_INET_LOCAL_OUT;
nf_register_hook(&netfilter_ops_out);
return 0;
}
static void __exit mon_module_cleanup(void) {
printk(KERN_ALERT "exit.\n");
nf_unregister_hook(&netfilter_ops_out);
}
module_init(mon_module_init);
module_exit(mon_module_cleanup); |
Partager