diff options
author | Martin Pieuchot <mpi@cvs.openbsd.org> | 2016-04-13 08:04:15 +0000 |
---|---|---|
committer | Martin Pieuchot <mpi@cvs.openbsd.org> | 2016-04-13 08:04:15 +0000 |
commit | 99d8e31973c22e3b7a8cba62dd2bbae6a0fab0b8 (patch) | |
tree | a0a881180bfb95f8b6a7e494ecadd1d6d4fabe5c /sys/net/art.c | |
parent | 17e91c3e08c62fd92af16ba5954ef55177e773b5 (diff) |
Keep all pools in the same place.
ok jmatthew@
Diffstat (limited to 'sys/net/art.c')
-rw-r--r-- | sys/net/art.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/sys/net/art.c b/sys/net/art.c index 62295355b79..552ff62e2b1 100644 --- a/sys/net/art.c +++ b/sys/net/art.c @@ -1,4 +1,4 @@ -/* $OpenBSD: art.c,v 1.13 2016/04/12 06:40:44 mpi Exp $ */ +/* $OpenBSD: art.c,v 1.14 2016/04/13 08:04:14 mpi Exp $ */ /* * Copyright (c) 2015 Martin Pieuchot @@ -83,11 +83,12 @@ int art_table_free(struct art_root *, struct art_table *); int art_table_walk(struct art_root *, struct art_table *, int (*f)(struct art_node *, void *), void *); -struct pool at_pool, at_heap_4_pool, at_heap_8_pool; +struct pool an_pool, at_pool, at_heap_4_pool, at_heap_8_pool; void art_init(void) { + pool_init(&an_pool, sizeof(struct art_node), 0, 0, 0, "art_node", NULL); pool_init(&at_pool, sizeof(struct art_table), 0, 0, 0, "art_table", NULL); pool_init(&at_heap_4_pool, AT_HEAPSIZE(4), 0, 0, 0, "art_heap4", NULL); @@ -790,3 +791,24 @@ moveup: if (k != i) goto moveon; } + +struct art_node * +art_get(struct sockaddr *dst, uint8_t plen) +{ + struct art_node *an; + + an = pool_get(&an_pool, PR_NOWAIT | PR_ZERO); + if (an == NULL) + return (NULL); + + an->an_dst = dst; + an->an_plen = plen; + + return (an); +} + +void +art_put(struct art_node *an) +{ + pool_put(&an_pool, an); +} |