tags:

views:

31

answers:

3

I am getting this warning when compiling

In file included from server.c:48:
unixwin.h:23:1: warning: "IPPROTO_TCP" redefined
In file included from server.c:42:
/usr/include/netinet/in.h:45:1: warning: this is the location of the previous definition

below is the sections refered to in the error:

file unixwin.h

15
16 #ifndef FALSE
17 #define FALSE 0
18 #endif
19
20 #define SOCKADDR_IN struct sockaddr_in
21 #define SOCKET_ERROR -1
22 #define INVALID_SOCKET (SOCKET)(~0)
23 #define IPPROTO_TCP 6
24 #define LPSOCKADDR struct sockaddr *
25 #define GMEM_MOVEABLE 1
26 #define GMEM_FIXED 2
27 #define GMEM_SHARE 3
28 #define GPTR 4
29 #define LPHOSTENT struct hostent *
30 #define LPIN_ADDR struct in_addr *
31
32 #ifndef UINT
33 #define UINT unsigned int
34 #endif
35

In file server.c

37
38 #ifdef UNIX
39 #include <sys/types.h>
40 #include <sys/socket.h>
41 #include <sys/ioctl.h>
42 #include <netinet/in.h>
43 #include <arpa/inet.h>
44 #include <time.h>
45 #ifndef FIONREAD
46 #include <sys/filio.h>
47 #endif
48 #include "unixwin.h"
49 #endif
50

And in file /usr/include/netinet/in.h

30
31 /* Standard well-defined IP protocols.  */
32 enum
33   {
34     IPPROTO_IP = 0,        /* Dummy protocol for TCP.  */
35 #define IPPROTO_IP              IPPROTO_IP
36     IPPROTO_HOPOPTS = 0,   /* IPv6 Hop-by-Hop options.  */
37 #define IPPROTO_HOPOPTS         IPPROTO_HOPOPTS
38     IPPROTO_ICMP = 1,      /* Internet Control Message Protocol.  */
39 #define IPPROTO_ICMP            IPPROTO_ICMP
40     IPPROTO_IGMP = 2,      /* Internet Group Management Protocol. */
41 #define IPPROTO_IGMP            IPPROTO_IGMP
42     IPPROTO_IPIP = 4,      /* IPIP tunnels (older KA9Q tunnels use 94).  */
43 #define IPPROTO_IPIP            IPPROTO_IPIP
44     IPPROTO_TCP = 6,       /* Transmission Control Protocol.  */
45 #define IPPROTO_TCP             IPPROTO_TCP
46     IPPROTO_EGP = 8,       /* Exterior Gateway Protocol.  */
47 #define IPPROTO_EGP             IPPROTO_EGP
48     IPPROTO_PUP = 12,      /* PUP protocol.  */
49 #define IPPROTO_PUP             IPPROTO_PUP
50     IPPROTO_UDP = 17,      /* User Datagram Protocol.  */
51 #define IPPROTO_UDP             IPPROTO_UDP
52     IPPROTO_IDP = 22,      /* XNS IDP protocol.  */
53 #define IPPROTO_IDP             IPPROTO_IDP
54     IPPROTO_TP = 29,       /* SO Transport Protocol Class 4.  */
55 #define IPPROTO_TP              IPPROTO_TP
56     IPPROTO_IPV6 = 41,     /* IPv6 header.  */
57 #define IPPROTO_IPV6            IPPROTO_IPV6
58     IPPROTO_ROUTING = 43,  /* IPv6 routing header.  */
59 #define IPPROTO_ROUTING         IPPROTO_ROUTING
60     IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header.  */

Can you say where the text is wrong thanks sORRY this only sections of the files where the error accurs The unixwin.h and server.c are files that the runtime company supply us to link the runtime to the current linux glibc version and in.h is the linux file that comes with OpenSUSE 11.0 If you look at the error and the line numbers that is what i selected and pasted here. Thank for all the help

+1  A: 

You are redefining IPPROTO_TCP in unixwin.h line 23, a macro already available from netinet/in.h.

You only need to include netinet/in.h, you don't need to define it again to be 6.

Scharron
+1  A: 

Add this

#ifndef IPPROTO_TCP
#define IPPROTO_TCP 6
#endif

in your file file unixwin.h.

DumbCoder
Thanks this helped i think others would have worked as well but this was the easiest to dothanks
Mark Bosch
+2  A: 

What are you trying to do with file "unixwin.h"? It looks like it's full of #defines that should be coming from system header files.

I would try removing the

#define IPPROTO_TCP

...and inserting...

#include <netinet/in.h>
Roddy
@Roddy Deleted.
DumbCoder