X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdv%2Fdv.h;h=10b531cedc0e9efcae5a5aeeccd2e7698bd20653;hb=cb3c882dbb05a797728dfd8b5983ade5a8999eac;hp=b665b4d706436ac148b3fc8bf3feb3331ae3448f;hpb=e330680665c97ce4ec3e2ccca1b24981830ab5da;p=oweals%2Fgnunet.git diff --git a/src/dv/dv.h b/src/dv/dv.h index b665b4d70..10b531ced 100644 --- a/src/dv/dv.h +++ b/src/dv/dv.h @@ -4,7 +4,7 @@ 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 @@ -29,20 +29,24 @@ #include "gnunet_common.h" #define DEBUG_DV_GOSSIP GNUNET_NO -#define DEBUG_DV GNUNET_YES -#define DEBUG_DV_API GNUNET_YES +#define DEBUG_DV_GOSSIP_SEND GNUNET_NO +#define DEBUG_DV_GOSSIP_RECEIPT GNUNET_NO +#define DEBUG_DV_MESSAGES GNUNET_NO +#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, - unsigned int distance, + uint32_t distance, char *sender_address, size_t sender_address_len); /** * DV Message, contains a message that was received - * via DV for this peer! + * via DV for this peer! Internal. * * Sender address is copied to the end of this struct, * followed by the actual message received. @@ -60,25 +64,21 @@ struct GNUNET_DV_MessageReceived struct GNUNET_PeerIdentity sender; /** - * The message that was sent + * The length of the message that was sent (appended to this end of struct) */ - size_t msg_len; + uint32_t msg_len; /** * The distance to the peer that we received the message from */ - size_t distance; - - /** - * Length of the sender address, appended to end of this message - */ - size_t sender_address_len; + uint32_t distance; }; /** * DV Message, indicates that we have learned of a new DV level peer. + * Internal. * * Sender address is copied to the end of this struct. */ @@ -102,18 +102,41 @@ struct GNUNET_DV_ConnectMessage /** * The distance to the peer that we received the message from */ - size_t distance; + uint32_t distance; /** * Length of the sender address, appended to end of this message */ - size_t sender_address_len; + uint32_t sender_address_len; }; +/** + * Message to return result from a send attempt. + * Internal. + */ +struct GNUNET_DV_SendResultMessage +{ + /** + * Type: GNUNET_MESSAGE_TYPE_DV_SEND_RESULT + */ + struct GNUNET_MessageHeader header; + + /** + * Unique ID for attempted sent message. + */ + uint32_t uid; + + /** + * Result of attempted send, 0 for send okay, + * 1 for failure of any reason. + */ + uint32_t result; +}; /** - * Message to send a message over DV via a specific peer + * Message to send a message over DV via a specific peer. + * Internal. */ struct GNUNET_DV_SendMessage { @@ -128,19 +151,14 @@ struct GNUNET_DV_SendMessage struct GNUNET_PeerIdentity target; /** - * The message(s) to be sent. + * Message priority */ - char *msgbuf; + uint32_t priority; /** - * The size of the msgbuf + * Unique ID for this message, for confirm callback. */ - size_t msgbuf_size; - - /** - * Message priority - */ - size_t priority; + uint32_t uid; /** * How long can we delay sending? @@ -150,7 +168,12 @@ struct GNUNET_DV_SendMessage /** * Size of the address (appended to end of struct) */ - size_t addrlen; + uint32_t addrlen; + + /** + * The message(s) to be sent. + */ + char *msgbuf; /* * Sender, appended to end of struct tells via whom @@ -170,7 +193,7 @@ typedef struct /** * Cost from received from node to neighbor node, takes distance into account */ - unsigned int cost GNUNET_PACKED; + uint32_t cost GNUNET_PACKED; /** * Identity of neighbor we learned information about @@ -185,7 +208,7 @@ typedef struct /** * Neighbor ID to use when sending to this peer */ - unsigned int neighbor_id GNUNET_PACKED; + uint32_t neighbor_id GNUNET_PACKED; } p2p_dv_MESSAGE_NeighborInfo; @@ -196,27 +219,54 @@ typedef struct { struct GNUNET_MessageHeader header; + /** + * Unique ID for this message. Will be zero unless + * message tracking is desired. + */ + uint32_t uid GNUNET_PACKED; + /** * Identity of peer that ultimately sent the message. * Should be looked up in the set of 'neighbor_id's of * the referring peer. */ - unsigned int sender GNUNET_PACKED; + uint32_t sender GNUNET_PACKED; /** * Identity of neighbor this message is going to. Should * be looked up in the set of our own identifiers for * neighbors! */ - unsigned int recipient GNUNET_PACKED; + 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; + + /** + * Identity of neighbor that was disconnected. + */ + uint32_t peer_id 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_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