ranap: Add more RAB-related templates

Change-Id: I363428ab4af869bb1aa4470b33fa52366cbda8b4
diff --git a/library/ranap/RANAP_Templates.ttcn b/library/ranap/RANAP_Templates.ttcn
index a1b0a59..ae762b9 100644
--- a/library/ranap/RANAP_Templates.ttcn
+++ b/library/ranap/RANAP_Templates.ttcn
@@ -1,6 +1,8 @@
 module RANAP_Templates {
 
 import from General_Types all;
+import from Misc_Helpers all;
+import from Native_Functions all;
 
 import from RANAP_IEs all;
 import from RANAP_CommonDataTypes all;
@@ -487,6 +489,24 @@
  * RAB Release
  *****************************************************************************************************/
 
+template (value) RAB_ID
+t_RAB_id(integer rab_id) := int2bit(rab_id, 8);
+
+template (value) TransportLayerAddress ts_RAB_TLA4(OCT4 ip) := hex2bit('350001'H & oct2hex(ip) & '00000000000000000000000000'H);
+template (value) TransportLayerAddress ts_RAB_TLA6(OCT16 ip) := hex2bit('350000'H & oct2hex(ip) & '00'H);
+function f_ts_RAB_TLA(charstring addr) return template (value) TransportLayerAddress {
+	if (f_addr_is_ipv6(addr)) {
+		var OCT16 ip6 := f_inet6_addr(addr);
+		return ts_RAB_TLA6(ip6);
+	} else {
+		var OCT4 ip4 := f_inet_addr(addr);
+		return ts_RAB_TLA4(ip4);
+	}
+}
+
+template (value) BindingID
+t_RAB_binding_port(integer prt) := int2oct(prt, 2) & '0000'O;
+
 template (value) RANAP_PDU
 ts_RANAP_RabReleaseRequest(template (value) RAB_ID rab_id, template (value) Cause cause,
 			   template (omit) RAB_ReleaseRequest.protocolExtensions exts := omit) := {
@@ -522,7 +542,7 @@
 	}
 }
 template RANAP_PDU
-tr_RANAP_RabReleaseRequest(template RAB_ID rab_id, template Cause cause,
+tr_RANAP_RabReleaseRequest(template (present) RAB_ID rab_id, template Cause cause,
 			   template RAB_ReleaseRequest.protocolExtensions exts := *) := {
 	initiatingMessage := {
 		procedureCode := id_RAB_ReleaseRequest,
@@ -1271,6 +1291,45 @@
 	}
 } }
 
+template (value) RAB_SetupOrModifiedList ts_RAB_SMdL(template (value) RAB_ID rab_id,
+						  template (value) TransportLayerAddress tla,
+						  template (value) BindingID binding_id) := { {
+	{
+		id := id_RAB_SetupOrModifiedItem,
+		criticality := ignore,
+		value_ := {
+			rAB_SetupOrModifiedItem := {
+				rAB_ID := rab_id,
+				transportLayerAddress := tla,
+				iuTransportAssociation := {
+					bindingID := binding_id
+				},
+				dl_dataVolumes := omit,
+				iE_Extensions := omit
+			}
+		}
+	}
+} }
+
+template RAB_SetupOrModifiedList tr_RAB_SMdL(template RAB_ID rab_id,
+					  template TransportLayerAddress tla,
+					  template BindingID binding_id) := { {
+	{
+		id := id_RAB_SetupOrModifiedItem,
+		criticality := ignore,
+		value_ := {
+			rAB_SetupOrModifiedItem := {
+				rAB_ID := rab_id,
+				transportLayerAddress := tla,
+				iuTransportAssociation := {
+					bindingID := binding_id
+				},
+				dl_dataVolumes := *,
+				iE_Extensions := *
+			}
+		}
+	}
+} }
 
 template (value) RANAP_PDU
 ts_RANAP_RabAssReq(template (value) RAB_SetupOrModifyList rab_sml,
@@ -1283,7 +1342,7 @@
 				protocolIEs := {
 					{
 						id := id_RAB_SetupOrModifyList,
-						criticality := reject,
+						criticality := ignore,
 						value_ := {
 							rAB_SetupOrModifyList := rab_sml
 						}