Ok, I found out my answer when I removed #include <net/ip.h>. Apparently, I have two identical definitions of ip_rcv. Eugene <quote sender="Eugene Teo"> > I get this error message when I try to do this: > > int (*ip_rcv)(struct sk_buff *, struct net_device *, \ > struct packet_type*) = \ > (int (*)(struct sk_buff *, struct net_device *, \ > struct packet_type *))0x801c1990; > > But my program works when I use this: > > long (*o_mkdir)(const char *, int) = \ > (long (*)(const char *, int))0x8026d960; > > The declaration for ip_rcv is correct as defined in net/ip.h: > > int ip_rcv(struct sk_buff *skb, struct net_device *dev, \ > struct packet_type *pt) > > Any idea why? > > Eugene > -- > Eugene TEO @ Linux Users Group, Singapore <eugeneteo@lugs.org.sg> > GPG FP: D851 4574 E357 469C D308 A01E 7321 A38A 14A0 DDE5 > main(i){putchar(182623909>>(i-1)*5&31|!!(i<7)<<6)&&main(++i);} > -- Eugene TEO @ Linux Users Group, Singapore <eugeneteo@lugs.org.sg> GPG FP: D851 4574 E357 469C D308 A01E 7321 A38A 14A0 DDE5 main(i){putchar(182623909>>(i-1)*5&31|!!(i<7)<<6)&&main(++i);} -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/