/**
* Data block (leaf) in the CHK tree.
*/
- GNUNET_BLOCK_TYPE_DBLOCK = 1,
+ GNUNET_BLOCK_TYPE_FS_DBLOCK = 1,
/**
* Inner block in the CHK tree.
*/
- GNUNET_BLOCK_TYPE_IBLOCK = 2,
+ GNUNET_BLOCK_TYPE_FS_IBLOCK = 2,
/**
- * Type of a block representing a keyword search result.
+ * Type of a block representing a keyword search result. Note that
+ * the values for KBLOCK, SBLOCK and NBLOCK must be consecutive.
*/
- GNUNET_BLOCK_TYPE_KBLOCK = 3,
+ GNUNET_BLOCK_TYPE_FS_KBLOCK = 3,
/**
* Type of a block that is used to advertise content in a namespace.
*/
- GNUNET_BLOCK_TYPE_SBLOCK = 4,
+ GNUNET_BLOCK_TYPE_FS_SBLOCK = 4,
+
+ /**
+ * Type of a block that is used to advertise a namespace.
+ */
+ GNUNET_BLOCK_TYPE_FS_NBLOCK = 5,
/**
* Type of a block representing a block to be encoded on demand from disk.
* Should never appear on the network directly.
*/
- GNUNET_BLOCK_TYPE_ONDEMAND = 5,
+ GNUNET_BLOCK_TYPE_FS_ONDEMAND = 6,
/**
- * Type of a block that is used to advertise a namespace.
+ * Type of a block that contains a HELLO for a peer (for
+ * DHT find-peer operations).
*/
- GNUNET_BLOCK_TYPE_NBLOCK = 6,
+ GNUNET_BLOCK_TYPE_DHT_HELLO = 7,
- GNUNET_BLOCK_TYPE_TEST = 9999
-
- };
+ /**
+ * Block for testing.
+ */
+ GNUNET_BLOCK_TYPE_TEST = 8,
+#if HAVE_MALICIOUS
+ /**
+ * Block for simulating malicious peers.
+ */
+ GNUNET_BLOCK_DHT_MALICIOUS_MESSAGE_TYPE = 9,
+#endif
+ /**
+ * Block for storing .gnunet-domains
+ */
+ GNUNET_BLOCK_TYPE_DNS = 10
+ };
/**
struct GNUNET_BLOCK_Context;
+/**
+ * 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);
+
+
/**
* Create a block context. Loads the block plugins.
*
* @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_OK on success, GNUNET_SYSERR if type not supported
+ * @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