Re: Problem with kernel modules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Sandeep,
 I changed printk to

printk(KERN_DEBUG "ICMP cksum=%d,& IP
cksum=%d\n",(unsigned short
)sb->h.icmph->checksum,(unsigned short
)sb->nh.iph->check);

but still getting errors. does that mean accessing
directly in skbuff is not allowed?
regards,
cranium.

--- Sandeep <sandeep@xxxxxxxxxxxxxxx> wrote:
> 
> ----- Original Message -----
> From: cranium2003 <cranium2003@xxxxxxxxx>
> To: kernel newbies <kernelnewbies@xxxxxxxxxxxx>
> Sent: Monday, May 02, 2005 10:58 AM
> Subject: Problem with kernel modules
> 
> 
> > Hello,
> >   I have written a kernel module that accesses
> skbuff
> > and depending on whether packet is icmp or not it
> > prints IP checksum and ICMP checksum. But I am
> getting
> >
> > sum.c: In function `hook_func1':
> > sum.c:24: dereferencing pointer to incomplete type
> > sum.c: In function `hook_func2':
> > sum.c:40: dereferencing pointer to incomplete type
> 
> Hey just check out whether u r typecasting it
> properly when dereferencing in
> case ur using Void Pointers.
> sandeep
> 
> >   Whats wrong?
> > regards,
> > cranium.
> >
> > *************************************************
> >
> > #define __KERNEL__
> > #define MODULE
> >
> > #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,nfho2;
> >
> > 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;
> >
> >       if(sb->nh.iph->protocol==1)
> > {
> > printk(KERN_DEBUG"ICMP packet\n");
> > printk(KERN_DEBUG "ICMP cksum=%d,& IP
> >
>
cksum=%d\n",sb->h.icmph->checksum,sb->nh.iph->check);
> > }
> >
> > return NF_ACCEPT;
> > }
> >
> >
> > unsigned int hook_func2(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;
> > if(sb->nh.iph->protocol==1)
> > {
> > printk(KERN_DEBUG"ICMP packet\n");
> > printk(KERN_DEBUG "ICMP cksum=%d,& IP
> >
>
cksum=%d\n",sb->h.icmph->checksum,sb->nh.iph->check);
> > }
> >      return NF_ACCEPT;
> > }
> >
> > static int __init init(void)
> > {
> >   nfho1.hook     = hook_func1;
> >   nfho1.hooknum  = NF_IP_POST_ROUTING;
> >   nfho1.pf       = PF_INET;
> >   nfho1.priority = NF_IP_PRI_FIRST;
> >   nf_register_hook(&nfho1);
> >
> >   nfho2.hook     = hook_func2;
> >   nfho2.hooknum  = NF_IP_PRE_ROUTING;
> >   nfho2.pf       = PF_INET;
> >   nfho2.priority = NF_IP_PRI_FIRST;
> >   nf_register_hook(&nfho2);
> >   return 0;
> > }
> >
> > static void __exit fini(void)
> > {
> >   nf_unregister_hook(&nfho1);
> >   nf_unregister_hook(&nfho2);
> > }
> > module_init(init);
> > module_exit(fini);
> > MODULE_LICENSE("GPL");
> >
> >
>
*************************************************************
> >
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around
> > http://mail.yahoo.com
> >
> > --
> > Kernelnewbies: Help each other learn about the
> Linux kernel.
> > Archive:      
> http://mail.nl.linux.org/kernelnewbies/
> > FAQ:           http://kernelnewbies.org/faq/
> 
> 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux