network_core.h
author Darkvater
Wed, 01 Mar 2006 20:24:22 +0000
changeset 3107 a6406bbecd3d
parent 2741 011462ebb67b
child 3294 be3b1e6b4b74
permissions -rw-r--r--
(svn r3710) - Use the general function DrawArrowButtons() instead of doing it manually. The function has two parameters added, colour and an enabled flag.
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
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
    14
#ifdef __APPLE__
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
#include <AvailabilityMacros.h>
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
#if (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_2)
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
	// 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
    18
	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
    19
#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
    20
#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
    21
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    22
// Windows stuff
2482
dffcca243dbc (svn r3008) [ 1247535 ] Native Support for Win64 (compile&run only) (michi_cc)
Darkvater
parents: 2186
diff changeset
    23
#if defined(WIN32) || defined(WIN64)
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    24
#include <winsock2.h>
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    25
#include <ws2tcpip.h>
2482
dffcca243dbc (svn r3008) [ 1247535 ] Native Support for Win64 (compile&run only) (michi_cc)
Darkvater
parents: 2186
diff changeset
    26
#include <windows.h>
792
d8a4164fdb14 (svn r1262) -Fix: [1088996] kill some warnings for MinGW (luzi82)
darkvater
parents: 789
diff changeset
    27
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
    28
#if !(defined(__MINGW32__) || defined(__CYGWIN__))
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    29
	// Windows has some different names for some types..
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    30
	typedef SSIZE_T ssize_t;
1342
a1ca3e1df6bd (svn r1846) - Fix: VS6 project file (bociusz)
darkvater
parents: 1332
diff changeset
    31
	typedef int socklen_t;
796
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    32
#endif
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    33
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    34
#define GET_LAST_ERROR() WSAGetLastError()
42a3669a939f (svn r1266) -Fix: fix some cygwin/mingw warnings
darkvater
parents: 792
diff changeset
    35
#define EWOULDBLOCK WSAEWOULDBLOCK
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    36
// Windows has some different names for some types..
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    37
typedef unsigned long in_addr_t;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    38
typedef INTERFACE_INFO IFREQ;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    39
#endif // WIN32
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    40
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    41
// UNIX stuff
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    42
#if defined(UNIX)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    43
#	define SOCKET int
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    44
#	define INVALID_SOCKET -1
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    45
typedef struct ifreq IFREQ;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    46
#	if !defined(__MORPHOS__) && !defined(__AMIGA__)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    47
#		define ioctlsocket ioctl
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    48
#	if !defined(BEOS_NET_SERVER)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    49
#		define closesocket close
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    50
#	endif
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    51
#		define GET_LAST_ERROR() (errno)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    52
#	endif
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    53
// Need this for FIONREAD on solaris
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    54
#	define BSD_COMP
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    55
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    56
// Includes needed for UNIX-like systems
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    57
#	include <unistd.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    58
#	include <sys/ioctl.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    59
#	if defined(__BEOS__) && defined(BEOS_NET_SERVER)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    60
#		include <be/net/socket.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    61
#		include <be/kernel/OS.h> // snooze()
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    62
#		include <be/net/netdb.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    63
		typedef unsigned long in_addr_t;
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    64
#		define INADDR_NONE INADDR_BROADCAST
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    65
#	else
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    66
#		include <sys/socket.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    67
#		include <netinet/in.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    68
#		include <netinet/tcp.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    69
#		include <arpa/inet.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    70
#		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
    71
// 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
    72
#		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
    73
		   && !(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
    74
// 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
    75
//   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
    76
//   the list of IPs from the system.
706
841f24d374ed (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    77
#			include <ifaddrs.h>
841f24d374ed (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    78
#			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
    79
#		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
    80
#		if defined(SUNOS) || defined(__MORPHOS__) || defined(__BEOS__)
706
841f24d374ed (svn r1158) Make network compile on SunOS
tron
parents: 543
diff changeset
    81
#			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
    82
#		endif
1051
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    83
#		if defined(__BEOS__) && !defined(BEOS_NET_SERVER)
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    84
			// needed on Zeta
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    85
#			include <sys/sockio.h>
c56a3ce9b64f (svn r1552) Make ottd compile on Zeta
tron
parents: 810
diff changeset
    86
#		endif
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    87
#	endif // BEOS_NET_SERVER
789
85be14beeb57 (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    88
1812
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
    89
#	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
    90
		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
    91
#	endif
789
85be14beeb57 (svn r1259) -Fix: [Network] Network now compiles with glibc 2.1 (MacBaine)
truelight
parents: 781
diff changeset
    92
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    93
#	include <errno.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    94
#	include <sys/time.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    95
#	include <netdb.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    96
#endif // UNIX
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    97
1429
ae1a7e41277b (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
    98
#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
    99
	typedef int socklen_t;
1429
ae1a7e41277b (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
   100
#endif
ae1a7e41277b (svn r1933) typedef socklen_t for BeOS
tron
parents: 1412
diff changeset
   101
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   102
// OS/2 stuff
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   103
#if defined(__OS2__)
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   104
#	define SOCKET int
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   105
#	define INVALID_SOCKET -1
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   106
typedef struct ifreq IFREQ;
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   107
#	define ioctlsocket ioctl
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   108
#	define closesocket close
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   109
#	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
   110
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   111
// 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
   112
#	include <types.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   113
#	include <unistd.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   114
#	include <sys/ioctl.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   115
#	include <sys/socket.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   116
#	include <netinet/in.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   117
#	include <netinet/tcp.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   118
#	include <arpa/inet.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   119
#	include <net/if.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   120
#	include <errno.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   121
#	include <sys/time.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   122
#	include <netdb.h>
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   123
#	include <nerrno.h>
810
7c51ba5a4368 (svn r1281) -Fix: the OS/2 is now finished. Fixes:
truelight
parents: 796
diff changeset
   124
#	define INADDR_NONE 0xffffffff
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   125
1507
2d09b13f049f (svn r2011) - Fix: [ 1162209 ] Fix OS/2 build (orudge) #2
darkvater
parents: 1505
diff changeset
   126
typedef int socklen_t;
781
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   127
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
   128
#endif // OS/2
9717ff353c17 (svn r1248) -Add: initial OS/2 support (read docs/ReadMe_OS2.txt) (orudge)
truelight
parents: 774
diff changeset
   129
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   130
// MorphOS and Amiga stuff
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   131
#if defined(__MORPHOS__) || defined(__AMIGA__)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   132
#	include <exec/types.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   133
#	include <proto/exec.h>		// required for Open/CloseLibrary()
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   134
#	if defined(__MORPHOS__)
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   135
#		include <sys/filio.h> 	// FIO* defines
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   136
#		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
   137
#		include <netinet/in.h>
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   138
#	else // __AMIGA__
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   139
#		include	<proto/socket.h>
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   140
#	endif
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   141
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   142
// Make the names compatible
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   143
#	define closesocket(s) CloseSocket(s)
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   144
#	define GET_LAST_ERROR() Errno()
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   145
#	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
   146
#	define ioctl ioctlsocket
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   147
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   148
	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
   149
	typedef long         socklen_t;
770
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   150
	extern struct Library *SocketBase;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   151
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   152
#	ifdef __AMIGA__
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   153
	// for usleep() implementation
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   154
	extern struct Device      *TimerBase;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   155
	extern struct MsgPort     *TimerPort;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   156
	extern struct timerequest *TimerRequest;
89dab23f04ca (svn r1236) MorphOS: added make release like in OSX (tokai)
bjarni
parents: 706
diff changeset
   157
#	endif
543
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   158
#endif // __MORPHOS__ || __AMIGA__
e3b43338096b (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   159
1332
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   160
static inline bool SetNonBlocking(int d)
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   161
{
1466
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   162
	#ifdef WIN32
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   163
	u_long nonblocking = 1;
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   164
	#else
1332
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   165
	int nonblocking = 1;
1466
fd5c1d8c992a (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   166
	#endif
1332
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   167
	#if defined(__BEOS__) && defined(BEOS_NET_SERVER)
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   168
	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
   169
	#else
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   170
	return ioctlsocket(d, FIONBIO, &nonblocking) == 0;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   171
	#endif
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
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   174
static inline bool SetNoDelay(int d)
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   175
{
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   176
	// XXX should this be done at all?
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   177
	#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
   178
	int b = 1;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   179
	// The (const char*) cast is needed for windows
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   180
	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
   181
	#else
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   182
	return true;
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   183
	#endif
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   184
}
86c9ebbcda31 (svn r1836) Clean up some strange constructs concerning socket options
tron
parents: 1051
diff changeset
   185
1812
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   186
#endif /* ENABLE_NETWORK */
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   187
5b4d1af6b904 (svn r2316) - Fix: [ 1154454 ] Fix BeOS build on Trunk (myob)
Darkvater
parents: 1810
diff changeset
   188
#endif /* NETWORK_CORE_H */