ranap: Allow RAB ReleaseList inside RabAssReq template
Related: OS#5152
Change-Id: If5dabf24ab410ef95f92be1cb865ac06330b495e
diff --git a/library/ranap/RANAP_Templates.ttcn b/library/ranap/RANAP_Templates.ttcn
index caccdc7..11947d9 100644
--- a/library/ranap/RANAP_Templates.ttcn
+++ b/library/ranap/RANAP_Templates.ttcn
@@ -1361,49 +1361,147 @@
}
} }
-template (value) RANAP_PDU
-ts_RANAP_RabAssReq(template (value) RAB_SetupOrModifyList rab_sml,
- template (omit) RAB_AssignmentRequest.protocolExtensions exts := omit) := {
- initiatingMessage := {
+template (value) RAB_ReleaseList ts_RAB_RL(template (value) RAB_ID rab_id,
+ template (value) Cause cause) := { {
+ {
+ id := id_RAB_ReleaseItem,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseItem := {
+ rAB_ID := rab_id,
+ cause := cause,
+ iE_Extensions := omit
+ }
+ }
+ }
+} }
+
+template RAB_ReleaseList tr_RAB_RL(template (present) RAB_ID rab_id,
+ template Cause cause := ?) := { {
+ {
+ id := id_RAB_ReleaseItem,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseItem := {
+ rAB_ID := rab_id,
+ cause := cause,
+ iE_Extensions := *
+ }
+ }
+ }
+} }
+
+
+function
+ts_RANAP_RabAssReq(template (omit) RAB_SetupOrModifyList rab_sml := omit,
+ template (omit) RAB_ReleaseList rab_rl := omit,
+ template (omit) RAB_AssignmentRequest.protocolExtensions exts := omit) return template RANAP_PDU {
+ var template RANAP_PDU ret;
+ var template RAB_AssignmentRequest.protocolIEs protocolIEs := {};
+ var integer ie_pos := 0;
+
+ var template RAB_AssignmentRequest.protocolIEs protocolIEs_rab_sml;
+ var template RAB_AssignmentRequest.protocolIEs protocolIEs_rab_rl;
+
+ /* RAB-SetupOrModifyList */
+ if (istemplatekind(rab_sml, "value")) {
+ protocolIEs_rab_sml := {
+ {
+ id := id_RAB_SetupOrModifyList,
+ criticality := ignore,
+ value_ := {
+ rAB_SetupOrModifyList := rab_sml
+ }
+ }
+ };
+ protocolIEs[ie_pos] := protocolIEs_rab_sml[0];
+ ie_pos := ie_pos + 1;
+ }
+
+ /* RAB-ReleaseList */
+ if (istemplatekind(rab_rl, "value")) {
+ protocolIEs_rab_rl := {
+ {
+ id := id_RAB_ReleaseList,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseList := rab_rl
+ }
+ }
+ };
+ protocolIEs[ie_pos] := protocolIEs_rab_rl[0];
+ ie_pos := ie_pos + 1;
+ }
+
+
+ ret.initiatingMessage := {
procedureCode := id_RAB_Assignment,
criticality := reject,
value_ := {
rAB_AssignmentRequest := {
- protocolIEs := {
- {
- id := id_RAB_SetupOrModifyList,
- criticality := ignore,
- value_ := {
- rAB_SetupOrModifyList := rab_sml
- }
- }
- },
+ protocolIEs := protocolIEs,
protocolExtensions := exts
}
}
}
+
+ return ret;
}
-template RANAP_PDU
-tr_RANAP_RabAssReq(template RAB_SetupOrModifyList rab_sml,
- template RAB_AssignmentRequest.protocolExtensions exts := *) := {
- initiatingMessage := {
+
+function
+tr_RANAP_RabAssReq(template RAB_SetupOrModifyList rab_sml := omit,
+ template RAB_ReleaseList rab_rl := omit,
+ template RAB_AssignmentRequest.protocolExtensions exts := *) return template RANAP_PDU {
+ var template RANAP_PDU ret;
+ var template RAB_AssignmentRequest.protocolIEs protocolIEs := {};
+ var integer ie_pos := 0;
+
+ var template RAB_AssignmentRequest.protocolIEs protocolIEs_rab_sml;
+ var template RAB_AssignmentRequest.protocolIEs protocolIEs_rab_rl;
+
+ /* RAB-SetupOrModifyList */
+ if (not istemplatekind(rab_sml, "omit")) {
+ protocolIEs_rab_sml := {
+ {
+ id := id_RAB_SetupOrModifyList,
+ criticality := ignore,
+ value_ := {
+ rAB_SetupOrModifyList := rab_sml
+ }
+ }
+ };
+ protocolIEs[ie_pos] := protocolIEs_rab_sml[0];
+ ie_pos := ie_pos + 1;
+ }
+
+ /* RAB-ReleaseList */
+ if (not istemplatekind(rab_rl, "omit")) {
+ protocolIEs_rab_rl := {
+ {
+ id := id_RAB_ReleaseList,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseList := rab_rl
+ }
+ }
+ };
+ protocolIEs[ie_pos] := protocolIEs_rab_rl[0];
+ ie_pos := ie_pos + 1;
+ }
+
+
+ ret.initiatingMessage := {
procedureCode := id_RAB_Assignment,
criticality := reject,
value_ := {
rAB_AssignmentRequest := {
- protocolIEs := {
- {
- id := id_RAB_SetupOrModifyList,
- criticality := ignore,
- value_ := {
- rAB_SetupOrModifyList := rab_sml
- }
- }
- },
+ protocolIEs := protocolIEs,
protocolExtensions := exts
}
}
}
+
+ return ret;
}
function
@@ -1532,82 +1630,6 @@
return ret;
}
-template (value) RAB_ReleaseList ts_RAB_RL(template (value) RAB_ID rab_id,
- template (value) Cause cause) := { {
- {
- id := id_RAB_ReleaseItem,
- criticality := ignore,
- value_ := {
- rAB_ReleaseItem := {
- rAB_ID := rab_id,
- cause := cause,
- iE_Extensions := omit
- }
- }
- }
-} }
-
-template RAB_ReleaseList tr_RAB_RL(template (present) RAB_ID rab_id,
- template Cause cause := ?) := { {
- {
- id := id_RAB_ReleaseItem,
- criticality := ignore,
- value_ := {
- rAB_ReleaseItem := {
- rAB_ID := rab_id,
- cause := cause,
- iE_Extensions := *
- }
- }
- }
-} }
-
-template (value) RANAP_PDU
-ts_RANAP_RabAssignmentReqRabRel(template (value) RAB_ReleaseList rab_rl,
- template (omit) RAB_AssignmentRequest.protocolExtensions exts := omit) := {
- initiatingMessage := {
- procedureCode := id_RAB_Assignment,
- criticality := reject,
- value_ := {
- rAB_AssignmentRequest := {
- protocolIEs := {
- {
- id := id_RAB_ReleaseList,
- criticality := ignore,
- value_ := {
- rAB_ReleaseList := rab_rl
- }
- }
- },
- protocolExtensions := exts
- }
- }
- }
-}
-
-template RANAP_PDU
-tr_RANAP_RabAssignmentReqRabRel(template RAB_ReleaseList rab_rl,
- template RAB_AssignmentRequest.protocolExtensions exts := *) := {
- initiatingMessage := {
- procedureCode := id_RAB_Assignment,
- criticality := reject,
- value_ := {
- rAB_AssignmentRequest := {
- protocolIEs := {
- {
- id := id_RAB_ReleaseList,
- criticality := ignore,
- value_ := {
- rAB_ReleaseList := rab_rl
- }
- }
- },
- protocolExtensions := exts
- }
- }
- }
-}
-
/*****************************************************************************************************
*
*****************************************************************************************************/