switch (type) {
case DATASET_TYPE_MD5:
set->hash = THashInit(cnf_name, sizeof(Md5Type), Md5StrSet,
- Md5StrFree, Md5StrHash, Md5StrCompare);
+ Md5StrFree, Md5StrHash, Md5StrCompare, load != NULL ? 1 : 0);
if (set->hash == NULL)
goto out_err;
if (DatasetLoadMd5(set) < 0)
break;
case DATASET_TYPE_STRING:
set->hash = THashInit(cnf_name, sizeof(StringType), StringSet,
- StringFree, StringHash, StringCompare);
+ StringFree, StringHash, StringCompare, load != NULL ? 1 : 0);
if (set->hash == NULL)
goto out_err;
if (DatasetLoadString(set) < 0)
break;
case DATASET_TYPE_SHA256:
set->hash = THashInit(cnf_name, sizeof(Sha256Type), Sha256StrSet,
- Sha256StrFree, Sha256StrHash, Sha256StrCompare);
+ Sha256StrFree, Sha256StrHash, Sha256StrCompare, load != NULL ? 1 : 0);
if (set->hash == NULL)
goto out_err;
if (DatasetLoadSha256(set) < 0)
int (*DataSet)(void *, void *),
void (*DataFree)(void *),
uint32_t (*DataHash)(void *),
- bool (*DataCompare)(void *, void *))
+ bool (*DataCompare)(void *, void *),
+ bool reset_memcap)
{
THashTableContext *ctx = SCCalloc(1, sizeof(*ctx));
BUG_ON(!ctx);
/* set defaults */
ctx->config.hash_rand = (uint32_t)RandomGet();
ctx->config.hash_size = THASH_DEFAULT_HASHSIZE;
- ctx->config.memcap = THASH_DEFAULT_MEMCAP;
+ ctx->config.memcap = reset_memcap ? UINT64_MAX : THASH_DEFAULT_MEMCAP;
ctx->config.prealloc = THASH_DEFAULT_PREALLOC;
SC_ATOMIC_INIT(ctx->counter);
int (*DataSet)(void *dst, void *src),
void (*DataFree)(void *),
uint32_t (*DataHash)(void *),
- bool (*DataCompare)(void *, void *));
+ bool (*DataCompare)(void *, void *),
+ bool reset_memcap);
void THashShutdown(THashTableContext *ctx);