[PATCH] osmo-ttcn3-hacks[master]: GSM_Types: Switch TLLI from uint32_t to OCT4

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
Sat Mar 3 21:40:29 UTC 2018


Review at  https://gerrit.osmocom.org/7070

GSM_Types: Switch TLLI from uint32_t to OCT4

The TLLI is not really a number, but an opaque 4-byte value.

Change-Id: I0901340a2211eeeb899f312bcc60573fec11f220
---
M gprs_gb/Test.ttcn
M library/GSM_Types.ttcn
M library/Osmocom_Gb_Types.ttcn
M library/RLCMAC_CSN1_Types.ttcn
M library/RLCMAC_EncDec.cc
5 files changed, 22 insertions(+), 26 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/70/7070/1

diff --git a/gprs_gb/Test.ttcn b/gprs_gb/Test.ttcn
index e9cb40e..7251ef9 100644
--- a/gprs_gb/Test.ttcn
+++ b/gprs_gb/Test.ttcn
@@ -47,7 +47,7 @@
 		var BSSGP_CT bssgp_component;
 
 		var MmContext g_mmctx := {
-			tlli := 0,
+			tlli := 'FFFFFFFF'O,
 			n_u := 0
 		};
 
@@ -334,7 +334,7 @@
 
 	/* compute a random TLLI; FIXME: what about TLLI prefix / local/foreign/...? */
 	function f_random_tlli() return GprsTlli {
-		var GprsTlli tlli := float2int(rnd()* 4294967295.0);
+		var GprsTlli tlli := f_rnd_octstring(4);
 		return tlli;
 	}
 
@@ -402,7 +402,7 @@
 				[] BSSGP.receive(tr_BD_BSSGP(?)) -> value bd {
 					log("BSSGP Rx: ", bd);
 					//log("GMM Rx: ", dec_PDU_L3_MS_SGSN(pdu.payload));
-					g_mmctx.tlli := oct2int(bd.bssgp.pDU_BSSGP_UL_UNITDATA.tLLI);
+					g_mmctx.tlli := bd.bssgp.pDU_BSSGP_UL_UNITDATA.tLLI;
 					tx_gmm(LLC_CR_DL_CMD, gmm_auth_req);
 				}
 				[] BSSGP.receive(t_BssgpStsInd(?, ?, BVC_S_UNBLOCKED)) { repeat; }
diff --git a/library/GSM_Types.ttcn b/library/GSM_Types.ttcn
index b86bfd7..c7b7991 100644
--- a/library/GSM_Types.ttcn
+++ b/library/GSM_Types.ttcn
@@ -16,7 +16,7 @@
 	type integer GsmRxLev (0..63);
 	type integer GsmTsc (0..7) with { variant "FIELDLENGTH(8)" };
 	type uint32_t GsmTmsi;
-	type uint32_t GprsTlli;
+	type OCT4 GprsTlli;
 	type hexstring GsmMcc length(3);
 	type hexstring GsmMnc length(2 .. 3);
 	type uint16_t GsmLac;
diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 2f2a8ba..a3121b5 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -551,7 +551,7 @@
 	template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu) := {
 		pDU_BSSGP_DL_UNITDATA := {
 			bssgpPduType := '00'O,
-			tLLI_current := f_oct_or_wc(tlli, 4),
+			tLLI_current := tlli,
 			qoS_Profile := t_defaultQos,
 			pDU_Lifetime := t_DefaultLifetime(65535),
 			mS_Radio_Access_Capability := omit,
@@ -608,7 +608,7 @@
 		}
 	}
 
-	template PDU_BSSGP ts_BSSGP_UL_UD(OCT4 tlli, BssgpCellId cell_id, octetstring payload) := {
+	template PDU_BSSGP ts_BSSGP_UL_UD(GprsTlli tlli, BssgpCellId cell_id, octetstring payload) := {
 		pDU_BSSGP_UL_UNITDATA := {
 			bssgpPduType := '01'O,
 			tLLI := tlli,
@@ -631,7 +631,7 @@
 					  template octetstring payload := ?) := {
 		pDU_BSSGP_UL_UNITDATA := {
 			bssgpPduType := '01'O,
-			tLLI := f_oct_or_wc(tlli, 4),
+			tLLI := tlli,
 			qoS_Profile := ?,
 			cell_Identifier := t_BSSGP_IE_CellId(cell_id),
 			pFI := *,
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 076b1c1..2335c29 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -52,7 +52,9 @@
 	type record TenTlli {
 		BIT2			presence ('10'B),
 		GprsTlli		tlli
-	} with { variant "" };
+	} with { variant ""
+		variant (tlli) "BYTEORDER(first)"
+	};
 
 	type union GlobalTfiOrTlli {
 		NullGlobalTfi		global_tfi,
@@ -78,7 +80,9 @@
 	type record IO_Tlli {
 		BIT2			presence ('10'B),
 		GprsTlli		tlli
-	} with { variant "" };
+	} with { variant ""
+		variant (tlli) "BYTEORDER(first)"
+	};
 	type record IIO_Tqi {
 		BIT3			presence ('110'B),
 		PacketRequestReference	pkt_req_ref
@@ -244,6 +248,7 @@
 		variant (cont_res_tlli)	"PRESENCE(cont_res_tlli_present = '1'B)"
 		variant (pkt_ta)	"PRESENCE(pkt_ta_present = '1'B)"
 		variant (pwr_ctrl)	"PRESENCE(pwr_ctrl_present = '1'B)"
+		variant (cont_res_tlli) "BYTEORDER(first)"
 	};
 	type record PacketUlAckNack {
 		PageMode		page_mode,
@@ -323,12 +328,16 @@
 		GprsTlli		tlli,
 		CtrlAck			ctrl_ack
 		/* TODO: Rel5 additions */
-	} with { variant "" };
+	} with { variant ""
+		variant (tlli) "BYTEORDER(first)"
+	};
 
 	/* 1.2.8b Packet Uplink Dummy Control Block */
 	type record PacketUlDummy {
 		GprsTlli		tlli
-	} with { variant "" };
+	} with { variant ""
+		variant (tlli) "BYTEORDER(first)"
+	};
 
 	/* 11.2.0.2 */
 	type union RlcmacUlCtrlUnion {
diff --git a/library/RLCMAC_EncDec.cc b/library/RLCMAC_EncDec.cc
index 4cdeae7..ad52f91 100644
--- a/library/RLCMAC_EncDec.cc
+++ b/library/RLCMAC_EncDec.cc
@@ -136,14 +136,7 @@
 	}
 
 	if (in.mac__hdr().tlli__ind()) {
-		/* FIXME */
-		//in.tlli().encode(GSM__Types::GprsTlli_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
-		INTEGER t = in.tlli();
-		unsigned int tmp = t.get_long_long_val();
-		ttcn_buffer.put_c(tmp >> 24);
-		ttcn_buffer.put_c(tmp >> 16);
-		ttcn_buffer.put_c(tmp >> 8);
-		ttcn_buffer.put_c(tmp);
+		ttcn_buffer.put_string(in.tlli());
 	}
 
 	if (in.mac__hdr().pfi__ind()) {
@@ -215,13 +208,7 @@
 
 	/* parse optional TLLI */
 	if (ret_val.mac__hdr().tlli__ind()) {
-		/* FIXME: Why is this not working ?!? */
-		//ret_val.tlli().decode(GSM__Types::GprsTlli_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
-		const unsigned char *cur = ttcn_buffer.get_read_data();
-		unsigned int tmp = cur[0] << 24 | cur[1] << 16 | cur[2] << 8 | cur[3];
-		INTEGER t;
-		t.set_long_long_val(tmp);
-		ret_val.tlli() = t;
+		ret_val.tlli() = OCTETSTRING(4, ttcn_buffer.get_read_data());
 		ttcn_buffer.increase_pos(4);
 	}
 	/* parse optional PFI */

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0901340a2211eeeb899f312bcc60573fec11f220
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list