[MERGED] osmo-ttcn3-hacks[master]: RSL_Types: Add various IPA / Abis-IP specific IEs + templates

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Dec 15 13:31:21 UTC 2017


Harald Welte has submitted this change and it was merged.

Change subject: RSL_Types: Add various IPA / Abis-IP specific IEs + templates
......................................................................


RSL_Types: Add various IPA / Abis-IP specific IEs + templates

Change-Id: I683e7c23b217a993e0d8f079e5bf1a10403420bb
---
M library/RSL_Types.ttcn
1 file changed, 226 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



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,
@@ -515,6 +548,16 @@
 		RSL_IE_RequestRef	req_ref,
 		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
 	}
@@ -552,6 +595,16 @@
 					full_imm_ass_info, iei = RSL_IE_FULL_IMM_ASS_INFO;
 					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)" }

-- 
To view, visit https://gerrit.osmocom.org/5392
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I683e7c23b217a993e0d8f079e5bf1a10403420bb
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list