ContainerUrlRangeList.ht = THashInit("app-layer.protocols.http.byterange",
sizeof(HttpRangeContainerFile), ContainerUrlRangeSet, ContainerUrlRangeFree,
- ContainerUrlRangeHash, ContainerUrlRangeCompare, ContainerValueRangeTimeout, false,
- memcap, CONTAINER_URLRANGE_HASH_SIZE);
+ ContainerUrlRangeHash, ContainerUrlRangeCompare, ContainerValueRangeTimeout, NULL,
+ false, memcap, CONTAINER_URLRANGE_HASH_SIZE);
ContainerUrlRangeList.timeout = timeout;
SCLogDebug("containers started");
return hash;
}
+uint32_t StringGetLength(void *s)
+{
+ StringType *str = s;
+ return str->len;
+}
+
// base data stays in hash
void StringFree(void *s)
{
int StringSet(void *dst, void *src);
bool StringCompare(void *a, void *b);
uint32_t StringHash(void *s);
+uint32_t StringGetLength(void *s);
void StringFree(void *s);
int StringAsBase64(const void *s, char *out, size_t out_size);
-/* Copyright (C) 2017-2020 Open Information Security Foundation
+/* Copyright (C) 2017-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
switch (type) {
case DATASET_TYPE_MD5:
set->hash = THashInit(cnf_name, sizeof(Md5Type), Md5StrSet, Md5StrFree, Md5StrHash,
- Md5StrCompare, NULL, load != NULL ? 1 : 0, memcap > 0 ? memcap : default_memcap,
+ Md5StrCompare, NULL, NULL, load != NULL ? 1 : 0,
+ memcap > 0 ? memcap : default_memcap,
hashsize > 0 ? hashsize : default_hashsize);
if (set->hash == NULL)
goto out_err;
break;
case DATASET_TYPE_STRING:
set->hash = THashInit(cnf_name, sizeof(StringType), StringSet, StringFree, StringHash,
- StringCompare, NULL, load != NULL ? 1 : 0, memcap > 0 ? memcap : default_memcap,
+ StringCompare, NULL, StringGetLength, load != NULL ? 1 : 0,
+ memcap > 0 ? memcap : default_memcap,
hashsize > 0 ? hashsize : default_hashsize);
if (set->hash == NULL)
goto out_err;
break;
case DATASET_TYPE_SHA256:
set->hash = THashInit(cnf_name, sizeof(Sha256Type), Sha256StrSet, Sha256StrFree,
- Sha256StrHash, Sha256StrCompare, NULL, load != NULL ? 1 : 0,
+ Sha256StrHash, Sha256StrCompare, NULL, NULL, load != NULL ? 1 : 0,
memcap > 0 ? memcap : default_memcap,
hashsize > 0 ? hashsize : default_hashsize);
if (set->hash == NULL)
goto out_err;
break;
case DATASET_TYPE_IPV4:
- set->hash = THashInit(cnf_name, sizeof(IPv4Type), IPv4Set, IPv4Free, IPv4Hash,
- IPv4Compare, NULL, load != NULL ? 1 : 0, memcap > 0 ? memcap : default_memcap,
- hashsize > 0 ? hashsize : default_hashsize);
+ set->hash =
+ THashInit(cnf_name, sizeof(IPv4Type), IPv4Set, IPv4Free, IPv4Hash, IPv4Compare,
+ NULL, NULL, load != NULL ? 1 : 0, memcap > 0 ? memcap : default_memcap,
+ hashsize > 0 ? hashsize : default_hashsize);
if (set->hash == NULL)
goto out_err;
if (DatasetLoadIPv4(set) < 0)
goto out_err;
break;
case DATASET_TYPE_IPV6:
- set->hash = THashInit(cnf_name, sizeof(IPv6Type), IPv6Set, IPv6Free, IPv6Hash,
- IPv6Compare, NULL, load != NULL ? 1 : 0, memcap > 0 ? memcap : default_memcap,
- hashsize > 0 ? hashsize : default_hashsize);
+ set->hash =
+ THashInit(cnf_name, sizeof(IPv6Type), IPv6Set, IPv6Free, IPv6Hash, IPv6Compare,
+ NULL, NULL, load != NULL ? 1 : 0, memcap > 0 ? memcap : default_memcap,
+ hashsize > 0 ? hashsize : default_hashsize);
if (set->hash == NULL)
goto out_err;
if (DatasetLoadIPv6(set) < 0)
}
t->thash = THashInit("thresholds", sizeof(ThresholdEntry), ThresholdEntrySet,
- ThresholdEntryFree, ThresholdEntryHash, ThresholdEntryCompare, ThresholdEntryExpire, 0,
- memcap, hashsize);
+ ThresholdEntryFree, ThresholdEntryHash, ThresholdEntryCompare, ThresholdEntryExpire,
+ NULL, 0, memcap, hashsize);
if (t->thash == NULL) {
SCLogError("failed to initialize thresholds hash table");
return -1;
THashTableContext *THashInit(const char *cnf_prefix, size_t data_size,
int (*DataSet)(void *, void *), void (*DataFree)(void *), uint32_t (*DataHash)(void *),
bool (*DataCompare)(void *, void *), bool (*DataExpired)(void *, SCTime_t),
- bool reset_memcap, uint64_t memcap, uint32_t hashsize)
+ uint32_t (*DataSize)(void *), bool reset_memcap, uint64_t memcap, uint32_t hashsize)
{
THashTableContext *ctx = SCCalloc(1, sizeof(*ctx));
BUG_ON(!ctx);
ctx->config.DataHash = DataHash;
ctx->config.DataCompare = DataCompare;
ctx->config.DataExpired = DataExpired;
+ ctx->config.DataSize = DataSize;
/* set defaults */
ctx->config.hash_rand = (uint32_t)RandomGet();
-/* Copyright (C) 2007-2016 Open Information Security Foundation
+/* Copyright (C) 2007-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
uint32_t (*DataHash)(void *);
bool (*DataCompare)(void *, void *);
bool (*DataExpired)(void *, SCTime_t ts);
+ uint32_t (*DataSize)(void *);
} THashConfig;
#define THASH_DATA_SIZE(ctx) (sizeof(THashData) + (ctx)->config.data_size)
THashTableContext *THashInit(const char *cnf_prefix, size_t data_size,
int (*DataSet)(void *dst, void *src), void (*DataFree)(void *),
uint32_t (*DataHash)(void *), bool (*DataCompare)(void *, void *),
- bool (*DataExpired)(void *, SCTime_t), bool reset_memcap, uint64_t memcap,
- uint32_t hashsize);
+ bool (*DataExpired)(void *, SCTime_t), uint32_t (*DataSize)(void *), bool reset_memcap,
+ uint64_t memcap, uint32_t hashsize);
void THashShutdown(THashTableContext *ctx);