X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdht%2Fdht.h;h=772471a7c40a78c2a163f8716f0aeb6491bb6f69;hb=d0b4927e6ab7e8b9874dd7807055e77fb4c5163f;hp=479c3527deed7c626c060926808cbfa24f89a052;hpb=793b4afffb37ca663e9a4fb6155dddd688b21b52;p=oweals%2Fgnunet.git diff --git a/src/dht/dht.h b/src/dht/dht.h index 479c3527d..772471a7c 100644 --- a/src/dht/dht.h +++ b/src/dht/dht.h @@ -31,9 +31,11 @@ /** * Size of the bloom filter the DHT uses to filter peers. */ -#define DHT_BLOOM_SIZE 1024 +#define DHT_BLOOM_SIZE 128 +GNUNET_NETWORK_STRUCT_BEGIN + /** * Message which indicates the DHT should cancel outstanding * requests and discard any state. @@ -58,7 +60,7 @@ struct GNUNET_DHT_ClientGetStopMessage /** * Key of this request */ - GNUNET_HashCode key; + struct GNUNET_HashCode key; }; @@ -93,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 @@ -146,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 */ @@ -178,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? */ @@ -186,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