Home | History | Annotate | Download | only in npf

Lines Matching defs:hmap

112 		lpm_hmap_t *hmap = &lpm->prefix[n];
114 if (!hmap->hashsize) {
115 KASSERT(!hmap->bucket);
118 for (unsigned i = 0; i < hmap->hashsize; i++) {
119 lpm_ent_t *entry = hmap->bucket[i];
133 kmem_free(hmap->bucket, hmap->hashsize * sizeof(lpm_ent_t *));
134 hmap->bucket = NULL;
135 hmap->hashsize = 0;
136 hmap->nitems = 0;
170 hashmap_rehash(lpm_hmap_t *hmap, unsigned size, int flags)
181 for (unsigned n = 0; n < hmap->hashsize; n++) {
182 lpm_ent_t *list = hmap->bucket[n];
194 if (hmap->bucket)
195 kmem_free(hmap->bucket, hmap->hashsize * sizeof(lpm_ent_t *));
196 hmap->bucket = bucket;
197 hmap->hashsize = hashsize;
202 hashmap_insert(lpm_hmap_t *hmap, const void *key, size_t len, int flags)
204 const unsigned target = hmap->nitems + LPM_HASH_STEP;
209 if (hmap->hashsize < target && !hashmap_rehash(hmap, target, flags)) {
214 i = hash & (hmap->hashsize - 1);
215 entry = hmap->bucket[i];
225 entry->next = hmap->bucket[i];
228 hmap->bucket[i] = entry;
229 hmap->nitems++;
235 hashmap_lookup(lpm_hmap_t *hmap, const void *key, size_t len)
238 const unsigned i = hash & (hmap->hashsize - 1);
241 if (hmap->hashsize == 0) {
244 entry = hmap->bucket[i];
256 hashmap_remove(lpm_hmap_t *hmap, const void *key, size_t len)
259 const unsigned i = hash & (hmap->hashsize - 1);
262 if (hmap->hashsize == 0) {
265 entry = hmap->bucket[i];
272 hmap->bucket[i] = entry->next;
379 lpm_hmap_t *hmap = &lpm->prefix[preflen];
383 entry = hashmap_lookup(hmap, prefix, len);