X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdv%2Fdv.h;h=c0a4828a20592a7f55fc05d9b68a9a9e2931bfd2;hb=37defe2dbd9ea4e5a37710404e8046acbdf4a18e;hp=0d42505bcbec2b95b99c7acfcec81055e9d21f43;hpb=c4f0fe3ea5a5ca3ce1f7dfecef719da631e4c6ac;p=oweals%2Fgnunet.git diff --git a/src/dv/dv.h b/src/dv/dv.h index 0d42505bc..c0a4828a2 100644 --- a/src/dv/dv.h +++ b/src/dv/dv.h @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2001, 2002, 2003, 2004, 2009 Christian Grothoff (and other contributing authors) + (C) 2013 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -20,125 +20,98 @@ /** * @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_EXTRA_LOGGING -#define DEBUG_DV_GOSSIP_SEND GNUNET_EXTRA_LOGGING -#define DEBUG_DV_GOSSIP_RECEIPT GNUNET_EXTRA_LOGGING -#define DEBUG_DV_MESSAGES GNUNET_EXTRA_LOGGING -#define DEBUG_DV GNUNET_EXTRA_LOGGING -#define DEBUG_DV_PEER_NUMBERS GNUNET_EXTRA_LOGGING -#define DEBUG_MESSAGE_DROP GNUNET_EXTRA_LOGGING - -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_TRANSPORT_DV_CONNECT */ struct GNUNET_MessageHeader header; /** - * The sender of the message - */ - struct GNUNET_PeerIdentity sender; - - /** - * The length of the message that was sent (appended to this end of struct) + * 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; }; /** - * 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_TRANSPORT_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_TRANSPORT_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 { @@ -148,128 +121,67 @@ struct GNUNET_DV_SendMessage struct GNUNET_MessageHeader header; /** - * Intended final recipient of this message - */ - struct GNUNET_PeerIdentity target; - - /** - * Message priority + * Unique ID for this message, for confirm callback, must never be zero. */ - uint32_t priority; - - /** - * Unique ID for this message, for confirm callback. - */ - uint32_t uid; - - /** - * How long can we delay sending? - */ - struct GNUNET_TIME_Relative timeout; - - /** - * Size of the address (appended to end of struct) - */ - uint32_t addrlen; + uint32_t uid 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) target of the message */ + struct GNUNET_PeerIdentity target; }; + /** - * Message that gets sent between nodes updating dv infos + * Message from service to DV plugin, saying that a + * SEND request was handled. */ -typedef struct +struct GNUNET_DV_AckMessage { - /* Message Header */ - struct GNUNET_MessageHeader header; - /** - * Cost from received from node to neighbor node, takes distance into account + * Type: GNUNET_MESSAGE_TYPE_DV_SEND_ACK or + * GNUNET_MESSAGE_TYPE_DV_SEND_NACK. */ - uint32_t cost GNUNET_PACKED; + struct GNUNET_MessageHeader header; /** - * Identity of neighbor we learned information about + * Which message is being acknowledged? */ - struct GNUNET_PeerIdentity neighbor; + uint32_t uid 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 { - 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; + struct GNUNET_PeerIdentity peer; -/** - * Message that gets sent between nodes indicating a peer - * was disconnected. - */ -typedef struct -{ - struct GNUNET_MessageHeader header; +}; - /** - * Identity of neighbor that was disconnected. - */ - uint32_t peer_id GNUNET_PACKED; -} p2p_dv_MESSAGE_Disconnect; GNUNET_NETWORK_STRUCT_END -struct GNUNET_DV_Handle * -GNUNET_DV_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, - GNUNET_DV_MessageReceivedHandler receive_handler, - void *receive_handler_cls); - -/** - * Disconnect from the DV service - * - * @param handle the current handle to the service to disconnect - */ -void -GNUNET_DV_disconnect (struct GNUNET_DV_Handle *handle); - #endif