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
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 @@
 		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 @@
 		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 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 */