dumping packet data
I want to print skb->data contents in kernel module using netfilter module at
NF_HOOK NF_IP_LOCAL_OUT. How can i do that? I know how to write netfilter
module like this one
#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
static struct nf_hook_ops nfho1;
static unsigned char *packet_ip = "\x7f\x00\x00\x0b";
unsigned int hook_func1(unsigned int hooknum,struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
struct sk_buff *sb = *skb;
printk(KERN_DEBUG "calling hook_func at NF_IP_LOCAL_OUT\n");
if (sb->nh.iph->saddr == *(unsigned int *)packet_ip)
{
/*CODE REQUIRE TO BE INCLUDED HERE*/
return NF_ACCEPT;
}
else
return NF_ACCEPT;
}
static int __init init(void)
{
nfho1.hook = hook_func1;
nfho1.hooknum = NF_IP_LOCAL_OUT;
nfho1.pf = PF_INET;
nfho1.priority = NF_IP_PRI_FIRST;
nf_register_hook(&nfho1);
return 0;
}
static void __exit fini(void)
{
nf_unregister_hook(&nfho1);
}
module_init(init);
module_exit(fini);
MODULE_LICENSE("GPL");
But how can i print those HEX codes in packet?
|