network_core.h
author tron
Mon, 17 Jan 2005 13:13:11 +0000
changeset 1051 be278201f830
parent 810 a1494b19bd2a
child 1332 0cae74c93b5d
permissions -rw-r--r--
(svn r1552) Make ottd compile on Zeta
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     1
#ifndef NETWORK_CORE_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     2
#define NETWORK_CORE_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     3
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     4
// Network stuff has many things that needs to be included
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     5
//  by default. All those things are in this file.
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     6
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     7
// =============================
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     8
// Include standard stuff per OS
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     9
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    10
// Windows stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    11
#if defined(WIN32)
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    12
#include <windows.h>
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    13
#include <winsock2.h>
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    14
#include <ws2tcpip.h>
792
baa707973bd5 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    15
baa707973bd5 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    16
#ifdef _MSC_VER
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    17
	#pragma comment (lib, "ws2_32.lib")
792
baa707973bd5 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    18
#endif //_MSC_VER
baa707973bd5 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    19
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    20
#if ! (defined(__MINGW32__) || defined(__CYGWIN__))
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    21
	#define ENABLE_NETWORK // On windows, the network is always enabled
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    22
	// Windows has some different names for some types..
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    23
	typedef SSIZE_T ssize_t;
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    24
#endif
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    25
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    26
#define GET_LAST_ERROR() WSAGetLastError()
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    27
#define EWOULDBLOCK WSAEWOULDBLOCK
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    28
// Windows has some different names for some types..
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    29
typedef unsigned long in_addr_t;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    30
typedef INTERFACE_INFO IFREQ;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    31
#endif // WIN32
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    32
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    33
// UNIX stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    34
#if defined(UNIX)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    35
#	define SOCKET int
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    36
#	define INVALID_SOCKET -1
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    37
typedef struct ifreq IFREQ;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    38
#	if !defined(__MORPHOS__) && !defined(__AMIGA__)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    39
#		define ioctlsocket ioctl
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    40
#	if !defined(BEOS_NET_SERVER)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    41
#		define closesocket close
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    42
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    43
#		define GET_LAST_ERROR() (errno)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    44
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    45
// Need this for FIONREAD on solaris
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    46
#	define BSD_COMP
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    47
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    48
// Includes needed for UNIX-like systems
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    49
#	include <unistd.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    50
#	include <sys/ioctl.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    51
#	if defined(__BEOS__) && defined(BEOS_NET_SERVER)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    52
#		include <be/net/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    53
#		include <be/kernel/OS.h> // snooze()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    54
#		include <be/net/netdb.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    55
		typedef unsigned long in_addr_t;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    56
#		define INADDR_NONE INADDR_BROADCAST
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    57
#	else
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    58
#		include <sys/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    59
#		include <netinet/in.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    60
#		include <netinet/tcp.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    61
#		include <arpa/inet.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    62
#		include <net/if.h>
1051
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    63
#		if !defined(SUNOS) && !defined(__MORPHOS__) && !defined(__BEOS__)
706
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    64
#			include <ifaddrs.h>
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    65
// If for any reason ifaddrs.h does not exist on a system, remove define below
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    66
//   and an other system will be used to fetch ips from the system
706
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    67
#			define HAVE_GETIFADDRS
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    68
#		else
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    69
#			define INADDR_NONE 0xffffffff
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    70
#		endif // SUNOS
1051
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    71
#		if defined(__BEOS__) && !defined(BEOS_NET_SERVER)
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    72
			// needed on Zeta
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    73
#			include <sys/sockio.h>
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    74
#		endif
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    75
#	endif // BEOS_NET_SERVER
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    76
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    77
/* GLibc 2.1 does not support GetIfAddr() */
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    78
#	if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 1)
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    79
#		undef HAVE_GETIFADDRS
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    80
		typedef uint32_t in_addr_t;
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    81
#	endif /* __GLIBC__ && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 1) */
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    82
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    83
#	include <errno.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    84
#	include <sys/time.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    85
#	include <netdb.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    86
#endif // UNIX
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    87
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    88
// OS/2 stuff
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    89
#if defined(__OS2__)
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    90
#	define SOCKET int
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    91
#	define INVALID_SOCKET -1
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    92
typedef struct ifreq IFREQ;
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    93
#	define ioctlsocket ioctl
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    94
#	define closesocket close
810
a1494b19bd2a (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
    95
#	define GET_LAST_ERROR() (sock_errno())
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    96
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    97
// Includes needed for OS/2 systems
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    98
#	include <types.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    99
#	include <unistd.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   100
#	include <sys/ioctl.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   101
#	include <sys/socket.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   102
#	include <netinet/in.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   103
#	include <netinet/tcp.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   104
#	include <arpa/inet.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   105
#	include <net/if.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   106
#	include <errno.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   107
#	include <sys/time.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   108
#	include <netdb.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   109
#	include <nerrno.h>
810
a1494b19bd2a (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   110
#	define INADDR_NONE 0xffffffff
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   111
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   112
typedef unsigned long in_addr_t;
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   113
#endif // OS/2
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   114
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   115
// MorphOS and Amiga stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   116
#if defined(__MORPHOS__) || defined(__AMIGA__)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   117
#	include <exec/types.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   118
#	include <proto/exec.h>		// required for Open/CloseLibrary()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   119
#	if defined(__MORPHOS__)
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   120
#		include <sys/filio.h> 	// FIO* defines
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   121
#		include <sys/sockio.h>  // SIO* defines
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   122
#	else // __AMIGA__
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   123
#		include	<proto/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   124
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   125
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   126
// Make the names compatible
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   127
#	define closesocket(s) CloseSocket(s)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   128
#	define GET_LAST_ERROR() Errno()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   129
#	define ioctlsocket(s,request,status) IoctlSocket((LONG)s,(ULONG)request,(char*)status)
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   130
#	define ioctl ioctlsocket
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   131
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   132
	typedef unsigned int in_addr_t;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   133
	extern struct Library *SocketBase;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   134
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   135
#	ifdef __AMIGA__
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   136
	// for usleep() implementation
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   137
	extern struct Device      *TimerBase;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   138
	extern struct MsgPort     *TimerPort;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   139
	extern struct timerequest *TimerRequest;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   140
#	endif
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   141
#endif // __MORPHOS__ || __AMIGA__
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   142
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   143
#endif // NETWORK_CORE_H