diff --git a/openbsc/src/gprs/gb_proxy_peer.c b/openbsc/src/gprs/gb_proxy_peer.c
index 8f90665..ce6690e 100644
--- a/openbsc/src/gprs/gb_proxy_peer.c
+++ b/openbsc/src/gprs/gb_proxy_peer.c
@@ -163,7 +163,7 @@
 
 	llist_add(&peer->list, &cfg->bts_peers);
 
-	INIT_LLIST_HEAD(&peer->patch_state.enabled_tllis);
+	INIT_LLIST_HEAD(&peer->patch_state.logical_links);
 
 	return peer;
 }
diff --git a/openbsc/src/gprs/gb_proxy_tlli.c b/openbsc/src/gprs/gb_proxy_tlli.c
index 14ce7d8..f5d7ef6 100644
--- a/openbsc/src/gprs/gb_proxy_tlli.c
+++ b/openbsc/src/gprs/gb_proxy_tlli.c
@@ -38,7 +38,7 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
-	llist_for_each_entry(link_info, &state->enabled_tllis, list)
+	llist_for_each_entry(link_info, &state->logical_links, list)
 		if (link_info->tlli.current == tlli ||
 		    link_info->tlli.assigned == tlli)
 			return link_info;
@@ -53,7 +53,7 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
-	llist_for_each_entry(link_info, &state->enabled_tllis, list)
+	llist_for_each_entry(link_info, &state->logical_links, list)
 		if (link_info->tlli.ptmsi == ptmsi)
 			return link_info;
 
@@ -68,7 +68,7 @@
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
 	/* Don't care about the NSEI */
-	llist_for_each_entry(link_info, &state->enabled_tllis, list)
+	llist_for_each_entry(link_info, &state->logical_links, list)
 		if (link_info->sgsn_tlli.current == tlli ||
 		     link_info->sgsn_tlli.assigned == tlli)
 			return link_info;
@@ -83,7 +83,7 @@
 	struct gbproxy_link_info *link_info;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
-	llist_for_each_entry(link_info, &state->enabled_tllis, list)
+	llist_for_each_entry(link_info, &state->logical_links, list)
 		if ((link_info->sgsn_tlli.current == tlli ||
 		     link_info->sgsn_tlli.assigned == tlli) &&
 		    link_info->sgsn_nsei == sgsn_nsei)
@@ -103,7 +103,7 @@
 	if (!gprs_is_mi_imsi(imsi, imsi_len))
 		return NULL;
 
-	llist_for_each_entry(link_info, &state->enabled_tllis, list) {
+	llist_for_each_entry(link_info, &state->logical_links, list) {
 		if (link_info->imsi_len != imsi_len)
 			continue;
 		if (memcmp(link_info->imsi, imsi, imsi_len) != 0)
@@ -134,10 +134,10 @@
 
 	llist_del(&link_info->list);
 	talloc_free(link_info);
-	state->enabled_tllis_count -= 1;
+	state->logical_link_count -= 1;
 
 	peer->ctrg->ctr[GBPROX_PEER_CTR_TLLI_CACHE_SIZE].current =
-		state->enabled_tllis_count;
+		state->logical_link_count;
 }
 
 void gbproxy_delete_link_infos(struct gbproxy_peer *peer)
@@ -145,11 +145,11 @@
 	struct gbproxy_link_info *link_info, *nxt;
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
-	llist_for_each_entry_safe(link_info, nxt, &state->enabled_tllis, list)
+	llist_for_each_entry_safe(link_info, nxt, &state->logical_links, list)
 		gbproxy_delete_link_info(peer, link_info);
 
-	OSMO_ASSERT(state->enabled_tllis_count == 0);
-	OSMO_ASSERT(llist_empty(&state->enabled_tllis));
+	OSMO_ASSERT(state->logical_link_count == 0);
+	OSMO_ASSERT(llist_empty(&state->logical_links));
 }
 
 void gbproxy_attach_link_info(struct gbproxy_peer *peer, time_t now,
@@ -158,11 +158,11 @@
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
 	link_info->timestamp = now;
-	llist_add(&link_info->list, &state->enabled_tllis);
-	state->enabled_tllis_count += 1;
+	llist_add(&link_info->list, &state->logical_links);
+	state->logical_link_count += 1;
 
 	peer->ctrg->ctr[GBPROX_PEER_CTR_TLLI_CACHE_SIZE].current =
-		state->enabled_tllis_count;
+		state->logical_link_count;
 }
 
 int gbproxy_remove_stale_link_infos(struct gbproxy_peer *peer, time_t now)
@@ -174,29 +174,29 @@
 
 	if (peer->cfg->tlli_max_len > 0)
 		exceeded_max_len =
-			state->enabled_tllis_count - peer->cfg->tlli_max_len;
+			state->logical_link_count - peer->cfg->tlli_max_len;
 
 	check_for_age = peer->cfg->tlli_max_age > 0;
 
 	for (; exceeded_max_len > 0; exceeded_max_len--) {
 		struct gbproxy_link_info *link_info;
-		OSMO_ASSERT(!llist_empty(&state->enabled_tllis));
-		link_info = llist_entry(state->enabled_tllis.prev,
+		OSMO_ASSERT(!llist_empty(&state->logical_links));
+		link_info = llist_entry(state->logical_links.prev,
 					struct gbproxy_link_info,
 					list);
 		LOGP(DGPRS, LOGL_INFO,
 		     "Removing TLLI %08x from list "
 		     "(stale, length %d, max_len exceeded)\n",
-		     link_info->tlli.current, state->enabled_tllis_count);
+		     link_info->tlli.current, state->logical_link_count);
 
 		gbproxy_delete_link_info(peer, link_info);
 		deleted_count += 1;
 	}
 
-	while (check_for_age && !llist_empty(&state->enabled_tllis)) {
+	while (check_for_age && !llist_empty(&state->logical_links)) {
 		time_t age;
 		struct gbproxy_link_info *link_info;
-		link_info = llist_entry(state->enabled_tllis.prev,
+		link_info = llist_entry(state->logical_links.prev,
 					struct gbproxy_link_info,
 					list);
 		age = now - link_info->timestamp;
@@ -238,11 +238,11 @@
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
 	llist_del(&link_info->list);
-	OSMO_ASSERT(state->enabled_tllis_count > 0);
-	state->enabled_tllis_count -= 1;
+	OSMO_ASSERT(state->logical_link_count > 0);
+	state->logical_link_count -= 1;
 
 	peer->ctrg->ctr[GBPROX_PEER_CTR_TLLI_CACHE_SIZE].current =
-		state->enabled_tllis_count;
+		state->logical_link_count;
 }
 
 void gbproxy_update_link_info(struct gbproxy_link_info *link_info,
@@ -422,7 +422,7 @@
 	struct gbproxy_patch_state *state = &peer->patch_state;
 
 	/* Make sure that there is no second entry with the same P-TMSI or TLLI */
-	llist_for_each_entry_safe(info, nxt, &state->enabled_tllis, list) {
+	llist_for_each_entry_safe(info, nxt, &state->logical_links, list) {
 		if (info == link_info)
 			continue;
 
diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c
index 313cd9b..fefe8eb 100644
--- a/openbsc/src/gprs/gb_proxy_vty.c
+++ b/openbsc/src/gprs/gb_proxy_vty.c
@@ -458,7 +458,7 @@
 
 		gbprox_vty_print_peer(vty, peer);
 
-		llist_for_each_entry(link_info, &state->enabled_tllis, list) {
+		llist_for_each_entry(link_info, &state->logical_links, list) {
 			time_t age = now - link_info->timestamp;
 			int stored_msgs = 0;
 			struct llist_head *iter;
@@ -620,7 +620,7 @@
 
 	state = &peer->patch_state;
 
-	llist_for_each_entry_safe(link_info, nxt, &state->enabled_tllis, list) {
+	llist_for_each_entry_safe(link_info, nxt, &state->logical_links, list) {
 		switch (match) {
 		case MATCH_TLLI:
 			if (link_info->tlli.current != ident)
@@ -686,7 +686,7 @@
 				found, found == 1 ? "" : "s", VTY_NEWLINE);
 	} else {
 		llist_for_each_entry_safe(link_info, nxt,
-					  &state->enabled_tllis, list) {
+					  &state->logical_links, list) {
 			if (!link_info->is_deregistered)
 				continue;
 
