X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdv%2Fdv.h;h=844cfb5e1cfb5c72724b649cb27562ae476671fc;hb=633c9ed2d8392f0620dee12513f65a4cc602ea60;hp=28a56031ef204a1257b9b36000909b8b2a4153ac;hpb=0a1e104265a6d8c773a6fb31ef3dc7605e65c750;p=oweals%2Fgnunet.git diff --git a/src/dv/dv.h b/src/dv/dv.h index 28a56031e..844cfb5e1 100644 --- a/src/dv/dv.h +++ b/src/dv/dv.h @@ -1,10 +1,10 @@ /* This file is part of GNUnet. - (C) 2001, 2002, 2003, 2004, 2009 Christian Grothoff (and other contributing authors) + Copyright (C) 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 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -14,263 +14,159 @@ 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. */ /** * @author Christian Grothoff - * @author NOT Nathan Evans * @file dv/dv.h + * @brief IPC messages between DV service and DV plugin */ #ifndef DV_H #define DV_H #include "gnunet_common.h" -#define DEBUG_DV_GOSSIP GNUNET_NO -#define DEBUG_DV_GOSSIP_SEND GNUNET_NO -#define DEBUG_DV_GOSSIP_RECEIPT GNUNET_NO -#define DEBUG_DV_MESSAGES GNUNET_YES -#define DEBUG_DV GNUNET_NO -#define DEBUG_DV_PEER_NUMBERS GNUNET_NO -#define DEBUG_MESSAGE_DROP GNUNET_NO - -typedef void (*GNUNET_DV_MessageReceivedHandler) (void *cls, - struct GNUNET_PeerIdentity *sender, - char *msg, - size_t msg_len, - uint32_t distance, - char *sender_address, - size_t sender_address_len); +GNUNET_NETWORK_STRUCT_BEGIN /** - * DV Message, contains a message that was received - * via DV for this peer! Internal. - * - * Sender address is copied to the end of this struct, - * followed by the actual message received. + * DV service tells plugin about a DV-connection being + * now available. */ -struct GNUNET_DV_MessageReceived +struct GNUNET_DV_ConnectMessage { /** - * Type: GNUNET_MESSAGE_TYPE_TRANSPORT_DV_MESSAGE + * Type: #GNUNET_MESSAGE_TYPE_DV_CONNECT */ struct GNUNET_MessageHeader header; /** - * The sender of the message - */ - struct GNUNET_PeerIdentity sender; - - /** - * The message that was sent + * The distance to the peer that we are now connected to */ - uint32_t msg_len; + uint32_t distance GNUNET_PACKED; /** - * The distance to the peer that we received the message from + * The other peer (at the given distance). */ - uint32_t distance; + struct GNUNET_PeerIdentity peer; /** - * Length of the sender address, appended to end of this message + * The network the peer is in */ - uint32_t sender_address_len; + uint32_t network GNUNET_PACKED; }; /** - * DV Message, indicates that we have learned of a new DV level peer. - * Internal. + * DV service tells plugin about a DV-connection being + * no longer available. * - * Sender address is copied to the end of this struct. + * Sender address is copied to the end of this struct, + * followed by the actual message received. */ -struct GNUNET_DV_ConnectMessage +struct GNUNET_DV_DisconnectMessage { /** - * Type: GNUNET_MESSAGE_TYPE_TRANSPORT_DV_MESSAGE + * Type: #GNUNET_MESSAGE_TYPE_DV_DISCONNECT */ struct GNUNET_MessageHeader header; /** - * The sender of the message - */ - struct GNUNET_PeerIdentity *sender; - - /** - * The message that was sent - */ - struct GNUNET_MessageHeader *msg; - - /** - * The distance to the peer that we received the message from + * Always zero. */ - uint32_t distance; + uint32_t reserved GNUNET_PACKED; /** - * Length of the sender address, appended to end of this message + * The peer that is no longer available. */ - uint32_t sender_address_len; + struct GNUNET_PeerIdentity peer; }; + /** - * Message to return result from a send attempt. - * Internal. + * DV Message, contains a message that was received via DV for this + * peer. Send from the DV service to the DV plugin. + * + * Sender address is copied to the end of this struct, + * followed by the actual message received. */ -struct GNUNET_DV_SendResultMessage +struct GNUNET_DV_ReceivedMessage { /** - * Type: GNUNET_MESSAGE_TYPE_DV_SEND_RESULT + * Type: #GNUNET_MESSAGE_TYPE_DV_RECV */ struct GNUNET_MessageHeader header; /** - * Unique ID for attempted sent message. + * The distance to the peer that we received the message from */ - uint32_t uid; + uint32_t distance GNUNET_PACKED; /** - * Result of attempted send, 0 for send okay, - * 1 for failure of any reason. + * The (actual) sender of the message */ - uint32_t result; + struct GNUNET_PeerIdentity sender; + + /* payload follows */ }; + /** - * Message to send a message over DV via a specific peer. - * Internal. + * Message from plugin to DV service, requesting a + * message to be routed. */ struct GNUNET_DV_SendMessage { /** - * Type: GNUNET_MESSAGE_TYPE_DV_SEND + * Type: #GNUNET_MESSAGE_TYPE_DV_SEND */ struct GNUNET_MessageHeader header; /** - * Intended final recipient of this message - */ - struct GNUNET_PeerIdentity target; - - /** - * The size of the msgbuf - */ - uint32_t msgbuf_size; - - /** - * Message priority - */ - uint32_t priority; - - /** - * Unique ID for this message, for confirm callback. + * Reserved for alignment. 0. */ - uint32_t uid; + uint32_t reserved GNUNET_PACKED; /** - * How long can we delay sending? - */ - struct GNUNET_TIME_Relative timeout; - - /** - * Size of the address (appended to end of struct) - */ - uint32_t addrlen; - - /** - * The message(s) to be sent. - */ - char *msgbuf; - - /* - * Sender, appended to end of struct tells via whom - * to send this message. + * The (actual) target of the message */ + struct GNUNET_PeerIdentity target; }; -/** - * Message that gets sent between nodes updating dv infos - */ -typedef struct -{ - /* Message Header */ - struct GNUNET_MessageHeader header; - - /** - * Cost from received from node to neighbor node, takes distance into account - */ - uint32_t cost GNUNET_PACKED; - - /** - * Identity of neighbor we learned information about - */ - struct GNUNET_PeerIdentity neighbor; - - /** - * PublicKey of neighbor. - */ - struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; - - /** - * Neighbor ID to use when sending to this peer - */ - uint32_t neighbor_id GNUNET_PACKED; - -} p2p_dv_MESSAGE_NeighborInfo; /** - * Message that gets sent between nodes carrying information + * Message from service to DV plugin, saying that our + * distance to another peer changed. */ -typedef struct +struct GNUNET_DV_DistanceUpdateMessage { - struct GNUNET_MessageHeader header; - /** - * Unique ID for this message. Will be zero unless - * message tracking is desired. + * Type: #GNUNET_MESSAGE_TYPE_DV_DISTANCE_CHANGED. */ - uint32_t uid GNUNET_PACKED; + struct GNUNET_MessageHeader header; /** - * Identity of peer that ultimately sent the message. - * Should be looked up in the set of 'neighbor_id's of - * the referring peer. + * What is the new distance? */ - uint32_t sender GNUNET_PACKED; + uint32_t distance GNUNET_PACKED; /** - * Identity of neighbor this message is going to. Should - * be looked up in the set of our own identifiers for - * neighbors! + * The peer for which the distance changed. */ - uint32_t recipient GNUNET_PACKED; - -} p2p_dv_MESSAGE_Data; - -/** - * Message that gets sent between nodes indicating a peer - * was disconnected. - */ -typedef struct -{ - struct GNUNET_MessageHeader header; + struct GNUNET_PeerIdentity peer; /** - * Identity of neighbor that was disconnected. + * The network the peer is in */ - uint32_t peer_id GNUNET_PACKED; + uint32_t network GNUNET_PACKED; -} p2p_dv_MESSAGE_Disconnect; +}; -struct GNUNET_DV_Handle * -GNUNET_DV_connect (struct GNUNET_SCHEDULER_Handle *sched, - const struct GNUNET_CONFIGURATION_Handle *cfg, - GNUNET_DV_MessageReceivedHandler receive_handler, - void *receive_handler_cls); +GNUNET_NETWORK_STRUCT_END #endif