network_core.h
author matthijs
Wed, 22 Mar 2006 22:26:16 +0000
branch0.4.5
changeset 9958 bed516c67d61
parent 9956 341e963c63c4
child 4033 f108c895d7b6
permissions -rw-r--r--
(svn r4041) [Debian] Change next version number to 0.4.6 instead of 0.4.5.1.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 1812
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 1812
diff changeset
     2
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     3
#ifndef NETWORK_CORE_H
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     4
#define NETWORK_CORE_H
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     5
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     6
// Network stuff has many things that needs to be included
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     7
//  by default. All those things are in this file.
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     8
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     9
// =============================
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    10
// Include standard stuff per OS
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    11
1812
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    12
#ifdef ENABLE_NETWORK
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    13
9956
341e963c63c4 (svn r4038) -backport (3966, 3972 and 4019) -Fix: [OSX 10.3 and newer] [ 1157244 ] Can't save game if name contains german umlauts (loading savegames with certain chars still look a bit odd)
bjarni
parents: 2741
diff changeset
    14
#if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_2)
2741
011462ebb67b (svn r3286) -Fix: [OSX] 10.2 works again and universal binaries got 10.2 as target by default
bjarni
parents: 2482
diff changeset
    15
	// OSX 10.2 don't have socklen_t defined, so we will define it here
011462ebb67b (svn r3286) -Fix: [OSX] 10.2 works again and universal binaries got 10.2 as target by default
bjarni
parents: 2482
diff changeset
    16
	typedef int socklen_t;
011462ebb67b (svn r3286) -Fix: [OSX] 10.2 works again and universal binaries got 10.2 as target by default
bjarni
parents: 2482
diff changeset
    17
#endif
011462ebb67b (svn r3286) -Fix: [OSX] 10.2 works again and universal binaries got 10.2 as target by default
bjarni
parents: 2482
diff changeset
    18
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    19
// Windows stuff
2482
dffcca243dbc (svn r3008) [ 1247535 ] Native Support for Win64 (compile&run only) (michi_cc)
Darkvater
parents: 2186
diff changeset
    20
#if defined(WIN32) || defined(WIN64)
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    21
#include <winsock2.h>
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    22
#include <ws2tcpip.h>
2482
dffcca243dbc (svn r3008) [ 1247535 ] Native Support for Win64 (compile&run only) (michi_cc)
Darkvater
parents: 2186
diff changeset
    23
#include <windows.h>
792
d8a4164fdb14 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    24
1505
f09ef05540d0 (svn r2009) - VS.NET/VS6 removed all builds except for Release and Debug. Also add additional dependencies to the project file instead of in the header file itself.
darkvater
parents: 1466
diff changeset
    25
#if !(defined(__MINGW32__) || defined(__CYGWIN__))
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    26
	// Windows has some different names for some types..
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    27
	typedef SSIZE_T ssize_t;
1342
a1ca3e1df6bd (svn r1846) - Fix: VS6 project file (bociusz)
darkvater
parents: 1332
diff changeset
    28
	typedef int socklen_t;
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    29
#endif
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    30
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    31
#define GET_LAST_ERROR() WSAGetLastError()
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    32
#define EWOULDBLOCK WSAEWOULDBLOCK
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    33
// Windows has some different names for some types..
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    34
typedef unsigned long in_addr_t;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    35
typedef INTERFACE_INFO IFREQ;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    36
#endif // WIN32
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    37
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    38
// UNIX stuff
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    39
#if defined(UNIX)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    40
#	define SOCKET int
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    41
#	define INVALID_SOCKET -1
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    42
typedef struct ifreq IFREQ;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    43
#	if !defined(__MORPHOS__) && !defined(__AMIGA__)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    44
#		define ioctlsocket ioctl
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    45
#	if !defined(BEOS_NET_SERVER)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    46
#		define closesocket close
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    47
#	endif
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    48
#		define GET_LAST_ERROR() (errno)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    49
#	endif
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    50
// Need this for FIONREAD on solaris
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    51
#	define BSD_COMP
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    52
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    53
// Includes needed for UNIX-like systems
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    54
#	include <unistd.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    55
#	include <sys/ioctl.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    56
#	if defined(__BEOS__) && defined(BEOS_NET_SERVER)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    57
#		include <be/net/socket.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    58
#		include <be/kernel/OS.h> // snooze()
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    59
#		include <be/net/netdb.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    60
		typedef unsigned long in_addr_t;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    61
#		define INADDR_NONE INADDR_BROADCAST
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    62
#	else
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    63
#		include <sys/socket.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    64
#		include <netinet/in.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    65
#		include <netinet/tcp.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    66
#		include <arpa/inet.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    67
#		include <net/if.h>
1412
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    68
// According to glibc/NEWS, <ifaddrs.h> appeared in glibc-2.3.
1810
bf33a29287e5 (svn r2314) - Feature: [ 1187490 ] Patches for building on IRIX (jgilje)
Darkvater
parents: 1687
diff changeset
    69
#		if !defined(__sgi__) && !defined(SUNOS) && !defined(__MORPHOS__) && !defined(__BEOS__) \
1687
2265b1f3de0b (svn r2191) -Add: OpenTTD now compiles with dietlibc (Aard)
truelight
parents: 1507
diff changeset
    70
		   && !(defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 2)) && !defined(__dietlibc__)
1412
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    71
// If for any reason ifaddrs.h does not exist on your system, comment out
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    72
//   the following two lines and an alternative way will be used to fetch
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    73
//   the list of IPs from the system.
706
841f24d374ed (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    74
#			include <ifaddrs.h>
841f24d374ed (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    75
#			define HAVE_GETIFADDRS
1412
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    76
#		endif
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    77
#		if defined(SUNOS) || defined(__MORPHOS__) || defined(__BEOS__)
706
841f24d374ed (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    78
#			define INADDR_NONE 0xffffffff
1412
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    79
#		endif
1051
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    80
#		if defined(__BEOS__) && !defined(BEOS_NET_SERVER)
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    81
			// needed on Zeta
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    82
#			include <sys/sockio.h>
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    83
#		endif
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    84
#	endif // BEOS_NET_SERVER
789
85be14beeb57 (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    85
1812
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    86
#	if !defined(__BEOS__) && defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 1)
789
85be14beeb57 (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    87
		typedef uint32_t in_addr_t;
1412
189b1b7f98ed (svn r1916) Fix compilation on the glibc-2.2 systems. Part of the inspiration comes from patch 1149710 by Mr. Nobody. Also fixes the comment describing what to do if one's system doesn't have ifaddrs.h.
pasky
parents: 1343
diff changeset
    88
#	endif
789
85be14beeb57 (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    89
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    90
#	include <errno.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    91
#	include <sys/time.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    92
#	include <netdb.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    93
#endif // UNIX
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    94
1429
ae1a7e41277b (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    95
#ifdef __BEOS__
1441
43c2b48559fa (svn r1945) - CodeChange: re-commit of rev 1835: "Reduce the visibility of network_core.h (Tron)".
darkvater
parents: 1429
diff changeset
    96
	typedef int socklen_t;
1429
ae1a7e41277b (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    97
#endif
ae1a7e41277b (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    98
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    99
// OS/2 stuff
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   100
#if defined(__OS2__)
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   101
#	define SOCKET int
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   102
#	define INVALID_SOCKET -1
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   103
typedef struct ifreq IFREQ;
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   104
#	define ioctlsocket ioctl
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   105
#	define closesocket close
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   106
#	define GET_LAST_ERROR() (sock_errno())
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   107
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   108
// Includes needed for OS/2 systems
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   109
#	include <types.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   110
#	include <unistd.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   111
#	include <sys/ioctl.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   112
#	include <sys/socket.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   113
#	include <netinet/in.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   114
#	include <netinet/tcp.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   115
#	include <arpa/inet.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   116
#	include <net/if.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   117
#	include <errno.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   118
#	include <sys/time.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   119
#	include <netdb.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   120
#	include <nerrno.h>
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   121
#	define INADDR_NONE 0xffffffff
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   122
1507
2d09b13f049f (svn r2011) - Fix: [ 1162209 ] Fix OS/2 build (orudge) #2
darkvater
parents: 1505
diff changeset
   123
typedef int socklen_t;
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   124
typedef unsigned long in_addr_t;
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   125
#endif // OS/2
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   126
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   127
// MorphOS and Amiga stuff
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   128
#if defined(__MORPHOS__) || defined(__AMIGA__)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   129
#	include <exec/types.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   130
#	include <proto/exec.h>		// required for Open/CloseLibrary()
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   131
#	if defined(__MORPHOS__)
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   132
#		include <sys/filio.h> 	// FIO* defines
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   133
#		include <sys/sockio.h>  // SIO* defines
1343
481847e32573 (svn r1847) Adjustment for MorphOS to unbreak the build there and removal of some now obsolete preprocessor magic
tron
parents: 1342
diff changeset
   134
#		include <netinet/in.h>
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   135
#	else // __AMIGA__
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   136
#		include	<proto/socket.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   137
#	endif
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   138
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   139
// Make the names compatible
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   140
#	define closesocket(s) CloseSocket(s)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   141
#	define GET_LAST_ERROR() Errno()
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   142
#	define ioctlsocket(s,request,status) IoctlSocket((LONG)s,(ULONG)request,(char*)status)
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   143
#	define ioctl ioctlsocket
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   144
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   145
	typedef unsigned int in_addr_t;
1343
481847e32573 (svn r1847) Adjustment for MorphOS to unbreak the build there and removal of some now obsolete preprocessor magic
tron
parents: 1342
diff changeset
   146
	typedef long         socklen_t;
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   147
	extern struct Library *SocketBase;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   148
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   149
#	ifdef __AMIGA__
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   150
	// for usleep() implementation
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   151
	extern struct Device      *TimerBase;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   152
	extern struct MsgPort     *TimerPort;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   153
	extern struct timerequest *TimerRequest;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   154
#	endif
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   155
#endif // __MORPHOS__ || __AMIGA__
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   156
1332
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   157
static inline bool SetNonBlocking(int d)
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   158
{
1466
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   159
	#ifdef WIN32
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   160
	u_long nonblocking = 1;
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   161
	#else
1332
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   162
	int nonblocking = 1;
1466
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   163
	#endif
1332
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   164
	#if defined(__BEOS__) && defined(BEOS_NET_SERVER)
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   165
	return setsockopt(d, SOL_SOCKET, SO_NONBLOCK, &nonblocking, sizeof(nonblocking)) == 0;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   166
	#else
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   167
	return ioctlsocket(d, FIONBIO, &nonblocking) == 0;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   168
	#endif
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   169
}
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   170
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   171
static inline bool SetNoDelay(int d)
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   172
{
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   173
	// XXX should this be done at all?
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   174
	#if !defined(BEOS_NET_SERVER) // not implemented on BeOS net_server
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   175
	int b = 1;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   176
	// The (const char*) cast is needed for windows
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   177
	return setsockopt(d, IPPROTO_TCP, TCP_NODELAY, (const char*)&b, sizeof(b)) == 0;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   178
	#else
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   179
	return true;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   180
	#endif
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   181
}
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   182
1812
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   183
#endif /* ENABLE_NETWORK */
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   184
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   185
#endif /* NETWORK_CORE_H */