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