1 /* Copyright (C) 2007-2010 Open Information Security Foundation 2 * 3 * You can copy, redistribute or modify this Program under the terms of 4 * the GNU General Public License version 2 as published by the Free 5 * Software Foundation. 6 * 7 * This program is distributed in the hope that it will be useful, 8 * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License 13 * version 2 along with this program; if not, write to the Free Software 14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 15 * 02110-1301, USA. 16 */ 17 18 /** 19 * \file 20 * 21 * \author Victor Julien <victor@inliniac.net> 22 */ 23 24 #ifndef __BLOOMFILTERCOUNTING_H__ 25 #define __BLOOMFILTERCOUNTING_H__ 26 27 /* Bloom filter structure */ 28 typedef struct BloomFilterCounting_ { 29 uint8_t *array; 30 uint32_t array_size; /* size in buckets */ 31 uint8_t type; /* 1, 2 or 4 byte counters */ 32 uint8_t hash_iterations; 33 uint32_t (*Hash)(const void *, uint16_t, uint8_t, uint32_t); 34 } BloomFilterCounting; 35 36 /* prototypes */ 37 BloomFilterCounting *BloomFilterCountingInit(uint32_t, uint8_t, uint8_t, uint32_t (*Hash)(const void *, uint16_t, uint8_t, uint32_t)); 38 void BloomFilterCountingFree(BloomFilterCounting *); 39 void BloomFilterCountingPrint(BloomFilterCounting *); 40 int BloomFilterCountingAdd(BloomFilterCounting *, const void *, uint16_t); 41 int BloomFilterCountingRemove(BloomFilterCounting *, const void *, uint16_t); 42 int BloomFilterCountingTest(BloomFilterCounting *, const void *, uint16_t); 43 44 void BloomFilterCountingRegisterTests(void); 45 46 #endif /* __BLOOMFILTERCOUNTING_H__ */ 47 48