X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdht%2Fdht.h;h=772471a7c40a78c2a163f8716f0aeb6491bb6f69;hb=d0b4927e6ab7e8b9874dd7807055e77fb4c5163f;hp=c8e2baff189a60e88e2249aff3c23a5203c1f450;hpb=afee959fde9dc953c1b9153ba2134848b422fde0;p=oweals%2Fgnunet.git diff --git a/src/dht/dht.h b/src/dht/dht.h index c8e2baff1..772471a7c 100644 --- a/src/dht/dht.h +++ b/src/dht/dht.h @@ -24,10 +24,18 @@ * @file dht/dht.h */ -#ifndef DHT_H_ -#define DHT_H_ +#ifndef DHT_H +#define DHT_H +/** + * Size of the bloom filter the DHT uses to filter peers. + */ +#define DHT_BLOOM_SIZE 128 + + +GNUNET_NETWORK_STRUCT_BEGIN + /** * Message which indicates the DHT should cancel outstanding * requests and discard any state. @@ -52,7 +60,7 @@ struct GNUNET_DHT_ClientGetStopMessage /** * Key of this request */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; }; @@ -87,7 +95,7 @@ struct GNUNET_DHT_ClientGetMessage /** * The key to search for */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; /** * Unique ID identifying this request, if 0 then @@ -140,7 +148,7 @@ struct GNUNET_DHT_ClientResultMessage /** * The key that was searched for */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; /* put path, get path and actual data are copied to end of this dealy do */ @@ -172,6 +180,11 @@ struct GNUNET_DHT_ClientPutMessage */ uint32_t desired_replication_level GNUNET_PACKED; + /** + * Unique ID for the PUT message. + */ + uint64_t unique_id GNUNET_PACKED; + /** * How long should this data persist? */ @@ -180,11 +193,220 @@ struct GNUNET_DHT_ClientPutMessage /** * The key to store the value under. */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; /* DATA copied to end of this message */ }; +/** + * Message to confirming receipt of PUT, sent from DHT service to clients. + */ +struct GNUNET_DHT_ClientPutConfirmationMessage +{ + /** + * Type: GNUNET_MESSAGE_TYPE_DHT_CLIENT_PUT_OK + */ + struct GNUNET_MessageHeader header; + + /** + * Always zero. + */ + uint32_t reserved GNUNET_PACKED; + + /** + * Unique ID from the PUT message that is being confirmed. + */ + uint64_t unique_id GNUNET_PACKED; + +}; + + + +/** + * Message to monitor put requests going through peer, DHT service -> clients. + */ +struct GNUNET_DHT_MonitorPutMessage +{ + /** + * Type: GNUNET_MESSAGE_TYPE_DHT_MONITOR_PUT + */ + struct GNUNET_MessageHeader header; + + /** + * Message options, actually an 'enum GNUNET_DHT_RouteOption' value. + */ + uint32_t options GNUNET_PACKED; + + /** + * The type of data in the request. + */ + uint32_t type GNUNET_PACKED; + + /** + * Hop count so far. + */ + uint32_t hop_count GNUNET_PACKED; + + /** + * Replication level for this message + */ + uint32_t desired_replication_level GNUNET_PACKED; + + /** + * Number of peers recorded in the outgoing path from source to the + * storage location of this message. + */ + uint32_t put_path_length GNUNET_PACKED; + + /** + * How long should this data persist? + */ + struct GNUNET_TIME_AbsoluteNBO expiration_time; + + /** + * The key to store the value under. + */ + struct GNUNET_HashCode key; + + /* put path (if tracked) */ + + /* Payload */ + +}; + + +/** + * Message to request monitoring messages, clients -> DHT service. + */ +struct GNUNET_DHT_MonitorStartStopMessage +{ + /** + * Type: GNUNET_MESSAGE_TYPE_DHT_MONITOR_(START|STOP) + */ + struct GNUNET_MessageHeader header; + + /** + * The type of data desired, GNUNET_BLOCK_TYPE_ANY for all. + */ + uint32_t type GNUNET_PACKED; + + /** + * Flag whether to notify about GET messages. + */ + int16_t get GNUNET_PACKED; + + /** + * Flag whether to notify about GET_REPONSE messages. + */ + int16_t get_resp GNUNET_PACKED; + + /** + * Flag whether to notify about PUT messages. + */ + int16_t put GNUNET_PACKED; + + /** + * Flag whether to use the provided key to filter messages. + */ + int16_t filter_key GNUNET_PACKED; + + /** + * The key to filter messages by. + */ + struct GNUNET_HashCode key; +}; + + +/** + * Message to monitor get requests going through peer, DHT service -> clients. + */ +struct GNUNET_DHT_MonitorGetMessage +{ + /** + * Type: GNUNET_MESSAGE_TYPE_DHT_MONITOR_PUT + */ + struct GNUNET_MessageHeader header; + + /** + * Message options, actually an 'enum GNUNET_DHT_RouteOption' value. + */ + uint32_t options GNUNET_PACKED; + + /** + * The type of data in the request. + */ + uint32_t type GNUNET_PACKED; + + /** + * Hop count + */ + uint32_t hop_count GNUNET_PACKED; + + /** + * Replication level for this message + */ + uint32_t desired_replication_level GNUNET_PACKED; + + /** + * Number of peers recorded in the outgoing path from source to the + * storage location of this message. + */ + uint32_t get_path_length GNUNET_PACKED; + + /** + * The key to store the value under. + */ + struct GNUNET_HashCode key; + + /* get path (if tracked) */ + +}; + +/** + * Message to monitor get results going through peer, DHT service -> clients. + */ +struct GNUNET_DHT_MonitorGetRespMessage +{ + /** + * Type: GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT + */ + struct GNUNET_MessageHeader header; + + /** + * Content type. + */ + uint32_t type GNUNET_PACKED; + + /** + * Length of the PUT path that follows (if tracked). + */ + uint32_t put_path_length GNUNET_PACKED; + + /** + * Length of the GET path that follows (if tracked). + */ + uint32_t get_path_length GNUNET_PACKED; + + /** + * When does the content expire? + */ + struct GNUNET_TIME_AbsoluteNBO expiration_time; + + /** + * The key of the corresponding GET request. + */ + struct GNUNET_HashCode key; + + /* put path (if tracked) */ + + /* get path (if tracked) */ + + /* Payload */ + +}; + +GNUNET_NETWORK_STRUCT_END + #endif