X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcadet%2Fcadet_protocol.h;h=de0cec5d0b772097a0a75d7a3538d4fe9ad131f9;hb=503717fce30f57907482678fb1abfe468309d7b1;hp=d2426addbd67cad26531acdea192034093c3f244;hpb=81f9e9e971e615e9f1f18d1509168b56bb7360c0;p=oweals%2Fgnunet.git diff --git a/src/cadet/cadet_protocol.h b/src/cadet/cadet_protocol.h index d2426addb..de0cec5d0 100644 --- a/src/cadet/cadet_protocol.h +++ b/src/cadet/cadet_protocol.h @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - Copyright (C) 2001 - 2011 GNUnet e.V. + Copyright (C) 2007 - 2017 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -19,8 +19,10 @@ */ /** - * @author Bartlomiej Polot * @file cadet/cadet_protocol.h + * @brief P2P messages used by CADET + * @author Bartlomiej Polot + * @author Christian Grothoff */ #ifndef CADET_PROTOCOL_H_ @@ -298,17 +300,10 @@ struct GNUNET_CADET_TunnelEncryptedMessage */ struct GNUNET_MessageHeader header; -#if NEW_CADET /** * Reserved, for alignment. */ uint32_t reserved GNUNET_PACKED; -#else - /** - * Maximum packet ID authorized. - */ - struct CadetEncryptedMessageIdentifier cemi; -#endif /** * ID of the connection. @@ -322,89 +317,18 @@ struct GNUNET_CADET_TunnelEncryptedMessage */ struct GNUNET_ShortHashCode hmac; - #if NEW_CADET /** * Axolotl-header that specifies which keys to use in which ratchet * to decrypt the body that follows. */ struct GNUNET_CADET_AxHeader ax_header; -#else - /** - * Number of messages sent with the current ratchet key. - */ - uint32_t Ns GNUNET_PACKED; - /** - * Number of messages sent with the previous ratchet key. - */ - uint32_t PNs GNUNET_PACKED; - - /** - * Current ratchet key. - */ - struct GNUNET_CRYPTO_EcdhePublicKey DHRs; -#endif /** * Encrypted content follows. */ }; -#ifndef NEW_CADET - -/** - * Message to query a peer about its Flow Control status regarding a tunnel. - * - * It is NOT yet clear if we need this. - */ -struct GNUNET_CADET_ConnectionHopByHopPollMessage -{ - /** - * Type: #GNUNET_MESSAGE_TYPE_CADET_TUNNEL_ENCRYPTED_POLL - */ - struct GNUNET_MessageHeader header; - - /** - * Last packet sent. - */ - struct CadetEncryptedMessageIdentifier cemi; - - /** - * ID of the connection. - */ - struct GNUNET_CADET_ConnectionTunnelIdentifier cid; - -}; - - -/** - * Message to acknowledge cadet encrypted traffic, used for - * flow-control on a hop-by-hop basis on the connection-level. Note - * that we do use the @e cemi from the tunnel layer as the connection - * layer's header is included/shared with the tunnel layer messages, - * and we only do flow control for the payload. - */ -struct GNUNET_CADET_ConnectionEncryptedAckMessage -{ - /** - * Type: #GNUNET_MESSAGE_TYPE_CADET_CONNECTION_HOP_BY_HOP_ENCRYPTED_ACK - */ - struct GNUNET_MessageHeader header; - - /** - * Maximum packet ID authorized. - */ - struct CadetEncryptedMessageIdentifier cemi_max; - - /** - * ID of the connection. - */ - struct GNUNET_CADET_ConnectionTunnelIdentifier cid; -}; - -#endif - - /******************************************************************************/ /******************************* CHANNEL ***********************************/ /******************************************************************************/ @@ -426,9 +350,9 @@ struct GNUNET_CADET_ChannelOpenMessage uint32_t opt GNUNET_PACKED; /** - * Destination port. + * Hash of destination port and listener. */ - struct GNUNET_HashCode port; + struct GNUNET_HashCode h_port; /** * ID of the channel within the tunnel. @@ -438,93 +362,56 @@ struct GNUNET_CADET_ChannelOpenMessage /** - * Message to manage a Channel - * (#GNUNET_MESSAGE_TYPE_CADET_CHANNEL_OPEN_ACK, - * #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_DESTROY). + * Message to acknowledge opening a channel of type + * #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_OPEN_ACK. */ -struct GNUNET_CADET_ChannelManageMessage +struct GNUNET_CADET_ChannelOpenAckMessage { /** - * Type: #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_OPEN_ACK or - * #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_DESTROY + * Type: #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_OPEN_ACK */ struct GNUNET_MessageHeader header; -#ifdef NEW_CADET /** * For alignment. */ uint32_t reserved GNUNET_PACKED; -#endif /** * ID of the channel */ struct GNUNET_CADET_ChannelTunnelNumber ctn; -}; - - -#ifndef NEW_CADET - -/** - * Message for cadet data traffic. - */ -struct GNUNET_CADET_ChannelAppDataMessage -{ - /** - * Type: #GNUNET_MESSAGE_TYPE_CADET_UNICAST, - * #GNUNET_MESSAGE_TYPE_CADET_TO_ORIGIN - */ - struct GNUNET_MessageHeader header; /** - * Unique ID of the payload message - */ - /* NEW: struct ChannelMessageIdentifier */ - uint32_t mid GNUNET_PACKED; - - /** - * ID of the channel - */ - struct GNUNET_CADET_ChannelTunnelNumber ctn; - - /** - * Payload follows + * Port number of the channel, used to prove to the + * initiator that the receiver knows the port. */ + struct GNUNET_HashCode port; }; /** - * Message to acknowledge end-to-end data. + * Message to destroy a channel of type + * #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_DESTROY. */ -struct GNUNET_CADET_ChannelDataAckMessage +struct GNUNET_CADET_ChannelDestroyMessage { /** - * Type: #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_APP_DATA_ACK + * Type: #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_DESTROY */ struct GNUNET_MessageHeader header; /** - * ID of the channel - */ - struct GNUNET_CADET_ChannelTunnelNumber ctn; - - /** - * Bitfield of already-received messages past @e mid. - * pid + 1 @ LSB - * pid + 64 @ MSB + * For alignment. */ - uint64_t futures GNUNET_PACKED; + uint32_t reserved GNUNET_PACKED; /** - * Last message ID received. + * ID of the channel */ - /* NEW: struct ChannelMessageIdentifier */ - uint32_t mid GNUNET_PACKED; + struct GNUNET_CADET_ChannelTunnelNumber ctn; }; -#else - /** * Number used to uniquely identify messages in a CADET Channel. @@ -595,8 +482,6 @@ struct GNUNET_CADET_ChannelDataAckMessage }; -#endif - GNUNET_NETWORK_STRUCT_END #if 0 /* keep Emacsens' auto-indent happy */