X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdv%2Fdv.h;h=844cfb5e1cfb5c72724b649cb27562ae476671fc;hb=633c9ed2d8392f0620dee12513f65a4cc602ea60;hp=6f47441e4330fe6d8a0e7501fd2994f893d51199;hpb=761d07602380faac71c3d36f6b8c2c6fed410c5c;p=oweals%2Fgnunet.git diff --git a/src/dv/dv.h b/src/dv/dv.h index 6f47441e4..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,210 +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_RECEIPT GNUNET_YES -#define DEBUG_DV GNUNET_YES -#define DEBUG_DV_API GNUNET_YES - -typedef void (*GNUNET_DV_MessageReceivedHandler) (void *cls, - struct GNUNET_PeerIdentity *sender, - char *msg, - size_t msg_len, - unsigned int 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! - * - * 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. + * 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 + * Always zero. */ - struct GNUNET_MessageHeader *msg; + uint32_t reserved GNUNET_PACKED; /** - * The distance to the peer that we received the message from + * The peer that is no longer available. */ - uint32_t distance; - - /** - * Length of the sender address, appended to end of this message - */ - uint32_t sender_address_len; + struct GNUNET_PeerIdentity peer; }; /** - * Message to send a message over DV via a specific peer + * 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_SendMessage +struct GNUNET_DV_ReceivedMessage { /** - * Type: GNUNET_MESSAGE_TYPE_DV_SEND + * Type: #GNUNET_MESSAGE_TYPE_DV_RECV */ 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; - - /** - * How long can we delay sending? - */ - struct GNUNET_TIME_Relative timeout; - - /** - * Size of the address (appended to end of struct) + * The distance to the peer that we received the message from */ - uint32_t addrlen; + uint32_t distance GNUNET_PACKED; /** - * The message(s) to be sent. - */ - char *msgbuf; - - /* - * Sender, appended to end of struct tells via whom - * to send this message. + * The (actual) sender of the message */ + struct GNUNET_PeerIdentity sender; + /* payload follows */ }; + /** - * Message that gets sent between nodes updating dv infos + * Message from plugin to DV service, requesting a + * message to be routed. */ -typedef struct +struct GNUNET_DV_SendMessage { - /* Message Header */ - struct GNUNET_MessageHeader header; - /** - * Cost from received from node to neighbor node, takes distance into account + * Type: #GNUNET_MESSAGE_TYPE_DV_SEND */ - unsigned int cost GNUNET_PACKED; + struct GNUNET_MessageHeader header; /** - * Identity of neighbor we learned information about + * Reserved for alignment. 0. */ - struct GNUNET_PeerIdentity neighbor; + uint32_t reserved GNUNET_PACKED; /** - * PublicKey of neighbor. + * The (actual) target of the message */ - struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pkey; + struct GNUNET_PeerIdentity target; - /** - * 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 { + /** + * Type: #GNUNET_MESSAGE_TYPE_DV_DISTANCE_CHANGED. + */ 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? */ - unsigned int 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. */ - unsigned int recipient GNUNET_PACKED; + struct GNUNET_PeerIdentity peer; -} p2p_dv_MESSAGE_Data; + /** + * The network the peer is in + */ + uint32_t network GNUNET_PACKED; + +}; -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