PFCP: add support for Network Instance IE
Related: SYS#6192
Change-Id: Iba8d423cd91e73ea40139a5b58c4e22f1a741dc1
diff --git a/library/PFCP_Templates.ttcn b/library/PFCP_Templates.ttcn
index 4e58f32..3acc287 100644
--- a/library/PFCP_Templates.ttcn
+++ b/library/PFCP_Templates.ttcn
@@ -273,15 +273,34 @@
choose_id := choose_id
}
+/* Convert plain Network Instance name to encoded (length-byte + "name") format.
+ * Works only for single-label names, i.e. no dots in the name. */
+private function f_netinst_str_to_qname(charstring name) return octetstring
+{
+ var octetstring qname := int2oct(lengthof(name), 1) & char2oct(name);
+ return qname;
+}
+
+function ts_PFCP_Network_Instance(charstring netinst_name) return Network_Instance
+{
+ var Network_Instance netinst := {
+ elementIdentifier := 22,
+ lengthIndicator := 0,
+ pdn_instance := f_netinst_str_to_qname(netinst_name)
+ }
+ return netinst;
+}
+
template (value) PDI_IE ts_PFCP_PDI(e_PFCP_Src_Iface src_iface,
template (omit) F_TEID local_F_TEID := omit,
- template (omit) UE_IP_Address ue_addr_v4 := omit) := {
+ template (omit) UE_IP_Address ue_addr_v4 := omit,
+ template (omit) Network_Instance network_instance := omit) := {
elementIdentifier := 2,
lengthIndicator := 0,
grouped_ie := {
source_interface := ts_PFCP_Src_Iface(src_iface),
local_F_TEID := local_F_TEID,
- pdn_instance := omit,
+ pdn_instance := network_instance,
ue_ip_address := ue_addr_v4,
traffic_endpoint_id := omit,
sdf_filter_list := omit,
@@ -355,13 +374,14 @@
template (value) Forwarding_Parameters ts_PFCP_Forwarding_Parameters(
e_PFCP_Dest_Iface dest_iface,
- template (omit) Outer_Header_Creation outer_header_creation := omit
+ template (omit) Outer_Header_Creation outer_header_creation := omit,
+ template (omit) Network_Instance network_instance := omit
) := {
elementIdentifier := 4,
lengthIndicator := 0,
grouped_ie := {
destination_interface := ts_PFCP_Destination_Interface(dest_iface),
- pdn_Instance := omit,
+ pdn_Instance := network_instance,
redirect_information := omit,
outer_header_creation := outer_header_creation,
transport_level_marking := omit,