1 /* 2 * This file is part of OpenTTD. 3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. 4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. 6 */ 7 8 /** 9 * @file config.h Configuration options of the network stuff. It is used even when compiling without network support. 10 */ 11 12 #ifndef NETWORK_CORE_CONFIG_H 13 #define NETWORK_CORE_CONFIG_H 14 15 const char *NetworkCoordinatorConnectionString(); 16 const char *NetworkStunConnectionString(); 17 const char *NetworkContentServerConnectionString(); 18 const char *NetworkContentMirrorConnectionString(); 19 20 /** URL of the HTTP mirror system */ 21 static const char * const NETWORK_CONTENT_MIRROR_URL = "/bananas"; 22 23 static const uint16 NETWORK_COORDINATOR_SERVER_PORT = 3976; ///< The default port of the Game Coordinator server (TCP) 24 static const uint16 NETWORK_STUN_SERVER_PORT = 3975; ///< The default port of the STUN server (TCP) 25 static const uint16 NETWORK_TURN_SERVER_PORT = 3974; ///< The default port of the TURN server (TCP) 26 static const uint16 NETWORK_CONTENT_SERVER_PORT = 3978; ///< The default port of the content server (TCP) 27 static const uint16 NETWORK_CONTENT_MIRROR_PORT = 80; ///< The default port of the content mirror (TCP) 28 static const uint16 NETWORK_DEFAULT_PORT = 3979; ///< The default port of the game server (TCP & UDP) 29 static const uint16 NETWORK_ADMIN_PORT = 3977; ///< The default port for admin network 30 static const uint16 NETWORK_DEFAULT_DEBUGLOG_PORT = 3982; ///< The default port debug-log is sent to (TCP) 31 32 static const uint16 UDP_MTU = 1460; ///< Number of bytes we can pack in a single UDP packet 33 /* 34 * Technically a TCP packet could become 64kiB, however the high bit is kept so it becomes possible in the future 35 * to go to (significantly) larger packets if needed. This would entail a strategy such as employed for UTF-8. 36 * 37 * Packets up to 32 KiB have the high bit not set: 38 * 00000000 00000000 0bbbbbbb aaaaaaaa -> aaaaaaaa 0bbbbbbb 39 * Send_uint16(GB(size, 0, 15) 40 * 41 * Packets up to 1 GiB, first uint16 has high bit set so it knows to read a 42 * next uint16 for the remaining bits of the size. 43 * 00dddddd cccccccc bbbbbbbb aaaaaaaa -> cccccccc 10dddddd aaaaaaaa bbbbbbbb 44 * Send_uint16(GB(size, 16, 14) | 0b10 << 14) 45 * Send_uint16(GB(size, 0, 16)) 46 */ 47 static const uint16 TCP_MTU = 32767; ///< Number of bytes we can pack in a single TCP packet 48 static const uint16 COMPAT_MTU = 1460; ///< Number of bytes we can pack in a single packet for backward compatibility 49 50 static const byte NETWORK_GAME_ADMIN_VERSION = 1; ///< What version of the admin network do we use? 51 static const byte NETWORK_GAME_INFO_VERSION = 6; ///< What version of game-info do we use? 52 static const byte NETWORK_COMPANY_INFO_VERSION = 6; ///< What version of company info is this? 53 static const byte NETWORK_COORDINATOR_VERSION = 6; ///< What version of game-coordinator-protocol do we use? 54 55 static const uint NETWORK_NAME_LENGTH = 80; ///< The maximum length of the server name and map name, in bytes including '\0' 56 static const uint NETWORK_COMPANY_NAME_LENGTH = 128; ///< The maximum length of the company name, in bytes including '\0' 57 static const uint NETWORK_HOSTNAME_LENGTH = 80; ///< The maximum length of the host name, in bytes including '\0' 58 static const uint NETWORK_HOSTNAME_PORT_LENGTH = 80 + 6; ///< The maximum length of the host name + port, in bytes including '\0'. The extra six is ":" + port number (with a max of 65536) 59 static const uint NETWORK_SERVER_ID_LENGTH = 33; ///< The maximum length of the network id of the servers, in bytes including '\0' 60 static const uint NETWORK_REVISION_LENGTH = 33; ///< The maximum length of the revision, in bytes including '\0' 61 static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH) 62 static const uint NETWORK_CLIENTS_LENGTH = 200; ///< The maximum length for the list of clients that controls a company, in bytes including '\0' 63 static const uint NETWORK_CLIENT_NAME_LENGTH = 25; ///< The maximum length of a client's name, in bytes including '\0' 64 static const uint NETWORK_RCONCOMMAND_LENGTH = 500; ///< The maximum length of a rconsole command, in bytes including '\0' 65 static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = COMPAT_MTU - 3; ///< The maximum length of a gamescript json string, in bytes including '\0'. Must not be longer than COMPAT_MTU including header (3 bytes) 66 static const uint NETWORK_CHAT_LENGTH = 900; ///< The maximum length of a chat message, in bytes including '\0' 67 static const uint NETWORK_CONTENT_FILENAME_LENGTH = 48; ///< The maximum length of a content's filename, in bytes including '\0'. 68 static const uint NETWORK_CONTENT_NAME_LENGTH = 32; ///< The maximum length of a content's name, in bytes including '\0'. 69 static const uint NETWORK_CONTENT_VERSION_LENGTH = 16; ///< The maximum length of a content's version, in bytes including '\0'. 70 static const uint NETWORK_CONTENT_URL_LENGTH = 96; ///< The maximum length of a content's url, in bytes including '\0'. 71 static const uint NETWORK_CONTENT_DESC_LENGTH = 512; ///< The maximum length of a content's description, in bytes including '\0'. 72 static const uint NETWORK_CONTENT_TAG_LENGTH = 32; ///< The maximum length of a content's tag, in bytes including '\0'. 73 static const uint NETWORK_ERROR_DETAIL_LENGTH = 100; ///< The maximum length of the error detail, in bytes including '\0'. 74 static const uint NETWORK_INVITE_CODE_LENGTH = 64; ///< The maximum length of the invite code, in bytes including '\0'. 75 static const uint NETWORK_INVITE_CODE_SECRET_LENGTH = 80; ///< The maximum length of the invite code secret, in bytes including '\0'. 76 static const uint NETWORK_TOKEN_LENGTH = 64; ///< The maximum length of a token, in bytes including '\0'. 77 78 static const uint NETWORK_GRF_NAME_LENGTH = 80; ///< Maximum length of the name of a GRF 79 80 /** 81 * Maximum number of GRFs that can be sent. 82 * 83 * This limit exists to avoid that the SERVER_INFO packet exceeding the 84 * maximum MTU. At the time of writing this limit is 32767 (TCP_MTU). 85 * 86 * In the SERVER_INFO packet is the NetworkGameInfo struct, which is 87 * 142 bytes + 100 per NewGRF (under the assumption strings are used to 88 * their max). This brings us to roughly 326 possible NewGRFs. Round it 89 * down so people don't freak out because they see a weird value, and you 90 * get the limit: 255. 91 * 92 * PS: in case you ever want to raise this number, please be mindful that 93 * "amount of NewGRFs" in NetworkGameInfo is currently an uint8. 94 */ 95 static const uint NETWORK_MAX_GRF_COUNT = 255; 96 97 #endif /* NETWORK_CORE_CONFIG_H */ 98