- 论坛徽章:
- 0
|
我试了一下ip_rcv是没问题 可以打印,为什么链路层的包不能被打出来呢?
还有一个问题是 先调用我们注册的函数,还是调内核的函数,还是在在内核函数有钩子处理,才去调我们注册的函数,请高人指教一下
#include<linux/init.h>
#include<linux/kprobes.h>
#include<net/ip.h>
int my_handler (struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev){
struct iphdr *my_iph;
u32 S_ip,D_ip;
my_iph = ip_hdr(skb);
S_ip = my_iph->saddr;
D_ip = my_iph->daddr;
printk("\nSource IP: \n"NIPQUAD_FMT,NIPQUAD(S_ip));
jprobe_return();
}
static struct jprobe my_probe;
int myinit(void)
{
my_probe.kp.addr = (kprobe_opcode_t *)0xc04eab10;
my_probe.entry = (kprobe_opcode_t *)my_handler;
register_jprobe(&my_probe);
return 0;
}
void myexit(void)
{
unregister_jprobe(&my_probe);
printk("module removed\n ");
}
module_init(myinit);
module_exit(myexit);
/*Kernel module Comments*/
MODULE_AUTHOR("Manoj");
MODULE_DESCRIPTION("SIMPLE MODULE");
MODULE_LICENSE("GPL");
//MODULE_LICENSE("GPL v2"); |
|