extend API to enalbe exclusive port ranges to be specified for testing-system objects
[oweals/gnunet.git] / src / include / gnunet_block_lib.h
index 51b8254d032ef1fb790ad516ae934ad7d853e11e..90a3549b16eb00ae41ae9c270823e4069d3897fb 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,35 @@ 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_GNS_NAMERECORD = 11,
+
+    /**
+     * Block for storing mesh peers
+     */
+  GNUNET_BLOCK_TYPE_MESH_PEER = 20,
+
+    /**
+     * Block for finding peers by type
+     */
+  GNUNET_BLOCK_TYPE_MESH_PEER_BY_TYPE = 21,
+
+    /**
+     * Block to store a mesh regex state
      */
-  GNUNET_BLOCK_TYPE_DNS = 10
+  GNUNET_BLOCK_TYPE_MESH_REGEX = 22,
+
+    /**
+     * Block to store a mesh regex accepting state
+     */
+  GNUNET_BLOCK_TYPE_MESH_REGEX_ACCEPT = 23
 };
 
 
@@ -156,13 +174,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);
+void
+GNUNET_BLOCK_mingle_hash (const struct GNUNET_HashCode * in, uint32_t mingle_number,
+                          struct GNUNET_HashCode * hc);
 
 
 /**
@@ -171,9 +190,8 @@ void 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);
 
 
 /**
@@ -181,13 +199,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.
  *
@@ -202,23 +221,14 @@ void GNUNET_BLOCK_context_destroy (struct GNUNET_BLOCK_Context *ctx);
  * @param reply_block_size number of bytes in reply block
  * @return characterization of result
  */
-enum GNUNET_BLOCK_EvaluationResult 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);
+enum GNUNET_BLOCK_EvaluationResult
+GNUNET_BLOCK_evaluate (struct GNUNET_BLOCK_Context *ctx,
+                       enum GNUNET_BLOCK_Type type,
+                       const struct 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);
 
 
 /**
@@ -229,14 +239,32 @@ enum GNUNET_BLOCK_EvaluationResult GNUNET_BLOCK_evaluate (struct
  * @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,
-                          size_t block_size, GNUNET_HashCode * key);
+int
+GNUNET_BLOCK_get_key (struct GNUNET_BLOCK_Context *ctx,
+                      enum GNUNET_BLOCK_Type type, const void *block,
+                      size_t block_size, struct 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 struct GNUNET_HashCode * seen_results,
+                                    unsigned int seen_results_count);
 
 
 #if 0                           /* keep Emacsens' auto-indent happy */