/* * Kangaroo Punch MultiPlayer Game Server Mark II * Copyright (C) 2020-2021 Scott Duensing * * This program 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, either version 3 of the License, or * (at your option) any later version. * * This program 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. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #ifndef PACKETS_H #define PACKETS_H #include #define PACKET_PROTOCOL_VERSION 1 // This enum is treated as BYTES in the code. Do not go over 255 entries. // Also update array in client.c! typedef enum PacketTypeE { // These packets have to be first and in this order! Do not change them! PACKET_TYPE_NONE = 0, // No packet. PACKET_TYPE_DH_REQUEST, PACKET_TYPE_DH_RESPONSE, PACKET_TYPE_VERSION, PACKET_TYPE_VERSION_BAD, PACKET_TYPE_VERSION_OKAY, // Packets received by only the server: PACKET_TYPE_CLIENT_SHUTDOWN, PACKET_TYPE_FILE_REQUEST, PACKET_TYPE_LOGIN, PACKET_TYPE_PONG, PACKET_TYPE_SIGNUP, // Packets received by only the client: PACKET_TYPE_FILE_RESPONSE, PACKET_TYPE_LOGIN_RESULT, PACKET_TYPE_PING, PACKET_TYPE_PROCEED, PACKET_TYPE_SERVER_SHUTDOWN, PACKET_TYPE_SIGNUP_RESULT, // How many packet types do we recognize? PACKET_TYPE_COUNT } PacketTypeT; /* * Client -> PACKET_TYPE_FILE_REQUEST FILE_REQUEST_CHECK SHA256 VPATH * Server -> PACKET_TYPE_FILE_RESPONSE FILE_RESPONSE_OKAY * - or - * Server -> PACKET_TYPE_FILE_RESPONSE FILE_RESPONSE_SEND (4 bytes length) SHA256 * * Server -> PACKET_TYPE_FILE_RESPONSE FILE_RESPONSE_DATA (data...) * Client -> PACKET_TYPE_FILE_REQUEST FILE_REQUEST_NEXT * (Repeat until received data matches the length.) */ typedef enum FileRequestsE { FILE_REQUEST_UNKNOWN = 0, FILE_REQUEST_CHECK, FILE_REQUEST_NEXT } FileRequestsT; typedef enum FileResponseE { FILE_RESPONSE_UNKNOWN = 0, FILE_RESPONSE_DATA, FILE_RESPONSE_OKAY, FILE_RESPONSE_SEND } FileResponseT; #endif // PACKETS_H