GNUNET_BLOCK_TYPE_FS_SBLOCK = 4,
/**
- * Type of a block that is used to advertise a namespace.
+ * Type of a block that is used to advertise a namespace.
*/
GNUNET_BLOCK_TYPE_FS_NBLOCK = 5,
*/
GNUNET_BLOCK_TYPE_TEST = 8,
-#if HAVE_MALICIOUS
/**
- * Block for simulating malicious peers.
+ * Block for storing .gnunet-domains
*/
- GNUNET_BLOCK_DHT_MALICIOUS_MESSAGE_TYPE = 9,
-#endif
+ GNUNET_BLOCK_TYPE_DNS = 10,
/**
- * Block for storing .gnunet-domains
+ * Block for storing record data
*/
- GNUNET_BLOCK_TYPE_DNS = 10
+ GNUNET_BLOCK_TYPE_GNS_NAMERECORD = 11
};
/**
* Mingle hash with the mingle_number to produce different bits.
- *
+ *
* @param in original hash code
* @param mingle_number number for hash permutation
* @param hc where to store the result.
*/
void
-GNUNET_BLOCK_mingle_hash (const GNUNET_HashCode * in,
- uint32_t mingle_number, GNUNET_HashCode * hc);
+GNUNET_BLOCK_mingle_hash (const GNUNET_HashCode * in, uint32_t mingle_number,
+ GNUNET_HashCode * hc);
/**
* @param cfg configuration to use
* @return NULL on error
*/
-struct GNUNET_BLOCK_Context *GNUNET_BLOCK_context_create (const struct
- GNUNET_CONFIGURATION_Handle
- *cfg);
+struct GNUNET_BLOCK_Context *
+GNUNET_BLOCK_context_create (const struct GNUNET_CONFIGURATION_Handle *cfg);
/**
*
* @param ctx context to destroy
*/
-void GNUNET_BLOCK_context_destroy (struct GNUNET_BLOCK_Context *ctx);
+void
+GNUNET_BLOCK_context_destroy (struct GNUNET_BLOCK_Context *ctx);
/**
* Function called to validate a reply or a request. For
* request evaluation, simply pass "NULL" for the reply_block.
- * Note that it is assumed that the reply has already been
+ * Note that it is assumed that the reply has already been
* matched to the key (and signatures checked) as it would
* be done with the "get_key" function.
*
enum GNUNET_BLOCK_Type type,
const GNUNET_HashCode * query,
struct GNUNET_CONTAINER_BloomFilter **bf,
- int32_t bf_mutator,
- const void *xquery,
- size_t xquery_size,
- const void *reply_block, size_t reply_block_size);
+ int32_t bf_mutator, const void *xquery,
+ size_t xquery_size, const void *reply_block,
+ size_t reply_block_size);
/**
* @param block block to get the key for
* @param block_size number of bytes in block
* @param key set to the key (query) for the given block
- * @return GNUNET_YES on success,
+ * @return GNUNET_YES on success,
* GNUNET_NO if the block is malformed
* GNUNET_SYSERR if type not supported
* (or if extracting a key from a block of this type does not work)
*/
int
GNUNET_BLOCK_get_key (struct GNUNET_BLOCK_Context *ctx,
- enum GNUNET_BLOCK_Type type,
- const void *block,
+ enum GNUNET_BLOCK_Type type, const void *block,
size_t block_size, GNUNET_HashCode * key);
+
+/**
+ * Construct a bloom filter that would filter out the given
+ * results.
+ *
+ * @param bf_mutator mutation value to use
+ * @param seen_results results already seen
+ * @param seen_results_count number of entries in 'seen_results'
+ * @return NULL if seen_results_count is 0, otherwise a BF
+ * that would match the given results.
+ */
+struct GNUNET_CONTAINER_BloomFilter *
+GNUNET_BLOCK_construct_bloomfilter (int32_t bf_mutator,
+ const GNUNET_HashCode * seen_results,
+ unsigned int seen_results_count);
+
+
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif