Hello Lukas, As you said i use following printk with for loop and included at hook_func1. for (i=0;i<5;i++) printk(KERN_DEBUG"Packet data is %02x\t",sb->data[i]); But i am not getting any output in /var/log/messages. Where am i wrong? I specified to print only 5 chars at start to check whether i can get packet dump or not? What else should i include in module code i posted already with above lines? regards, linux.lover On Wed, 22 Dec 2004 08:20:42 +0530, linux lover <linux.lover2004@xxxxxxxxx> wrote: > Hi all, > 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? > regards, > linux.lover > -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/