diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 3e9baaa..a807ce2 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -487,6 +487,39 @@
 		RSL_SYSTEM_INFO_20	('00101101'B)
 	} with { variant "FIELDLENGTH(8)" }
 
+	type record RSL_IE_IPA_ConnectionStats {
+		uint8_t			len,
+		uint32_t		tx_packets,
+		uint32_t		tx_octets,
+		uint32_t		rx_packets,
+		uint32_t		rx_octets,
+		uint32_t		lost_packets,
+		uint32_t		jitter,
+		uint32_t		avg_delay
+	} with { variant (len) "LENGTHTO(tx_packets,tx_octets,rx_packets,rx_octets,lost_packets,jitter,avg_delay)" }
+
+	type enumerated RSL_IPA_SpeechMode {
+		RSL_IPA_SPM_SENDRECV	('00'B),
+		RSL_IPA_SPM_RECVONLY	('01'B),
+		RSL_IPA_SPM_SENDONLY	('10'B),
+		RSL_IPA_SPM_RESERVED	('11'B)
+	} with { variant "FIELDLENGTH(2)" }
+
+	type enumerated RSL_IPA_Codec {
+		RSL_IPA_CODEC_FR	('0000'B),
+		RSL_IPA_CODEC_EFR	('0001'B),
+		RSL_IPA_CODEC_AMR_F	('0010'B),
+		RSL_IPA_CODEC_HR	('0011'B),
+		RSL_IPA_CODEC_AMR_H	('0101'B),
+		RSL_IPA_CODEC_RTP_PT	('1111'B)
+	} with { variant "FIELDLENGTH(4)" }
+
+	type record RSL_IE_IPA_SpeechMode {
+		BIT2			reserved,
+		RSL_IPA_SpeechMode	mode,
+		RSL_IPA_Codec		codec
+	}
+
 	/* union of all IE bodies */
 	type union RSL_IE_Body {
 		RslChannelNr		chan_nr,
@@ -516,6 +549,16 @@
 		RSL_LV			full_imm_ass_info,
 		RSL_LV			ms_identity,
 
+		uint16_t		ipa_conn_id,
+		uint16_t		ipa_local_port,
+		uint16_t		ipa_remote_port,
+		uint32_t		ipa_local_ip,
+		uint32_t		ipa_remote_ip,
+		uint8_t			ipa_rtp_pt,
+		uint8_t			ipa_rtp_pt2,
+		RSL_IE_IPA_ConnectionStats ipa_stats,
+		RSL_IE_IPA_SpeechMode	ipa_speech_mode,
+
 		RSL_LV		other
 	}
 
@@ -553,6 +596,16 @@
 					ms_identity, iei =  RSL_IE_MS_IDENTITY;
 					other, iei = RSL_IE_FULL_BCCH_INFO;
 
+					ipa_conn_id, iei = RSL_IE_IPAC_CONN_ID;
+					ipa_remote_ip, iei = RSL_IE_IPAC_REMOTE_IP;
+					ipa_remote_port, iei = RSL_IE_IPAC_REMOTE_PORT;
+					ipa_local_ip, iei = RSL_IE_IPAC_LOCAL_IP;
+					ipa_local_port, iei = RSL_IE_IPAC_LOCAL_PORT;
+					ipa_rtp_pt, iei = RSL_IE_IPAC_RTP_PAYLOAD;
+					ipa_rtp_pt2, iei = RSL_IE_IPAC_RTP_PAYLOAD2;
+					ipa_stats, iei = RSL_IE_IPAC_CONN_STAT;
+					ipa_speech_mode, iei = RSL_IE_IPAC_SPEECH_MODE;
+
 					other, OTHERWISE;
 		)" };
 
@@ -866,4 +919,177 @@
 		}
 	}
 
+
+	/* Abis/IP specific messages */
+
+	template RSL_Message tr_RSL_IPA_CRCX(template RslChannelNr chan_nr) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_CRCX,
+		ies := {
+			tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
+			*
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_CRCX_ACK(RslChannelNr chan_nr,
+						 uint16_t ipa_conn_id, uint32_t local_ip,
+						 uint16_t local_port, uint7_t rtp_pt2) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_CRCX_ACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			t_RSL_IE(RSL_IE_IPAC_LOCAL_IP, RSL_IE_Body:{ipa_local_ip := local_ip}),
+			t_RSL_IE(RSL_IE_IPAC_LOCAL_PORT, RSL_IE_Body:{ipa_local_port := local_port}),
+			t_RSL_IE(RSL_IE_IPAC_RTP_PAYLOAD2, RSL_IE_Body:{ipa_rtp_pt2 := rtp_pt2})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_CRCX_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_CRCX_NACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+		}
+	}
+
+	template RSL_Message tr_RSL_IPA_MDCX(template RslChannelNr chan_nr,
+					     template uint16_t ipa_conn_id) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_MDCX,
+		ies := {
+			tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
+			tr_RSL_IE(RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			*
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_MDCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id,
+						 uint32_t remote_ip, uint16_t remote_port,
+						 uint7_t rtp_pt2) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_CRCX_NACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			/* optional */
+			t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			t_RSL_IE(RSL_IE_IPAC_REMOTE_IP, RSL_IE_Body:{ipa_remote_ip := remote_ip}),
+			t_RSL_IE(RSL_IE_IPAC_REMOTE_PORT, RSL_IE_Body:{ipa_remote_port := remote_port}),
+			/* optional: RTP Payload Type */
+			t_RSL_IE(RSL_IE_IPAC_RTP_PAYLOAD2, RSL_IE_Body:{ipa_rtp_pt2 := rtp_pt2})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_MDCX_NACK(RslChannelNr chan_nr, RSL_Cause cause,
+						  template uint16_t ipa_conn_id) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_MDCX_NACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			/* optional connection ID */
+			t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_DLCX_IND(RslChannelNr chan_nr, uint16_t ipa_conn_id,
+						 RSL_IE_IPA_ConnectionStats stats, RSL_Cause cause) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_DLCX_IND,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			t_RSL_IE(RSL_IE_IPAC_CONN_STAT, RSL_IE_Body:{ipa_stats := stats}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+		}
+	}
+
+	template RSL_Message tr_RSL_IPA_DLCX(template RslChannelNr chan_nr,
+					     template uint16_t ipa_conn_id := omit) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_DLCX,
+		ies := {
+			tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
+			/* FIXME: optional conn_id */
+			*
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_DLCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id,
+						 template RSL_IE_IPA_ConnectionStats stats) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_DLCX_ACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			t_RSL_IE(RSL_IE_IPAC_CONN_STAT, RSL_IE_Body:{ipa_stats := stats})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_DLCX_NACK(RslChannelNr chan_nr, RSL_Cause cause,
+						  template uint16_t ipa_conn_id) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_DLCX_NACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			/* optional connection ID */
+			t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+		}
+	}
+
+	template RSL_Message tr_RSL_IPA_PDCH_ACT(template RslChannelNr chan_nr) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_PDCH_ACT,
+		ies := {
+			tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, RSL_IE_FrameNumber fn) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_PDCH_ACT_ACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := fn})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_PDCH_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_PDCH_ACT_NACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+		}
+	}
+
+	template RSL_Message tr_RSL_IPA_PDCH_DEACT(template RslChannelNr chan_nr) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_PDCH_DEACT,
+		ies := {
+			tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_PDCH_DEACT_ACK(RslChannelNr chan_nr) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_PDCH_DEACT_ACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
+		}
+	}
+
+	template RSL_Message ts_RSL_IPA_PDCH_DEACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
+		msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+		msg_type := RSL_MT_IPAC_PDCH_DEACT_NACK,
+		ies := {
+			t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+			t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+		}
+	}
+
+
+
 } with { encode "RAW" ; variant "FIELDORDER(msb)" }
