00001
00025 #include "bool.h"
00026 #ifndef WIN32
00027 #include <errno.h>
00028 #endif
00029
00043 #define PORT_SRV 26000
00044
00047 #define PORT_STSYNC 26001
00048
00051 #define PORT_CLI 26002
00052
00058 #define PORT_CTSYNC 26003
00059
00067 #ifdef WIN32
00068 #define CloseSocket(s) if (s != -1) { closesocket(s); s = -1; }
00069 #else
00070 #define CloseSocket(s) if (s != -1) { close(s); s = -1; }
00071 #endif
00072
00080 #define MSG_WRITE_8(ptr, val) *((ptr)++) = (val)
00081
00092 #define MSG_WRITE_8C(ptr, index, val) (ptr)[index] = (val)
00093
00102 #define MSG_WRITE_16(ptr, val) *((ptr)++) = ((val) >> 8); \
00103 *((ptr)++) = ((val) & 0xFF)
00104
00115 #define MSG_WRITE_16C(ptr, index, val) (ptr)[index] = ((val) >> 8);\
00116 (ptr)[index + 1] = ((val) & 0xFF)
00117
00126 #define MSG_WRITE_32(ptr, val) *((ptr)++) = ((val) >> 24); \
00127 *((ptr)++) = ((val) >> 16) & 0xFF; \
00128 *((ptr)++) = ((val) >> 8) & 0xFF; \
00129 *((ptr)++) = ((val) & 0xFF)
00130
00141 #define MSG_WRITE_32C(ptr, index, val) (ptr)[index] = ((val) >> 24); \
00142 (ptr)[index + 1] = ((val) >> 16) & 0xFF; \
00143 (ptr)[index + 2] = ((val) >> 8) & 0xFF; \
00144 (ptr)[index + 3] = ((val) & 0xFF)
00145
00153 #define MSG_READ_8(ptr, val) (val) = *((ptr)++)
00154
00162 #define MSG_READ_16(ptr, val) (val) = (Uint8)*((ptr)++) << 8; \
00163 (val) |= (Uint8)*((ptr)++)
00164
00175 #define MSG_READ_16C(ptr, index, val) (val) = ((Uint8*)(ptr))[index] << 8; \
00176 (val) |= ((Uint8*)(ptr))[index + 1]
00177
00185 #define MSG_READ_32(ptr, val) (val) = (Uint8)*((ptr)++) << 24; \
00186 (val) |= (Uint8)*((ptr)++) << 16; \
00187 (val) |= (Uint8)*((ptr)++) << 8; \
00188 (val) |= (Uint8)*((ptr)++)
00189
00200 #define MSG_READ_32C(ptr, index, val) \
00201 (val) = ((Uint8*)(ptr))[index] << 24; \
00202 (val) |= ((Uint8*)(ptr))[index + 1] << 16; \
00203 (val) |= ((Uint8*)(ptr))[index + 2] << 8; \
00204 (val) |= ((Uint8*)(ptr))[index + 3]
00205
00209 enum {
00214 NETSTATE_INIT,
00219 NETSTATE_SEARCHING,
00226 NETSTATE_CONNECTING,
00231 NETSTATE_RCVCFG,
00236 NETSTATE_CLIENT,
00242 NETSTATE_CLIDISCONN,
00246 NETSTATE_SERVER,
00252 NETSTATE_SRVDISCONN,
00260 NETSTATE_SRVDENY,
00267 NETSTATE_DISCONN,
00271 NETSTATE_SEARCHERR,
00276 NETSTATE_SRVERR,
00280 NETSTATE_CONERR
00281 };
00282
00286 extern unsigned int networkState;
00287
00302 Bool NetInit(char *srv);
00303
00315 Bool NetInitSrv();
00316
00322 void NetUninit();
00323
00337 void NetDisconnect();
00338
00348 Bool NetCliToSrv();
00349
00356 Bool NetSrvToCli();
00357
00367 int UnicastSocket(void *addr, Bool block);
00368
00369
00370
00378 #ifdef WIN32
00379 #define GetNetErrorVal() WSAGetLastError()
00380 #define EWOULDBLOCK WSAEWOULDBLOCK
00381 #define EBADF WSAEBADF
00382 #define EFAULT WSAEFAULT
00383 #define EINTR WSAEINTR
00384 #define EINVAL WSAEINVAL
00385 #define ENOTSOCK WSAENOTSOCK
00386 #define EADDRINUSE WSAEADDRINUSE
00387 #define ENETDOWN WSAENETDOWN
00388 #define ENETUNREACH WSAENETUNREACH
00389 #define ECONNRESET WSAECONNREFUSED
00390 #define ECONNREFUSED WSAECONNRESET
00391 #define EHOSTUNREACH WSAEHOSTUNREACH
00392 #else
00393 #define GetNetErrorVal() errno
00394 #endif
00395
00401 extern int netError;
00402
00410 const rtsa_char *GetNetErrorString(int err);
00411