gbproxy/test: Test TLLI expiry

This adds a unit test for gbprox_register_tlli() and
gbprox_remove_stale_tllis().

The dump_peers() function is extended by a cfg parameter to support
a non-global gbproxy_config.

Done with Jacob
diff --git a/openbsc/src/gprs/gb_proxy.c b/openbsc/src/gprs/gb_proxy.c
index 72014b1..c6d028f 100644
--- a/openbsc/src/gprs/gb_proxy.c
+++ b/openbsc/src/gprs/gb_proxy.c
@@ -196,7 +196,7 @@
 	return 1;
 }
 
-static struct gbproxy_peer *peer_alloc(struct gbproxy_config *cfg, uint16_t bvci)
+struct gbproxy_peer *gbproxy_peer_alloc(struct gbproxy_config *cfg, uint16_t bvci)
 {
 	struct gbproxy_peer *peer;
 
@@ -215,7 +215,7 @@
 	return peer;
 }
 
-static void peer_free(struct gbproxy_peer *peer)
+void gbproxy_peer_free(struct gbproxy_peer *peer)
 {
 	rate_ctr_group_free(peer->ctrg);
 	llist_del(&peer->list);
@@ -393,7 +393,7 @@
 	return NULL;
 }
 
-static struct gbproxy_tlli_info *gbprox_find_tlli_by_mi(
+struct gbproxy_tlli_info *gbprox_find_tlli_by_mi(
 	struct gbproxy_peer *peer,
 	const uint8_t *mi_data,
 	size_t mi_data_len)
@@ -530,7 +530,7 @@
 	return deleted_count;
 }
 
-static void gbprox_register_tlli(struct gbproxy_peer *peer, uint32_t tlli,
+void gbprox_register_tlli(struct gbproxy_peer *peer, uint32_t tlli,
 				 const uint8_t *imsi, size_t imsi_len)
 {
 	struct gbproxy_patch_state *state = &peer->patch_state;
@@ -1456,7 +1456,7 @@
 				 * PTP-BVCI yet, we should allocate a new peer */
 				LOGP(DGPRS, LOGL_INFO, "Allocationg new peer for "
 				     "BVCI=%u via NSEI=%u\n", bvci, nsei);
-				from_peer = peer_alloc(cfg, bvci);
+				from_peer = gbproxy_peer_alloc(cfg, bvci);
 				from_peer->nsei = nsei;
 			}
 
@@ -1845,7 +1845,7 @@
 	struct gbproxy_peer *peer, *tmp;
 
 	llist_for_each_entry_safe(peer, tmp, &cfg->bts_peers, list)
-		peer_free(peer);
+		gbproxy_peer_free(peer);
 
 	rate_ctr_group_free(cfg->ctrg);
 	gbproxy_init_config(cfg);
@@ -1862,7 +1862,7 @@
 		if (bvci && peer->bvci != bvci)
 			continue;
 
-		peer_free(peer);
+		gbproxy_peer_free(peer);
 		counter += 1;
 	}