Пример #1
0
static int HashListTableTestFull02 (void)
{
    int result = 0;
    HashListTable *ht = HashListTableInit(32, HashListTableGenericHash, NULL, NULL);
    if (ht == NULL)
        goto end;

    int r = HashListTableAdd(ht, "test", 4);
    if (r != 0)
        goto end;

    char *rp = HashListTableLookup(ht, "test", 4);
    if (rp == NULL)
        goto end;

    r = HashListTableRemove(ht, "test2", 5);
    if (r == 0)
        goto end;

    /* all is good! */
    result = 1;
end:
    if (ht != NULL) HashListTableFree(ht);
    return result;
}
Пример #2
0
static inline void ThresholdTimeoutRemove(DetectEngineCtx *de_ctx, struct timeval *tv)
{
    HashListTableBucket *next = NULL;
    HashListTableBucket *buck = HashListTableGetListHead(de_ctx->ths_ctx.threshold_hash_table_src);
    while (buck != NULL) {
        /* get the next before we free "buck" */
        next = HashListTableGetListNext(buck);

        DetectThresholdEntry *tsh = HashListTableGetListData(buck);
        if (tsh == NULL)
            goto next;

        if ((tv->tv_sec - tsh->tv_sec1) <= tsh->seconds)
            goto next;

        switch(tsh->ipv) {
            case 4:
                if (tsh->track == TRACK_SRC) {
                    HashListTableRemove(de_ctx->ths_ctx.threshold_hash_table_src,
                            tsh, sizeof(DetectThresholdEntry));
                } else if (tsh->track == TRACK_DST) {
                    HashListTableRemove(de_ctx->ths_ctx.threshold_hash_table_dst,
                            tsh, sizeof(DetectThresholdEntry));
                }
                break;
            case 6:
                if (tsh->track == TRACK_SRC) {
                    HashListTableRemove(de_ctx->ths_ctx.threshold_hash_table_src_ipv6,
                            tsh, sizeof(DetectThresholdEntry));
                } else if (tsh->track == TRACK_DST) {
                    HashListTableRemove(de_ctx->ths_ctx.threshold_hash_table_dst_ipv6,
                            tsh, sizeof(DetectThresholdEntry));
                }
                break;
        }
    next:
        buck = next;
    }

    return;
}
Пример #3
0
int SigGroupHeadHashRemove(DetectEngineCtx *de_ctx, SigGroupHead *sgh)
{
    return HashListTableRemove(de_ctx->sgh_hash_table, (void *)sgh, 0);
}