* introduce TLV parser definitions for RSL IE's
* introduce functions for ip.access specific RSL commands

diff --git a/include/openbsc/abis_rsl.h b/include/openbsc/abis_rsl.h
index b3318d3..160e280 100644
--- a/include/openbsc/abis_rsl.h
+++ b/include/openbsc/abis_rsl.h
@@ -54,6 +54,7 @@
 #define ABIS_RSL_MDISC_COM_CHAN		0x0c
 #define ABIS_RSL_MDISC_TRX		0x10
 #define ABIS_RSL_MDISC_LOC		0x20
+#define ABIS_RSL_MDISC_IPACCESS		0x7e
 
 #define ABIS_RSL_MDISC_IS_TRANSP(x)	(x & 0x01)
 
@@ -121,6 +122,16 @@
 	RSL_MT_MR_CODEC_MOD_PER,
 	RSL_MT_TFO_REP,
 	RSL_MT_TFO_MOD_REQ,		/* 0x3f */
+
+	/* ip.access specific RSL message types */
+	RSL_MT_IPAC_BIND		= 0x70,		/* Bind to local BTS RTP port */
+	RSL_MT_IPAC_BIND_ACK,
+	RSL_MT_IPAC_BIND_NACK,
+	RSL_MT_IPAC_CONNECT		= 0x73,
+	RSL_MT_IPAC_CONNECT_ACK,
+	RSL_MT_IPAC_CONNECT_NACK,
+	RSL_MT_IPAC_DISCONNECT_IND	= 0x76,
+
 };
 
 /* Chapter 9.3 */
@@ -185,6 +196,11 @@
 	RSL_IE_RTD,
 	RSL_IE_TFO_STATUS,
 	RSL_IE_LLP_APDU,
+
+	RSL_IE_IPAC_REMOTE_IP	= 0xf0,
+	RSL_IE_IPAC_REMOTE_PORT	= 0xf1,
+	RSL_IE_IPAC_LOCAL_PORT	= 0xf3,
+	RSL_IE_IPAC_LOCAL_IP	= 0xf5,
 };
 
 /* Chapter 9.3.1 */
@@ -371,6 +387,11 @@
 
 int rsl_data_request(struct msgb *msg, u_int8_t link_id);
 
+/* ip.access specfic RSL extensions */
+int rsl_ipacc_bind(struct gsm_lchan *lchan);
+int rsl_ipacc_connect(struct gsm_lchan *lchan, u_int32_t ip,
+		      u_int16_t port, u_int16_t f8, u_int8_t fc);
+
 int abis_rsl_rcvmsg(struct msgb *msg);
 
 unsigned int get_paging_group(u_int64_t imsi, unsigned int bs_cc_chans,
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 0aa3c59..2048abc 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -174,6 +174,12 @@
 
 	/* To which E1 subslot are we connected */
 	struct gsm_e1_subslot e1_link;
+	struct {
+		u_int32_t bound_ip;
+		u_int16_t bound_port;
+		u_int8_t attr_fc;
+		u_int16_t attr_f8;
+	} abis_ip;
 
 	struct gsm_lchan lchan[TS_MAX_LCHAN];
 };