diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-08-12 12:46:39 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-09-05 22:42:17 +0200 |
commit | b513b951bdd9a7bb2d55a0d77fe7e3403448d2dd (patch) | |
tree | dec9d9ada87a71ccb6be6f53b3e8a4ed05a0bd5e /lib | |
parent | 33520b43ec662e9544e64f794261976bd517fa23 (diff) |
lib/ippool: Add back-pointer from pool member to pool
This allows us to remove pool members without having to keep
a pointer to the pool around.
Change-Id: I9042eb85989c5451d7894678eca110dd19e78002
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ippool.c | 2 | ||||
-rw-r--r-- | lib/ippool.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/ippool.c b/lib/ippool.c index 1729ec7..b1b242d 100644 --- a/lib/ippool.c +++ b/lib/ippool.c @@ -295,6 +295,7 @@ int ippool_new(struct ippool_t **this, const char *dyn, const char *stat, in46a_inc(&addr); (*this)->member[i].inuse = 0; + (*this)->member[i].pool = *this; /* Insert into list of unused */ (*this)->member[i].prev = (*this)->lastdyn; @@ -315,6 +316,7 @@ int ippool_new(struct ippool_t **this, const char *dyn, const char *stat, struct in46_addr *i6al = &(*this)->member[i].addr; memset(i6al, 0, sizeof(*i6al)); (*this)->member[i].inuse = 0; + (*this)->member[i].pool = *this; /* Insert into list of unused */ (*this)->member[i].prev = (*this)->laststat; diff --git a/lib/ippool.h b/lib/ippool.h index ba92a56..8249b7f 100644 --- a/lib/ippool.h +++ b/lib/ippool.h @@ -56,6 +56,7 @@ struct ippool_t { struct ippoolm_t { struct in46_addr addr; /* IP address of this member */ + struct ippool_t *pool; /* Pool to which we belong */ int inuse; /* 0=available; 1= dynamic; 2 = static */ struct ippoolm_t *nexthash; /* Linked list part of hash table */ struct ippoolm_t *prev, *next; /* Linked list of free dynamic or static */ |