Tor
0.4.7.0-alpha-dev
|
Header for bloomfilt.c. More...
Go to the source code of this file.
Macros | |
#define | BLOOMFILT_N_HASHES 2 |
#define | BLOOMFILT_KEY_LEN (BLOOMFILT_N_HASHES * 16) |
#define | bloomfilt_free(set) FREE_AND_NULL(bloomfilt_t, bloomfilt_free_, (set)) |
Typedefs | |
typedef uint64_t(* | bloomfilt_hash_fn) (const struct sipkey *key, const void *item) |
Functions | |
void | bloomfilt_add (bloomfilt_t *set, const void *item) |
int | bloomfilt_probably_contains (const bloomfilt_t *set, const void *item) |
bloomfilt_t * | bloomfilt_new (int max_elements, bloomfilt_hash_fn hashfn, const uint8_t *random_key) |
void | bloomfilt_free_ (bloomfilt_t *set) |
Header for bloomfilt.c.
Definition in file bloomfilt.h.
#define BLOOMFILT_KEY_LEN (BLOOMFILT_N_HASHES * 16) |
How much key material do we need to randomize hashes?
Definition at line 26 of file bloomfilt.h.
#define BLOOMFILT_N_HASHES 2 |
How many 64-bit siphash values to extract per item.
Definition at line 23 of file bloomfilt.h.
void bloomfilt_add | ( | bloomfilt_t * | set, |
const void * | item | ||
) |
Add the element item to set.
Definition at line 38 of file bloomfilt.c.
Referenced by address_set_add(), and digestset_add().
void bloomfilt_free_ | ( | bloomfilt_t * | set | ) |
Free all storage held in set.
Definition at line 107 of file bloomfilt.c.
bloomfilt_t* bloomfilt_new | ( | int | max_elements, |
bloomfilt_hash_fn | hashfn, | ||
const uint8_t * | random_key | ||
) |
Return a newly allocated bloomfilt_t, optimized to hold a total of max_elements elements with a reasonably low false positive weight.
Uses the siphash-based function hashfn to compute hard-to-collide functions of the items, and the key material random_key to key the hash. There must be BLOOMFILT_KEY_LEN bytes in the supplied key.
Definition at line 78 of file bloomfilt.c.
int bloomfilt_probably_contains | ( | const bloomfilt_t * | set, |
const void * | item | ||
) |
If item is in set, return nonzero. Otherwise, probably return zero.
Definition at line 54 of file bloomfilt.c.
Referenced by address_set_probably_contains(), and digestset_probably_contains().