diff --git a/openbsc/include/openbsc/ipaccess.h b/openbsc/include/openbsc/ipaccess.h
index bc1fa6e..f4a0946 100644
--- a/openbsc/include/openbsc/ipaccess.h
+++ b/openbsc/include/openbsc/ipaccess.h
@@ -37,8 +37,6 @@
 int ipaccess_send_id_req(int fd);
 
 const char *ipaccess_idtag_name(uint8_t tag);
-int ipaccess_idtag_parse(struct tlv_parsed *dec, unsigned char *buf, int len);
-int ipaccess_parse_unitid(const char *str, uint16_t *site_id, uint16_t *bts_id, uint16_t *trx_id);
 
 int ipaccess_drop_oml(struct gsm_bts *bts);
 int ipaccess_drop_rsl(struct gsm_bts_trx *trx);
diff --git a/openbsc/src/ipaccess/ipaccess-proxy.c b/openbsc/src/ipaccess/ipaccess-proxy.c
index 390510a..39a0d8b 100644
--- a/openbsc/src/ipaccess/ipaccess-proxy.c
+++ b/openbsc/src/ipaccess/ipaccess-proxy.c
@@ -42,6 +42,7 @@
 #include <osmocom/core/select.h>
 #include <osmocom/gsm/tlv.h>
 #include <osmocom/core/msgb.h>
+#include <osmocom/abis/ipa.h>
 #include <openbsc/debug.h>
 #include <openbsc/ipaccess.h>
 #include <openbsc/socket.h>
@@ -437,7 +438,7 @@
 {
 	struct tlv_parsed tlvp;
 	uint8_t msg_type = *(msg->l2h);
-	uint16_t site_id, bts_id, trx_id;
+	struct ipaccess_unit unit_data;
 	struct ipa_bts_conn *ipbc;
 	int ret = 0;
 
@@ -461,18 +462,19 @@
 		}
 
 		/* lookup BTS, create sign_link, ... */
-		site_id = bts_id = trx_id = 0;
+		memset(&unit_data, 0, sizeof(unit_data));
 		ipaccess_parse_unitid((char *)TLVP_VAL(&tlvp, IPAC_IDTAG_UNIT),
-				      &site_id, &bts_id, &trx_id);
-		ipbc = find_bts_by_unitid(ipp, site_id, bts_id);
+				      &unit_data);
+		ipbc = find_bts_by_unitid(ipp, unit_data.site_id, unit_data.bts_id);
 		if (!ipbc) {
 			/* We have not found an ipbc (per-bts proxy instance)
 			 * for this BTS yet.  The first connection of a new BTS must
 			 * be a OML connection.  We allocate the associated data structures,
 			 * and try to connect to the remote end */
 
-			return ipbc_alloc_connect(ipc, bfd, site_id, bts_id,
-						  trx_id, &tlvp, msg);
+			return ipbc_alloc_connect(ipc, bfd, unit_data.site_id,
+						  unit_data.bts_id,
+						  unit_data.trx_id, &tlvp, msg);
 			/* if this fails, the caller will clean up bfd */
 		} else {
 			struct sockaddr_in sin;
@@ -481,7 +483,7 @@
 			inet_aton(bsc_ipaddr, &sin.sin_addr);
 
 			DEBUGP(DLINP, "Identified BTS %u/%u/%u\n",
-				site_id, bts_id, trx_id);
+				unit_data.site_id, unit_data.bts_id, unit_data.trx_id);
 
 			if ((bfd->priv_nr & 0xff) != RSL_FROM_BTS) {
 				LOGP(DLINP, LOGL_ERROR, "Second OML connection from "
@@ -489,7 +491,7 @@
 				return 0;
 			}
 
-			if (trx_id >= MAX_TRX) {
+			if (unit_data.trx_id >= MAX_TRX) {
 				LOGP(DLINP, LOGL_ERROR, "We don't support more "
 				     "than %u TRX\n", MAX_TRX);
 				return -EINVAL;
@@ -497,17 +499,17 @@
 
 			ipc->bts_conn = ipbc;
 			/* store TRX number in higher 8 bit of the bfd private number */
-			bfd->priv_nr |= trx_id << 8;
-			ipbc->rsl_conn[trx_id] = ipc;
+			bfd->priv_nr |= unit_data.trx_id << 8;
+			ipbc->rsl_conn[unit_data.trx_id] = ipc;
 
 			/* Create RSL TCP connection towards BSC */
 			sin.sin_port = htons(IPA_TCP_PORT_RSL);
-			ipbc->bsc_rsl_conn[trx_id] =
-				connect_bsc(&sin, RSL_TO_BSC | (trx_id << 8), ipbc);
+			ipbc->bsc_rsl_conn[unit_data.trx_id] =
+				connect_bsc(&sin, RSL_TO_BSC | (unit_data.trx_id << 8), ipbc);
 			if (!ipbc->bsc_oml_conn)
 				return -EIO;
 			DEBUGP(DLINP, "(%u/%u/%u) Connected RSL to BSC\n",
-				site_id, bts_id, trx_id);
+				unit_data.site_id, unit_data.bts_id, unit_data.trx_id);
 		}
 		break;
 	case IPAC_MSGT_ID_GET:
@@ -876,7 +878,7 @@
 }
 
 /* callback from select.c in case one of the fd's can be read/written */
-static int ipaccess_fd_cb(struct osmo_fd *bfd, unsigned int what)
+static int proxy_ipaccess_fd_cb(struct osmo_fd *bfd, unsigned int what)
 {
 	int rc = 0;
 
@@ -922,7 +924,7 @@
 	bfd->fd = ret;
 	bfd->data = ipc;
 	bfd->priv_nr = listen_bfd->priv_nr;
-	bfd->cb = ipaccess_fd_cb;
+	bfd->cb = proxy_ipaccess_fd_cb;
 	bfd->when = BSC_FD_READ;
 	ret = osmo_fd_register(bfd);
 	if (ret < 0) {
