diff --git a/library/PFCP_Templates.ttcn b/library/PFCP_Templates.ttcn index 4e58f320d..3acc287c0 100644 --- a/library/PFCP_Templates.ttcn +++ b/library/PFCP_Templates.ttcn @@ -273,15 +273,34 @@ template (value) F_TEID ts_PFCP_F_TEID_choose_v4(template (omit) OCT1 choose_id 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) Outer_Header_Removal ts_PFCP_Outer_Header_Removal(e_PFCP_Outer_ 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,