library/RAN_Emulation.ttcnpp: fix: properly handle SAPI / DLCI for RANAP

Some of our SMS related test cases are failing. The problem is
that SMS related RAN messages shall be sent on SAPI 3, as per
GSM TS 04.11, section 2.3, while they actually being sent on
SAPI 0.

For the messages coming from the TCs towards OsmoMSC over RANAP,
we need to convert from DLCI to SAPI in f_xmit_raw_l3(). OsmoMSC
also needs to be patched, because it seems to ignore SAPI IE.

Change-Id: I6199fd5f26774fb1ec419bc1ef9e1caeca3a0d35
diff --git a/library/RAN_Emulation.ttcnpp b/library/RAN_Emulation.ttcnpp
index b41d7eb..207adcd 100644
--- a/library/RAN_Emulation.ttcnpp
+++ b/library/RAN_Emulation.ttcnpp
@@ -1096,9 +1096,15 @@
 #endif
 #ifdef RAN_EMULATION_RANAP
 	case (RAN_PROTOCOL_RANAP) {
+		var template (omit) RANAP_IEs.SAPI sapi := omit;
 		var RANAP_PDU ranap;
-		/* FIXME: convert DLCI into SAPI */
-		ranap := valueof(ts_RANAP_DirectTransfer(l3_enc));
+
+		/* Perform DLCI -> SAPI transformation (x & 0x07) */
+		if (dlci and4b '07'O == '03'O) {
+			sapi := sapi_3;
+		}
+
+		ranap := valueof(ts_RANAP_DirectTransfer(l3_enc, sapi := sapi));
 		RANAP.send(ts_RANAP_DATA_req(sccp_conn_id, ranap));
 		}
 #endif