fix codesonar finding 2287.9399
[oweals/gnunet.git] / src / multicast / multicast.h
index 9abf3802cfd1f63f970333dfbf4714d3a9cac6cd..e95299a5e4ed17deb113dae0a637a3b684d20ab8 100644 (file)
@@ -1,21 +1,19 @@
 /*
      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
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet 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 GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Affero General Public License for more details.
+    
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /**
@@ -27,6 +25,9 @@
 #ifndef MULTICAST_H
 #define MULTICAST_H
 
+#include "platform.h"
+#include "gnunet_multicast_service.h"
+
 GNUNET_NETWORK_STRUCT_BEGIN
 
 
@@ -60,19 +61,19 @@ struct MulticastJoinRequestMessage
   /**
    * 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_EcdsaPublicKey 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 */
 };
 
 
@@ -125,7 +126,7 @@ struct MulticastJoinDecisionMessageHeader
    * C->S: Public key of the member requesting join.
    * S->C: Unused.
    */
-  struct GNUNET_CRYPTO_EcdsaPublicKey member_key;
+  struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
 
   /* Followed by struct MulticastJoinDecisionMessage */
 };
@@ -157,189 +158,68 @@ struct MulticastMembershipTestResultMessage
 
 
 /**
- * Message sent from the client to the service to give the service
- * a replayed message.
- */
-struct MulticastReplayResponseMessage
-{
-
-  /**
-   *
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Unique ID that identifies the associated replay session.
-   */
-  uint32_t uid;
-
-  /**
-   * An `enum GNUNET_MULTICAST_ReplayErrorCode` identifying issues (in NBO).
-   */
-  int32_t error_code;
-
-  /* followed by replayed message */
-
-};
-
-
-/**
- * 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 OR the service to the
+ * client asking for a message fragment to be replayed.
  */
-struct MulticastReplayEndMessage
+struct MulticastReplayRequestMessage
 {
 
   /**
-   *
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Unique ID that identifies the associated replay session.
-   */
-  uint32_t uid;
-
-};
-
-
-/**
- * Message sent from the client to the service to notify the service
- * about the starting of a multicast group with this peers as its origin.
- */
-struct MulticastOriginStartMessage
-{
-  /**
-   * Type: GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START
+   * The message type should be
+   * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST.
    */
   struct GNUNET_MessageHeader header;
 
   /**
-   * Always zero.
+   * S->C: Public key of the member requesting replay.
+   * C->S: Unused.
    */
-  uint32_t reserved;
+  struct GNUNET_CRYPTO_EcdsaPublicKey member_pub_key;
 
   /**
-   * Private, non-ephemeral key for the multicast group.
-   */
-  struct GNUNET_CRYPTO_EddsaPrivateKey group_key;
-
-  /**
-   * Last fragment ID sent to the group, used to continue counting fragments if
-   * we resume operating * a group.
-   */
-  uint64_t max_fragment_id;
-
-};
-
-
-struct MulticastMemberJoinMessage
-{
-  /**
-   * Type: GNUNET_MESSAGE_TYPE_MULTICAST_MEMBER_JOIN
-   */
-  struct GNUNET_MessageHeader header;
-
-  uint32_t relay_count GNUNET_PACKED;
-
-  struct GNUNET_CRYPTO_EddsaPublicKey group_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_msg */
-};
-
-
-/**
- * Message sent from the client to the service to broadcast to all group
- * members.
- */
-struct MulticastBroadcastMessage
-{
-
-  /**
-   *
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * #GNUNET_OK normally, #GNUNET_SYSERR if the origin aborted the
-   * transmission.
+   * ID of the message that is being requested.
    */
-  int32_t status;
+  uint64_t fragment_id;
 
   /**
-   * Message ID.
+   * ID of the message that is being requested.
    */
   uint64_t message_id;
 
   /**
-   * Group generation.
-   */
-  uint64_t group_generation;
-
-  /**
-   * Total message size.
-   */
-  uint64_t total_size;
-
-};
-
-
-/**
- * Message sent from the client to the service to join a multicast group.
- */
-struct MulticastJoinMessage
-{
-
-  /**
-   *
-   */
-  struct GNUNET_MessageHeader header;
-
-  /**
-   * Number of relays we (think) we already know about.
+   * Offset of the fragment that is being requested.
    */
-  uint32_t relay_count;
+  uint64_t fragment_offset;
 
   /**
-   * Public non-ephemeral key of the mutlicast group.
+   * Additional flags for the request.
    */
-  struct GNUNET_CRYPTO_EddsaPublicKey group_key;
+  uint64_t flags;
 
   /**
-   * Our private key for the group.
+   * Replay request ID.
    */
-  struct GNUNET_CRYPTO_EcdsaPrivateKey member_key;
-
-  /* followed by 'relay_count' `struct GNUNET_PeerIdentity`s */
-
+  uint32_t uid;
 };
 
 
-
 /**
- * Message sent from the client to the service OR the service to the
- * client asking for a message fragment to be replayed.
+ * Message sent from the client to the service to give the service
+ * a replayed message.
  */
-struct MulticastReplayRequestMessage
+struct MulticastReplayResponseMessage
 {
 
   /**
-   * The message type can be either
-   * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST or
-   * #GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_REQUEST_CANCEL.
+   * Type: GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE
+   *    or GNUNET_MESSAGE_TYPE_MULTICAST_REPLAY_RESPONSE_END
    */
   struct GNUNET_MessageHeader header;
 
   /**
-   * Replay request ID.
+   * ID of the message that is being requested.
    */
-  uint32_t uid;
+  uint64_t fragment_id;
 
   /**
    * ID of the message that is being requested.
@@ -356,63 +236,62 @@ struct MulticastReplayRequestMessage
    */
   uint64_t flags;
 
-};
+  /**
+   * An `enum GNUNET_MULTICAST_ReplayErrorCode` identifying issues (in NBO).
+   */
+  int32_t error_code;
 
+  /* followed by replayed message */
+};
 
 
 /**
- * Message sent from the client to the service to unicast to the group origin.
+ * Message sent from the client to the service to notify the service
+ * about the starting of a multicast group with this peers as its origin.
  */
-struct MulticastUnicastToOriginMessage
+struct MulticastOriginStartMessage
 {
-
   /**
-   *
+   * Type: GNUNET_MESSAGE_TYPE_MULTICAST_ORIGIN_START
    */
   struct GNUNET_MessageHeader header;
 
   /**
-   * Reserved (always 0).
+   * Always zero.
    */
   uint32_t reserved;
 
   /**
-   * Message ID.
+   * Private, non-ephemeral key for the multicast group.
    */
-  uint64_t message_id;
+  struct GNUNET_CRYPTO_EddsaPrivateKey group_key;
 
   /**
-   * Total message size.
+   * Last fragment ID sent to the group, used to continue counting fragments if
+   * we resume operating * a group.
    */
-  uint64_t total_size;
-
-  /* followed by payload */
-
+  uint64_t max_fragment_id;
 };
 
 
-/**
- * Message sent from the client to the service to
- * cancel unicast to the group origin.
- */
-struct MulticastUnicastToOriginCancelMessage
+struct MulticastMemberJoinMessage
 {
-
   /**
-   *
+   * Type: GNUNET_MESSAGE_TYPE_MULTICAST_MEMBER_JOIN
    */
   struct GNUNET_MessageHeader header;
 
-  /**
-   * Reserved (always 0).
-   */
-  uint32_t reserved;
+  uint32_t relay_count GNUNET_PACKED;
 
-  /**
-   * Message ID.
-   */
-  uint64_t message_id;
+  struct GNUNET_CRYPTO_EddsaPublicKey group_pub_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_msg */
 };