- fixed string to address parsing
[oweals/gnunet.git] / src / include / gnunet_block_lib.h
index ae68848693a6830ba9b3eab3b7dd26dbb1688379..adc17751dd705212377d619034659aa24c25ef86 100644 (file)
@@ -69,7 +69,7 @@ enum GNUNET_BLOCK_Type
   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,
 
@@ -90,17 +90,15 @@ enum GNUNET_BLOCK_Type
      */
   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
 };
 
 
@@ -156,14 +154,14 @@ 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);
+GNUNET_BLOCK_mingle_hash (const GNUNET_HashCode * in, uint32_t mingle_number,
+                          GNUNET_HashCode * hc);
 
 
 /**
@@ -172,9 +170,8 @@ GNUNET_BLOCK_mingle_hash (const GNUNET_HashCode * in,
  * @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);
 
 
 /**
@@ -182,13 +179,14 @@ struct GNUNET_BLOCK_Context *GNUNET_BLOCK_context_create (const struct
  *
  * @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.
  *
@@ -208,10 +206,9 @@ GNUNET_BLOCK_evaluate (struct GNUNET_BLOCK_Context *ctx,
                        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);
 
 
 /**
@@ -222,18 +219,34 @@ GNUNET_BLOCK_evaluate (struct GNUNET_BLOCK_Context *ctx,
  * @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