X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fregex%2Fplugin_block_regex.c;h=0b3ef703e6ce449ad723e05d891398bf1d6b50e9;hb=82242cae3bb6313ee10df20570e4c14627828033;hp=19335e8157bc28d443d90d8b39580ad2b37bacb7;hpb=0244c0d86cd86e4cc90e0c112c6edeafdfb558c2;p=oweals%2Fgnunet.git diff --git a/src/regex/plugin_block_regex.c b/src/regex/plugin_block_regex.c index 19335e815..0b3ef703e 100644 --- a/src/regex/plugin_block_regex.c +++ b/src/regex/plugin_block_regex.c @@ -31,7 +31,6 @@ #include "gnunet_signatures.h" - /** * Number of bits we set per entry in the bloomfilter. * Do not change! @@ -45,37 +44,6 @@ #define REGEX_BF_SIZE 8 -/** - * How many bytes should a bloomfilter be if we have already seen - * entry_count responses? Note that #GNUNET_CONSTANTS_BLOOMFILTER_K - * gives us the number of bits set per entry. Furthermore, we should - * not re-size the filter too often (to keep it cheap). - * - * Since other peers will also add entries but not resize the filter, - * we should generally pick a slightly larger size than what the - * strict math would suggest. - * - * @param entry_count expected number of entries in the Bloom filter - * @return must be a power of two and smaller or equal to 2^15. - */ -static size_t -compute_bloomfilter_size (unsigned int entry_count) -{ - size_t size; - unsigned int ideal = (entry_count * BLOOMFILTER_K) / 4; - uint16_t max = 1 << 15; - - if (entry_count > max) - return max; - size = 8; - while ((size < max) && (size < ideal)) - size *= 2; - if (size > max) - return max; - return size; -} - - /** * Create a new block group. * @@ -102,7 +70,8 @@ block_plugin_regex_create_group (void *cls, guard = va_arg (va, const char *); if (0 == strcmp (guard, "seen-set-size")) - bf_size = compute_bloomfilter_size (va_arg (va, unsigned int)); + bf_size = GNUNET_BLOCK_GROUP_compute_bloomfilter_size (va_arg (va, unsigned int), + BLOOMFILTER_K); else if (0 == strcmp (guard, "filter-size")) bf_size = va_arg (va, unsigned int); @@ -300,6 +269,7 @@ evaluate_block_regex_accept (void *cls, * be done with the #GNUNET_BLOCK_get_key() function. * * @param cls closure + * @param ctx block context * @param type block type * @param bg group to evaluate against * @param eo control flags @@ -312,6 +282,7 @@ evaluate_block_regex_accept (void *cls, */ static enum GNUNET_BLOCK_EvaluationResult block_plugin_regex_evaluate (void *cls, + struct GNUNET_BLOCK_Context *ctx, enum GNUNET_BLOCK_Type type, struct GNUNET_BLOCK_Group *bg, enum GNUNET_BLOCK_EvaluationOptions eo,