msc: add first a5/4 tests

All msc tests involving classmarks suffer from the same problem: if a
existing subscriber is reused the old classmarks will stick, since the
msc only overwrites updated parts of the cm when receiving a new cm, so
"downgrading" the existing classmark information is not possible.

This is circumvented here here by using different imsi suffixes,
the last param passed to f_start_handler.

Additionally the handler will now properly respond to cm requests
by the msc, i.e. in case the early cm is not sufficient for a5/4
because it lacks cm3, so the msc attempts once to query the cm,
hoping to get a cm3.

Related: SYS#5324
Change-Id: Idc055a006b325f58a5eafa88bc4415181b3500a2
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index 1949fd6..c6698b1 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -1498,6 +1498,13 @@
 	}
 }
 
+
+template BSSMAP_IE_ClassmarkInformationType3 ts_CM3_default := {
+	elementIdentifier := '13'O,
+	lengthIndicator := 0,	/* overwritten */
+	classmark3ValuePart := '01'O /* A5/4 supported */
+}
+
 template PDU_BSSAP ts_BSSMAP_ClassmarkUpd(template BSSMAP_IE_ClassmarkInformationType2 cm2 := ts_CM2_default,
 					  template BSSMAP_IE_ClassmarkInformationType3 cm3 := omit)
 modifies ts_BSSAP_BSSMAP := {
@@ -1540,6 +1547,18 @@
 	}
 }
 
+template PDU_BSSAP tr_BSSMAP_ClassmarkRequest
+modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			classmarkRequest := {
+				messageType := '58'O,
+				talkerPriority := *
+			}
+		}
+	}
+}
+
 /* return Layer3 octetstring inside BSSAP PDU */
 function f_bssap_extract_l3(PDU_BSSAP bssap) return template octetstring {
 	if (ischosen(bssap.pdu.bssmap)) {