X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fblock%2Fplugin_block_test.c;h=b692d6230efe0de4d33178d39cb2895c335a8c3b;hb=60790f6e89914decc21c850d07aef9be237a6c41;hp=1cf8c701dcb16a45a0a2762d9e5ec8c2b63bcd3e;hpb=3756b235a8ef6a680a1bc7197c1ce45d778af09c;p=oweals%2Fgnunet.git diff --git a/src/block/plugin_block_test.c b/src/block/plugin_block_test.c index 1cf8c701d..b692d6230 100644 --- a/src/block/plugin_block_test.c +++ b/src/block/plugin_block_test.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet - (C) 2010 Christian Grothoff (and other contributing authors) + Copyright (C) 2010 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** @@ -26,9 +26,7 @@ */ #include "platform.h" -#include "plugin_block.h" - -#define DEBUG_TEST GNUNET_NO +#include "gnunet_block_plugin.h" /** @@ -43,53 +41,56 @@ * * @param cls closure * @param type block type + * @param eo control flags * @param query original query (hash) * @param bf pointer to bloom filter associated with query; possibly updated (!) - * @param bf_mutator mutation value for bf + * @param bf_mutator mutation value for @a bf * @param xquery extrended query data (can be NULL, depending on type) - * @param xquery_size number of bytes in xquery + * @param xquery_size number of bytes in @a xquery * @param reply_block response to validate - * @param reply_block_size number of bytes in reply block + * @param reply_block_size number of bytes in @a reply_block * @return characterization of result */ static enum GNUNET_BLOCK_EvaluationResult block_plugin_test_evaluate (void *cls, - 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_Type type, + enum GNUNET_BLOCK_EvaluationOptions eo, + 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) { - GNUNET_HashCode chash; - GNUNET_HashCode mhash; + struct GNUNET_HashCode chash; + struct GNUNET_HashCode mhash; - if (type != GNUNET_BLOCK_TYPE_TEST) + if ( GNUNET_BLOCK_TYPE_TEST != type) return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED; - if (xquery_size != 0) - GNUNET_BLOCK_EVALUATION_REQUEST_INVALID; - if (reply_block_size == 0) - GNUNET_BLOCK_EVALUATION_REQUEST_VALID; - - GNUNET_CRYPTO_hash (reply_block, - reply_block_size, - &chash); - GNUNET_BLOCK_mingle_hash (&chash, bf_mutator, &mhash); - if (NULL != *bf) + if (0 != xquery_size) + { + GNUNET_break_op (0); + return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID; + } + if (NULL == reply_block) + return GNUNET_BLOCK_EVALUATION_REQUEST_VALID; + + if (NULL != bf) + { + GNUNET_CRYPTO_hash (reply_block, reply_block_size, &chash); + GNUNET_BLOCK_mingle_hash (&chash, bf_mutator, &mhash); + if (NULL != *bf) { - if (GNUNET_YES == GNUNET_CONTAINER_bloomfilter_test (*bf, - &mhash)) - return GNUNET_BLOCK_EVALUATION_OK_DUPLICATE; + if (GNUNET_YES == GNUNET_CONTAINER_bloomfilter_test (*bf, &mhash)) + return GNUNET_BLOCK_EVALUATION_OK_DUPLICATE; } - else + else { - *bf = GNUNET_CONTAINER_bloomfilter_init (NULL, - 8, - BLOOMFILTER_K); + *bf = GNUNET_CONTAINER_bloomfilter_init (NULL, 8, BLOOMFILTER_K); } - GNUNET_CONTAINER_bloomfilter_add (*bf, &mhash); + GNUNET_CONTAINER_bloomfilter_add (*bf, &mhash); + } return GNUNET_BLOCK_EVALUATION_OK_MORE; } @@ -100,38 +101,39 @@ block_plugin_test_evaluate (void *cls, * @param cls closure * @param type block type * @param block block to get the key for - * @param block_size number of bytes in block + * @param block_size number of bytes in @a 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_OK on success, #GNUNET_SYSERR if type not supported * (or if extracting a key from a block of this type does not work) */ static int -block_plugin_test_get_key (void *cls, - enum GNUNET_BLOCK_Type type, - const void *block, - size_t block_size, - GNUNET_HashCode *key) +block_plugin_test_get_key (void *cls, enum GNUNET_BLOCK_Type type, + const void *block, size_t block_size, + struct GNUNET_HashCode * key) { /* always fails since there is no fixed relationship between - keys and values for test values */ + * keys and values for test values */ return GNUNET_SYSERR; } - + /** * Entry point for the plugin. + * + * @param cls NULL + * @return the exported block API */ void * -gnunet_plugin_block_test_init (void *cls) +libgnunet_plugin_block_test_init (void *cls) { - static enum GNUNET_BLOCK_Type types[] = - { - GNUNET_BLOCK_TYPE_TEST, - GNUNET_BLOCK_TYPE_ANY /* end of list */ - }; + static enum GNUNET_BLOCK_Type types[] = + { + GNUNET_BLOCK_TYPE_TEST, + GNUNET_BLOCK_TYPE_ANY /* end of list */ + }; struct GNUNET_BLOCK_PluginFunctions *api; - api = GNUNET_malloc (sizeof (struct GNUNET_BLOCK_PluginFunctions)); + api = GNUNET_new (struct GNUNET_BLOCK_PluginFunctions); api->evaluate = &block_plugin_test_evaluate; api->get_key = &block_plugin_test_get_key; api->types = types; @@ -141,11 +143,14 @@ gnunet_plugin_block_test_init (void *cls) /** * Exit point from the plugin. + * + * @param cls the return value from #libgnunet_plugin_block_test_init + * @return NULL */ void * -gnunet_plugin_block_test_done (void *cls) +libgnunet_plugin_block_test_done (void *cls) { - struct GNUNET_TRANSPORT_PluginFunctions *api = cls; + struct GNUNET_BLOCK_PluginFunctions *api = cls; GNUNET_free (api); return NULL;