<an article forwarded from comp.os.linux>
Holy deja-vu Batman! I ran into this same problem. The trouble is that
/usr/include/netinet/in.h is out of date/incompatible with the new kernel.
/usr/include/linux/in.h is the file you want to use since it comes with
the kernel sources to begin with. What I did was to get rid of
/usr/include/netinet/in.h and replace it with a symbolic link to
/usr/include/linux/in.h. Alternatively, you could just replace it
with a file that just says: #include <linux/in.h>. I believe that
/usr/include/netinet/tcp.h should get the same treatment.
-Bill Paul
ghod@drycas.club.cc.cmu.edu
(forwarded by Jim Niemira)
========================================================================
From: Brian K. Teravskis <brian%hercules.vware.mn.org@skeggi.vware.mn.org>
To fix this problem you need to edit each in.h file
and put mutually exclusive ifdef's around the offending
enum definition like so:
in file /usr/include/linux/in.h
#ifndef _NETINET_IN_H
/* Standard well-defined IP protocols. */
enum {
IPPROTO_IP = 0,
BLAH, BLAH, BLAH
};
#endif
and in file /usr/include/netinet/in.h:
#ifndef _LINUX_IN_H
/* Standard well-defined IP protocols. */
enum {
IPPROTO_IP = 0,
BLAH, BLAH, BLAH
};
#endif
That should fix the problem.. Well it did for me anyway.
I saw this fix on the NET channel by the way.
========================================================================
I myself followed Bill Paul's advice, and made symbolic links.
Everything compiles fine.
Thanks again.
Deeran