network_core.h
author bjarni
Wed, 27 Jul 2005 10:11:45 +0000
changeset 2206 4518d18a5f58
parent 2186 db48cf29b983
child 2482 374f6395847d
permissions -rw-r--r--
(svn r2724) -Fix: [Autoreplace] made the pulldown menu read GetPlayer(_local_player)->avail_railtypes - this removes the need for updating this code if we add more railtypes and it also allows the menu to show maglev when monorail is not available
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1812
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1812
diff changeset
     2
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     3
#ifndef NETWORK_CORE_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     4
#define NETWORK_CORE_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     5
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     6
// Network stuff has many things that needs to be included
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     7
//  by default. All those things are in this file.
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     8
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
// Include standard stuff per OS
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    11
1812
26b041a529e9 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    12
#ifdef ENABLE_NETWORK
26b041a529e9 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    13
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    14
// Windows stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    15
#if defined(WIN32)
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    16
#include <windows.h>
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    17
#include <winsock2.h>
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    18
#include <ws2tcpip.h>
792
baa707973bd5 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    19
1505
07a27f3cb4f9 (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
    20
#if !(defined(__MINGW32__) || defined(__CYGWIN__))
796
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    21
	// Windows has some different names for some types..
ffa693752831 (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    22
	typedef SSIZE_T ssize_t;
1342
f14dc75d01be (svn r1846) - Fix: VS6 project file (bociusz)
darkvater
parents: 1332
diff changeset
    23
	typedef int socklen_t;
796
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>
1412
1886a750ccf0 (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
    63
// According to glibc/NEWS, <ifaddrs.h> appeared in glibc-2.3.
1810
8a574d47872b (svn r2314) - Feature: [ 1187490 ] Patches for building on IRIX (jgilje)
Darkvater
parents: 1687
diff changeset
    64
#		if !defined(__sgi__) && !defined(SUNOS) && !defined(__MORPHOS__) && !defined(__BEOS__) \
1687
521050dcd91e (svn r2191) -Add: OpenTTD now compiles with dietlibc (Aard)
truelight
parents: 1507
diff changeset
    65
		   && !(defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 2)) && !defined(__dietlibc__)
1412
1886a750ccf0 (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
    66
// If for any reason ifaddrs.h does not exist on your system, comment out
1886a750ccf0 (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
    67
//   the following two lines and an alternative way will be used to fetch
1886a750ccf0 (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
//   the list of IPs from the system.
706
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    69
#			include <ifaddrs.h>
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    70
#			define HAVE_GETIFADDRS
1412
1886a750ccf0 (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
#		endif
1886a750ccf0 (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
#		if defined(SUNOS) || defined(__MORPHOS__) || defined(__BEOS__)
706
06916692622b (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    73
#			define INADDR_NONE 0xffffffff
1412
1886a750ccf0 (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
    74
#		endif
1051
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    75
#		if defined(__BEOS__) && !defined(BEOS_NET_SERVER)
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    76
			// needed on Zeta
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    77
#			include <sys/sockio.h>
be278201f830 (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    78
#		endif
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    79
#	endif // BEOS_NET_SERVER
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    80
1812
26b041a529e9 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    81
#	if !defined(__BEOS__) && defined(__GLIBC__) && (__GLIBC__ <= 2) && (__GLIBC_MINOR__ <= 1)
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    82
		typedef uint32_t in_addr_t;
1412
1886a750ccf0 (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
    83
#	endif
789
3a12c1eadc3f (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    84
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    85
#	include <errno.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    86
#	include <sys/time.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    87
#	include <netdb.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    88
#endif // UNIX
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    89
1429
076726686ab2 (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    90
#ifdef __BEOS__
1441
3c9130c733f3 (svn r1945) - CodeChange: re-commit of rev 1835: "Reduce the visibility of network_core.h (Tron)".
darkvater
parents: 1429
diff changeset
    91
	typedef int socklen_t;
1429
076726686ab2 (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    92
#endif
076726686ab2 (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    93
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    94
// OS/2 stuff
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    95
#if defined(__OS2__)
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    96
#	define SOCKET int
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    97
#	define INVALID_SOCKET -1
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    98
typedef struct ifreq IFREQ;
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
    99
#	define ioctlsocket ioctl
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   100
#	define closesocket close
810
a1494b19bd2a (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   101
#	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
   102
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   103
// 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
   104
#	include <types.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   105
#	include <unistd.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   106
#	include <sys/ioctl.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   107
#	include <sys/socket.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   108
#	include <netinet/in.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   109
#	include <netinet/tcp.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   110
#	include <arpa/inet.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   111
#	include <net/if.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   112
#	include <errno.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   113
#	include <sys/time.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   114
#	include <netdb.h>
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   115
#	include <nerrno.h>
810
a1494b19bd2a (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   116
#	define INADDR_NONE 0xffffffff
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   117
1507
18cb39ddddfd (svn r2011) - Fix: [ 1162209 ] Fix OS/2 build (orudge) #2
darkvater
parents: 1505
diff changeset
   118
typedef int socklen_t;
781
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   119
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
   120
#endif // OS/2
4c9177888196 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   121
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   122
// MorphOS and Amiga stuff
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   123
#if defined(__MORPHOS__) || defined(__AMIGA__)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   124
#	include <exec/types.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   125
#	include <proto/exec.h>		// required for Open/CloseLibrary()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   126
#	if defined(__MORPHOS__)
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   127
#		include <sys/filio.h> 	// FIO* defines
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   128
#		include <sys/sockio.h>  // SIO* defines
1343
19445bf5b17e (svn r1847) Adjustment for MorphOS to unbreak the build there and removal of some now obsolete preprocessor magic
tron
parents: 1342
diff changeset
   129
#		include <netinet/in.h>
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   130
#	else // __AMIGA__
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   131
#		include	<proto/socket.h>
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   132
#	endif
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   133
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   134
// Make the names compatible
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   135
#	define closesocket(s) CloseSocket(s)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   136
#	define GET_LAST_ERROR() Errno()
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   137
#	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
   138
#	define ioctl ioctlsocket
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   139
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   140
	typedef unsigned int in_addr_t;
1343
19445bf5b17e (svn r1847) Adjustment for MorphOS to unbreak the build there and removal of some now obsolete preprocessor magic
tron
parents: 1342
diff changeset
   141
	typedef long         socklen_t;
770
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   142
	extern struct Library *SocketBase;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   143
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   144
#	ifdef __AMIGA__
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   145
	// for usleep() implementation
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   146
	extern struct Device      *TimerBase;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   147
	extern struct MsgPort     *TimerPort;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   148
	extern struct timerequest *TimerRequest;
c2eacca29601 (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   149
#	endif
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   150
#endif // __MORPHOS__ || __AMIGA__
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   151
1332
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   152
static inline bool SetNonBlocking(int d)
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   153
{
1466
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   154
	#ifdef WIN32
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   155
	u_long nonblocking = 1;
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   156
	#else
1332
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   157
	int nonblocking = 1;
1466
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   158
	#endif
1332
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   159
	#if defined(__BEOS__) && defined(BEOS_NET_SERVER)
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   160
	return setsockopt(d, SOL_SOCKET, SO_NONBLOCK, &nonblocking, sizeof(nonblocking)) == 0;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   161
	#else
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   162
	return ioctlsocket(d, FIONBIO, &nonblocking) == 0;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   163
	#endif
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   164
}
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   165
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   166
static inline bool SetNoDelay(int d)
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   167
{
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   168
	// XXX should this be done at all?
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   169
	#if !defined(BEOS_NET_SERVER) // not implemented on BeOS net_server
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   170
	int b = 1;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   171
	// The (const char*) cast is needed for windows
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   172
	return setsockopt(d, IPPROTO_TCP, TCP_NODELAY, (const char*)&b, sizeof(b)) == 0;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   173
	#else
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   174
	return true;
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   175
	#endif
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   176
}
0cae74c93b5d (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   177
1812
26b041a529e9 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   178
#endif /* ENABLE_NETWORK */
26b041a529e9 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   179
26b041a529e9 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   180
#endif /* NETWORK_CORE_H */