src/network/core/udp.h
author rubidium
Fri, 05 Jan 2007 21:33:58 +0000
changeset 5796 61f3b59a00e3
parent 5779 d94be8c0cf86
child 5870 86e55167c9e3
permissions -rw-r--r--
(svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     1
/* $Id$ */
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     2
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     3
#ifndef NETWORK_CORE_UDP_H
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     4
#define NETWORK_CORE_UDP_H
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     5
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     6
#ifdef ENABLE_NETWORK
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
     7
5778
c1454e0c03bf (svn r7834) -Codechange: cleanup the includes of network/core a little; include headers in headers when the header needs types/constants defined in them.
rubidium
parents: 5772
diff changeset
     8
#include "os_abstraction.h"
c1454e0c03bf (svn r7834) -Codechange: cleanup the includes of network/core a little; include headers in headers when the header needs types/constants defined in them.
rubidium
parents: 5772
diff changeset
     9
#include "game.h"
c1454e0c03bf (svn r7834) -Codechange: cleanup the includes of network/core a little; include headers in headers when the header needs types/constants defined in them.
rubidium
parents: 5772
diff changeset
    10
#include "packet.h"
c1454e0c03bf (svn r7834) -Codechange: cleanup the includes of network/core a little; include headers in headers when the header needs types/constants defined in them.
rubidium
parents: 5772
diff changeset
    11
#include "../../newgrf_config.h"
c1454e0c03bf (svn r7834) -Codechange: cleanup the includes of network/core a little; include headers in headers when the header needs types/constants defined in them.
rubidium
parents: 5772
diff changeset
    12
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    13
/**
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    14
 * @file udp.h Basic functions to receive and send UDP packets.
5796
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    15
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    16
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    17
 * *** Requesting game information from a server ***
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    18
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    19
 * This describes the on-the-wire structure of the request and reply
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    20
 * packet of the NetworkGameInfo (see game.h) data.
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    21
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    22
 * --- Points of attention ---
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    23
 *  - all > 1 byte integral values are written in little endian,
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    24
 *    unless specified otherwise.
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    25
 *      Thus, 0x01234567 would be sent as {0x67, 0x45, 0x23, 0x01}.
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    26
 *  - all sent strings are of variable length and terminated by a '\0'.
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    27
 *      Thus, the length of the strings is not sent.
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    28
 *  - years that are leap years in the 'days since X' to 'date' calculations:
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    29
 *     (year % 4 == 0) and ((year % 100 != 0) or (year % 400 == 0))
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    30
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    31
 * --- Request ---
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    32
 * Bytes:  Description:
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    33
 *   2       size of the whole packet, in this case 3
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    34
 *   1       type of packet, in this case PACKET_UDP_CLIENT_FIND_SERVER (0)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    35
 * This packet would look like: { 0x03, 0x00, 0x00 }
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    36
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    37
 * --- Reply ---
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    38
 * Version: Bytes:  Description:
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    39
 *   all      2       size of the whole packet
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    40
 *   all      1       type of packet, in this case PACKET_UDP_SERVER_RESPONSE (1)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    41
 *   all      1       the version of this packet's structure
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    42
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    43
 *   4+       1       number of GRFs attached (n)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    44
 *   4+       n * 20  unique identifier for GRF files. Constists of:
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    45
 *                     - one 4 byte variable with the GRF ID
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    46
 *                     - 16 bytes (sent sequentially) for the MD5 checksum
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    47
 *                       of the GRF
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    48
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    49
 *   3+       4       current game date in days since 1-1-0 (DMY)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    50
 *   3+       4       game introduction date in days since 1-1-0 (DMY)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    51
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    52
 *   2+       1       maximum number of companies allowed on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    53
 *   2+       1       number of companies on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    54
 *   2+       1       maximum number of spectators allowed on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    55
 *
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    56
 *   1+       var     string with the name of the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    57
 *   1+       var     string with the revision of the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    58
 *   1+       1       the language run on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    59
 *                    (0 = any, 1 = English, 2 = German, 3 = French)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    60
 *   1+       1       whether the server uses a password (0 = no, 1 = yes)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    61
 *   1+       1       maximum number of clients allowed on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    62
 *   1+       1       number of clients on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    63
 *   1+       1       number of spectators on the server
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    64
 *   1 & 2    2       current game date in days since 1-1-1920 (DMY)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    65
 *   1 & 2    2       game introduction date in days since 1-1-1920 (DMY)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    66
 *   1+       var     string with the name of the map
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    67
 *   1+       2       width of the map in tiles
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    68
 *   1+       2       height of the map in tiles
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    69
 *   1+       1       type of map:
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    70
 *                    (0 = temperate, 1 = arctic, 2 = desert, 3 = toyland)
61f3b59a00e3 (svn r7888) -Change: add documentation about the 'on-the-wire' structure of the network game information request and reply packets.
rubidium
parents: 5779
diff changeset
    71
 *   1+       1       whether the server is dedicated (0 = no, 1 = yes)
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    72
 */
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    73
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    74
///** Sending/receiving of UDP packets **////
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    75
5779
d94be8c0cf86 (svn r7836) -Codechange: some constness for network/core.
rubidium
parents: 5778
diff changeset
    76
bool NetworkUDPListen(SOCKET *udp, const uint32 host, const uint16 port, const bool broadcast);
5772
fbb42af982b4 (svn r7825) -Codechange: make NetworkUDPClose close a single UDP socket. Use NetworkUDPStop to close all opened udp sockets (those were called NetworkUDPClose).
rubidium
parents: 5770
diff changeset
    77
void NetworkUDPClose(SOCKET *udp);
fbb42af982b4 (svn r7825) -Codechange: make NetworkUDPClose close a single UDP socket. Use NetworkUDPStop to close all opened udp sockets (those were called NetworkUDPClose).
rubidium
parents: 5770
diff changeset
    78
5779
d94be8c0cf86 (svn r7836) -Codechange: some constness for network/core.
rubidium
parents: 5778
diff changeset
    79
void NetworkSendUDP_Packet(const SOCKET udp, Packet *p, const struct sockaddr_in *recv);
d94be8c0cf86 (svn r7836) -Codechange: some constness for network/core.
rubidium
parents: 5778
diff changeset
    80
void NetworkUDPReceive(const SOCKET udp);
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    81
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    82
/**
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    83
 * Function that is called for every received UDP packet.
5770
15abf566c92e (svn r7821) -Fix: be more strict about the socket from where packets arrive. Do not accept requests about the game server on the master/client socket, do not accept master server acks on the client/server socket, etc.
rubidium
parents: 5726
diff changeset
    84
 * @param udp         the socket the packet is received on
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    85
 * @param packet      the received packet
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    86
 * @param client_addr the address of the sender of the packet
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    87
 */
5779
d94be8c0cf86 (svn r7836) -Codechange: some constness for network/core.
rubidium
parents: 5778
diff changeset
    88
void NetworkHandleUDPPacket(const SOCKET udp, Packet *p, const struct sockaddr_in *client_addr);
5720
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    89
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    90
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    91
///** Sending/receiving of (large) chuncks of UDP packets **////
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    92
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    93
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    94
/** Enum with all types of UDP packets. The order MUST not be changed **/
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    95
enum {
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    96
	PACKET_UDP_CLIENT_FIND_SERVER,   ///< Queries a game server for game information
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    97
	PACKET_UDP_SERVER_RESPONSE,      ///< Reply of the game server with game information
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    98
	PACKET_UDP_CLIENT_DETAIL_INFO,   ///< Queries a game server about details of the game, such as companies
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
    99
	PACKET_UDP_SERVER_DETAIL_INFO,   ///< Reply of the game server about details of the game, such as companies
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   100
	PACKET_UDP_SERVER_REGISTER,      ///< Packet to register itself to the master server
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   101
	PACKET_UDP_MASTER_ACK_REGISTER,  ///< Packet indicating registration has succedeed
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   102
	PACKET_UDP_CLIENT_GET_LIST,      ///< Request for serverlist from master server
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   103
	PACKET_UDP_MASTER_RESPONSE_LIST, ///< Response from master server with server ip's + port's
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   104
	PACKET_UDP_SERVER_UNREGISTER,    ///< Request to be removed from the server-list
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   105
	PACKET_UDP_CLIENT_GET_NEWGRFS,   ///< Requests the name for a list of GRFs (GRF_ID and MD5)
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   106
	PACKET_UDP_SERVER_NEWGRFS,       ///< Sends the list of NewGRF's requested.
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   107
	PACKET_UDP_END                   ///< Must ALWAYS be on the end of this list!! (period)
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   108
};
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   109
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   110
void NetworkSend_GRFIdentifier(Packet *p, const GRFConfig *c);
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   111
void NetworkSend_NetworkGameInfo(Packet *p, const NetworkGameInfo *info);
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   112
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   113
void NetworkRecv_GRFIdentifier(NetworkClientState *cs, Packet *p, GRFConfig *c);
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   114
void NetworkRecv_NetworkGameInfo(NetworkClientState *cs, Packet *p, NetworkGameInfo *info);
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   115
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   116
/**
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   117
 * Function that is called for every GRFConfig that is read when receiving
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   118
 * a NetworkGameInfo. Only grfid and md5sum are set, the rest is zero. This
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   119
 * function must set all appropriate fields. This GRF is later appended to
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   120
 * the grfconfig list of the NetworkGameInfo.
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   121
 * @param config the GRF to handle
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   122
 */
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   123
void HandleIncomingNetworkGameInfoGRFConfig(GRFConfig *config);
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   124
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   125
#endif /* ENABLE_NETWORK */
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   126
cc0ceeafaa55 (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
diff changeset
   127
#endif /* NETWORK_CORE_UDP_H */