PFCP: add support for Network Instance IE

Related: SYS#6192
Change-Id: Iba8d423cd91e73ea40139a5b58c4e22f1a741dc1
This commit is contained in:
Neels Hofmeyr 2023-01-11 01:55:11 +01:00 committed by neels
parent 6defa01a28
commit c9e709bdce
1 changed files with 24 additions and 4 deletions

View File

@ -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,