Lines Matching refs:key

74 g_eli_key_fill(struct g_eli_softc *sc, struct g_eli_key *key, uint64_t keyno)  in g_eli_key_fill()  argument
90 sizeof(hmacdata), key->gek_key, 0); in g_eli_key_fill()
91 key->gek_keyno = keyno; in g_eli_key_fill()
92 key->gek_count = 0; in g_eli_key_fill()
93 key->gek_magic = G_ELI_KEY_MAGIC; in g_eli_key_fill()
103 struct g_eli_key *key, *ekey, keysearch; in g_eli_key_allocate() local
108 key = malloc(sizeof(*key), M_ELI, M_WAITOK); in g_eli_key_allocate()
109 g_eli_key_fill(sc, key, keyno); in g_eli_key_allocate()
118 zfree(key, M_ELI); in g_eli_key_allocate()
119 key = ekey; in g_eli_key_allocate()
120 TAILQ_REMOVE(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_allocate()
122 RB_INSERT(g_eli_key_tree, &sc->sc_ekeys_tree, key); in g_eli_key_allocate()
125 TAILQ_INSERT_TAIL(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_allocate()
127 return (key); in g_eli_key_allocate()
133 struct g_eli_key *key; in g_eli_key_find_last() local
137 TAILQ_FOREACH(key, &sc->sc_ekeys_queue, gek_next) { in g_eli_key_find_last()
138 if (key->gek_count == 0) in g_eli_key_find_last()
142 return (key); in g_eli_key_find_last()
146 g_eli_key_replace(struct g_eli_softc *sc, struct g_eli_key *key, uint64_t keyno) in g_eli_key_replace() argument
150 KASSERT(key->gek_magic == G_ELI_KEY_MAGIC, ("Invalid magic.")); in g_eli_key_replace()
152 RB_REMOVE(g_eli_key_tree, &sc->sc_ekeys_tree, key); in g_eli_key_replace()
153 TAILQ_REMOVE(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_replace()
155 KASSERT(key->gek_count == 0, ("gek_count=%d", key->gek_count)); in g_eli_key_replace()
157 g_eli_key_fill(sc, key, keyno); in g_eli_key_replace()
159 RB_INSERT(g_eli_key_tree, &sc->sc_ekeys_tree, key); in g_eli_key_replace()
160 TAILQ_INSERT_TAIL(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_replace()
164 g_eli_key_remove(struct g_eli_softc *sc, struct g_eli_key *key) in g_eli_key_remove() argument
168 KASSERT(key->gek_magic == G_ELI_KEY_MAGIC, ("Invalid magic.")); in g_eli_key_remove()
169 KASSERT(key->gek_count == 0, ("gek_count=%d", key->gek_count)); in g_eli_key_remove()
171 RB_REMOVE(g_eli_key_tree, &sc->sc_ekeys_tree, key); in g_eli_key_remove()
172 TAILQ_REMOVE(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_remove()
174 zfree(key, M_ELI); in g_eli_key_remove()
240 struct g_eli_key *key; in g_eli_key_destroy() local
242 while ((key = TAILQ_FIRST(&sc->sc_ekeys_queue)) != NULL) in g_eli_key_destroy()
243 g_eli_key_remove(sc, key); in g_eli_key_destroy()
304 struct g_eli_key *key, keysearch; in g_eli_key_hold() local
321 key = RB_FIND(g_eli_key_tree, &sc->sc_ekeys_tree, &keysearch); in g_eli_key_hold()
322 KASSERT(key != NULL, ("No key %ju found.", (uintmax_t)keyno)); in g_eli_key_hold()
323 KASSERT(key->gek_magic == G_ELI_KEY_MAGIC, in g_eli_key_hold()
325 return (key->gek_key); in g_eli_key_hold()
329 key = RB_FIND(g_eli_key_tree, &sc->sc_ekeys_tree, &keysearch); in g_eli_key_hold()
330 if (key != NULL) { in g_eli_key_hold()
332 TAILQ_REMOVE(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_hold()
333 TAILQ_INSERT_TAIL(&sc->sc_ekeys_queue, key, gek_next); in g_eli_key_hold()
340 key = g_eli_key_allocate(sc, keyno); in g_eli_key_hold()
343 key = g_eli_key_find_last(sc); in g_eli_key_hold()
344 if (key != NULL) { in g_eli_key_hold()
345 g_eli_key_replace(sc, key, keyno); in g_eli_key_hold()
348 key = g_eli_key_allocate(sc, keyno); in g_eli_key_hold()
352 key->gek_count++; in g_eli_key_hold()
355 KASSERT(key->gek_magic == G_ELI_KEY_MAGIC, ("Invalid key magic.")); in g_eli_key_hold()
357 return (key->gek_key); in g_eli_key_hold()
363 struct g_eli_key *key = (struct g_eli_key *)rawkey; in g_eli_key_drop() local
368 KASSERT(key->gek_magic == G_ELI_KEY_MAGIC, ("Invalid key magic.")); in g_eli_key_drop()
374 KASSERT(key->gek_count > 0, ("key->gek_count=%d", key->gek_count)); in g_eli_key_drop()
375 key->gek_count--; in g_eli_key_drop()
377 key = g_eli_key_find_last(sc); in g_eli_key_drop()
378 if (key == NULL) in g_eli_key_drop()
380 g_eli_key_remove(sc, key); in g_eli_key_drop()