48 static int initialized = 0;
68 #define VARNAME_HASHSIZE 0x1000
69 #define VARID_HASHSIZE 0x1000
71 static uint32_t VariableNameHash(
HashListTable *ht,
void *buf, uint16_t buflen)
74 uint32_t hash = strlen(fn->
name) + fn->
type;
77 for (u = 0; u < buflen; u++) {
84 static char VariableNameCompare(
void *buf1, uint16_t len1,
void *buf2, uint16_t len2)
92 if (strcmp(fn1->
name,fn2->
name) == 0)
98 static uint32_t VariableIdxHash(
HashListTable *ht,
void *buf, uint16_t buflen)
101 uint32_t hash = fn->
idx + fn->
type;
105 static char VariableIdxCompare(
void *buf1, uint16_t len1,
void *buf2, uint16_t len2)
119 static void VariableNameFree(
void *data)
126 if (fn->
name != NULL) {
143 if (v->
names == NULL) {
149 if (v->
ids == NULL) {
187 if (fn->
name == NULL)
191 if (lookup_fn == NULL) {
199 idx = lookup_fn->
idx;
200 VariableNameFree(fn);
205 VariableNameFree(fn);
229 if (lookup_fn != NULL) {
234 VariableNameFree(fn);
241 VariableNameFree(fn);
256 if (g_varnamestore_staging != NULL &&
267 g_varnamestore_staging = nv;
279 memcpy(newvar, var,
sizeof(*newvar));
286 SCLogDebug(
"xfer %s id %u type %u", newvar->name, newvar->idx, newvar->type);
327 id = VariableNameGetIdx(g_varnamestore_staging, name,
type);
335 char *name = VariableIdxGetName(g_varnamestore_staging, idx,
type);
343 if (g_varnamestore_old) {
344 VarNameStoreDoFree(g_varnamestore_old);
345 g_varnamestore_old = NULL;
348 SC_ATOMIC_SET(g_varnamestore_current, g_varnamestore_staging);
349 g_varnamestore_staging = NULL;
356 SCLogDebug(
"freeing g_varnamestore_old %p", g_varnamestore_old);
357 if (g_varnamestore_old) {
358 VarNameStoreDoFree(g_varnamestore_old);
359 g_varnamestore_old = NULL;
366 SCLogDebug(
"freeing detect engine version %u", de_ctx_version);
368 if (g_varnamestore_old && g_varnamestore_old->
de_ctx_version == de_ctx_version) {
369 VarNameStoreDoFree(g_varnamestore_old);
370 g_varnamestore_old = NULL;
371 SCLogDebug(
"freeing detect engine version %u: old done", de_ctx_version);
376 if (g_varnamestore_staging && g_varnamestore_staging->
de_ctx_version == de_ctx_version) {
377 VarNameStoreDoFree(g_varnamestore_staging);
378 g_varnamestore_staging = NULL;
379 SCLogDebug(
"freeing detect engine version %u: staging done", de_ctx_version);
384 VarNameStoreDoFree(current);
386 SCLogDebug(
"freeing detect engine version %u: current done", de_ctx_version);