/*
This file is part of GNUnet.
- (C) 2012, 2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2012, 2013 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
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
#ifndef MULTICAST_H
#define MULTICAST_H
+#include "platform.h"
+#include "gnunet_multicast_service.h"
+
GNUNET_NETWORK_STRUCT_BEGIN
*
* Signature must match the public key of the joining member.
*/
- struct GNUNET_CRYPTO_EddsaSignature signature;
+ struct GNUNET_CRYPTO_EcdsaSignature signature;
/**
* Purpose for the signature and size of the signed data.
/**
* Public key of the target group.
*/
- struct GNUNET_CRYPTO_EddsaPublicKey group_key;
+ struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
/**
* Public key of the joining member.
*/
- struct GNUNET_CRYPTO_EddsaPublicKey member_key;
+ struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
/**
* Peer identity of the joining member.
*/
- struct GNUNET_PeerIdentity member_peer;
+ struct GNUNET_PeerIdentity peer;
- /* Followed by struct GNUNET_MessageHeader join_request */
+ /* Followed by struct GNUNET_MessageHeader join_message */
};
* C->S: Public key of the member requesting join.
* S->C: Unused.
*/
- struct GNUNET_CRYPTO_EddsaPublicKey member_key;
+ struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
/* Followed by struct MulticastJoinDecisionMessage */
};
/**
- * Message sent from the client to the service to give the service
- * a replayed message.
+ * Message sent from the client to the service OR the service to the
+ * client asking for a message fragment to be replayed.
*/
-struct MulticastReplayResponseMessage
+struct MulticastReplayRequestMessage
{
/**
- *
+ * The message type should be
+ * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST.
*/
struct GNUNET_MessageHeader header;
/**
- * Unique ID that identifies the associated replay session.
+ * S->C: Public key of the member requesting replay.
+ * C->S: Unused.
*/
- uint32_t uid;
+ struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
/**
- * An `enum GNUNET_MULTICAST_ReplayErrorCode` identifying issues (in NBO).
+ * ID of the message that is being requested.
*/
- int32_t error_code;
+ uint64_t fragment_id;
- /* followed by replayed message */
+ /**
+ * ID of the message that is being requested.
+ */
+ uint64_t message_id;
+
+ /**
+ * Offset of the fragment that is being requested.
+ */
+ uint64_t fragment_offset;
+ /**
+ * Additional flags for the request.
+ */
+ uint64_t flags;
+
+ /**
+ * Replay request ID.
+ */
+ uint32_t uid;
};
/**
- * Message sent from the client to the service to notify the service
- * about the end of a replay session.
+ * Message sent from the client to the service to give the service
+ * a replayed message.
*/
-struct MulticastReplayEndMessage
+struct MulticastReplayResponseMessage
{
/**
- *
+ * Type: GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE
+ * or GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE_END
*/
struct GNUNET_MessageHeader header;
/**
- * Unique ID that identifies the associated replay session.
+ * ID of the message that is being requested.
*/
- uint32_t uid;
+ uint64_t fragment_id;
+
+ /**
+ * ID of the message that is being requested.
+ */
+ uint64_t message_id;
+
+ /**
+ * Offset of the fragment that is being requested.
+ */
+ uint64_t fragment_offset;
+ /**
+ * Additional flags for the request.
+ */
+ uint64_t flags;
+
+ /**
+ * An `enum GNUNET_MULTICAST_ReplayErrorCode` identifying issues (in NBO).
+ */
+ int32_t error_code;
+
+ /* followed by replayed message */
};
uint32_t relay_count GNUNET_PACKED;
- struct GNUNET_CRYPTO_EddsaPublicKey group_key;
+ struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
- struct GNUNET_CRYPTO_EddsaPrivateKey member_key;
+ struct GNUNET_CRYPTO_EcdsaPrivateKey member_key;
struct GNUNET_PeerIdentity origin;
/* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
- /* Followed by struct GNUNET_MessageHeader join_request */
+
+ /* Followed by struct GNUNET_MessageHeader join_msg */
};
+#if NOT_USED
/**
* Message sent from the client to the service to broadcast to all group
* members.
/**
* Public non-ephemeral key of the mutlicast group.
*/
- struct GNUNET_CRYPTO_EddsaPublicKey group_key;
+ struct GNUNET_CRYPTO_EddsaPublicKey group_pub_key;
/**
* Our private key for the group.
*/
- struct GNUNET_CRYPTO_EddsaPrivateKey member_key;
+ struct GNUNET_CRYPTO_EcdsaPrivateKey member_key;
/* followed by 'relay_count' `struct GNUNET_PeerIdentity`s */
-/**
- * Message sent from the client to the service OR the service to the
- * client asking for a message fragment to be replayed.
- */
-struct MulticastReplayRequestMessage
-{
-
- /**
- * The message type can be either
- * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST or
- * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST_CANCEL.
- */
- struct GNUNET_MessageHeader header;
-
- /**
- * Replay request ID.
- */
- uint32_t uid;
-
- /**
- * ID of the message that is being requested.
- */
- uint64_t message_id;
-
- /**
- * Offset of the fragment that is being requested.
- */
- uint64_t fragment_offset;
-
- /**
- * Additional flags for the request.
- */
- uint64_t flags;
-
-};
-
-
-
/**
* Message sent from the client to the service to unicast to the group origin.
*/
uint64_t message_id;
};
-
+#endif // NOT_USED
GNUNET_NETWORK_STRUCT_END