1 /* Emacs style mode select   -*- C++ -*-
2  *-----------------------------------------------------------------------------
3  *
4  *
5  *  PrBoom: a Doom port merged with LxDoom and LSDLDoom
6  *  based on BOOM, a modified and improved DOOM engine
7  *  Copyright (C) 1999 by
8  *  id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
9  *  Copyright (C) 1999-2000 by
10  *  Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
11  *  Copyright 2005, 2006 by
12  *  Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27  *  02111-1307, USA.
28  *
29  * DESCRIPTION:
30  *  Low level network interface.
31  *-----------------------------------------------------------------------------*/
32 
33 #ifdef HAVE_CONFIG_H
34 #include "config.h"
35 #endif
36 
37 #ifdef USE_SDL_NET
38  #include "SDL_net.h"
39  #define UDP_SOCKET UDPsocket
40  #define UDP_PACKET UDPpacket
41  #define AF_INET
42  #define UDP_CHANNEL int
43  extern UDP_SOCKET udp_socket;
44 #else
45  #define UDP_CHANNEL struct sockaddr
46 #endif
47 
48 #ifndef IPPORT_RESERVED
49         #define IPPORT_RESERVED 1024
50 #endif
51 
52 void I_InitNetwork(void);
53 size_t I_GetPacket(packet_header_t* buffer, size_t buflen);
54 void I_SendPacket(packet_header_t* packet, size_t len);
55 void I_WaitForPacket(int ms);
56 
57 #ifdef USE_SDL_NET
58 UDP_SOCKET I_Socket(Uint16 port);
59 int I_ConnectToServer(const char *serv);
60 UDP_CHANNEL I_RegisterPlayer(IPaddress *ipaddr);
61 void I_UnRegisterPlayer(UDP_CHANNEL channel);
62 extern IPaddress sentfrom_addr;
63 #endif
64 
65 #ifdef AF_INET
66 void I_SendPacketTo(packet_header_t* packet, size_t len, UDP_CHANNEL *to);
67 void I_SetupSocket(int sock, int port, int family);
68 void I_PrintAddress(FILE* fp, UDP_CHANNEL *addr);
69 
70 extern UDP_CHANNEL sentfrom;
71 extern int v4socket, v6socket;
72 #endif
73 
74 extern size_t sentbytes, recvdbytes;
75