fixeria submitted this change.
library/PFCP_Templates: add missing receive templates
Change-Id: I534d23c4463f9de86bcc0a03b969f22f291ef8c1
---
M library/PFCP_Templates.ttcn
M upf/UPF_Tests.ttcn
2 files changed, 288 insertions(+), 50 deletions(-)
diff --git a/library/PFCP_Templates.ttcn b/library/PFCP_Templates.ttcn
index f3b6893..42fad90 100644
--- a/library/PFCP_Templates.ttcn
+++ b/library/PFCP_Templates.ttcn
@@ -52,7 +52,9 @@
const INT4b PFCP_Node_ID_IPv6 := 1;
const INT4b PFCP_Node_ID_FQDN := 2;
-template (value) Node_ID ts_PFCP_Node_ID(INT4b id_type, octetstring id_value) := {
+template (value) Node_ID
+ts_PFCP_Node_ID(template (value) INT4b id_type,
+ template (value) octetstring id_value) := {
elementIdentifier := 60,
lengthIndicator := 0,
node_id_type := id_type,
@@ -60,8 +62,9 @@
node_id_value := id_value
};
-template (present) Node_ID tr_PFCP_Node_ID(template (present) INT4b id_type := ?,
- template (present) octetstring id_value := ?) := {
+template (present) Node_ID
+tr_PFCP_Node_ID(template (present) INT4b id_type := ?,
+ template (present) octetstring id_value := ?) := {
elementIdentifier := 60,
lengthIndicator := ?,
node_id_type := id_type,
@@ -70,8 +73,15 @@
};
/* t_PFCP_Node_ID_IPv4(f_inet_addr("127.0.0.1")) */
-template (value) Node_ID ts_PFCP_Node_ID_ipv4(OCT4 ip_value) := ts_PFCP_Node_ID(PFCP_Node_ID_IPv4, ip_value);
-template (value) Node_ID ts_PFCP_Node_ID_fqdn(charstring fqdn) := ts_PFCP_Node_ID(PFCP_Node_ID_FQDN, char2oct(fqdn));
+template (value) Node_ID
+ts_PFCP_Node_ID_ipv4(template (value) OCT4 ip_value) := ts_PFCP_Node_ID(PFCP_Node_ID_IPv4, ip_value);
+template (present) Node_ID
+tr_PFCP_Node_ID_ipv4(template (present) OCT4 ip_value) := tr_PFCP_Node_ID(PFCP_Node_ID_IPv4, ip_value);
+
+template (value) Node_ID
+ts_PFCP_Node_ID_fqdn(charstring fqdn) := ts_PFCP_Node_ID(PFCP_Node_ID_FQDN, char2oct(fqdn));
+template (present) Node_ID
+tr_PFCP_Node_ID_fqdn(template (present) octetstring fqdn) := tr_PFCP_Node_ID(PFCP_Node_ID_FQDN, fqdn);
template (value) Recovery_Time_Stamp
ts_PFCP_Recovery_Timestamp(template (value) LIN4_BO_LAST time_value) := {
@@ -264,7 +274,9 @@
}
};
-template (value) F_SEID ts_PFCP_F_SEID_ipv4(OCT4 addr_v4, OCT8 seid) := {
+template (value) F_SEID
+ts_PFCP_F_SEID_ipv4(template (value) OCT4 addr_v4,
+ template (value) OCT8 seid) := {
elementIdentifier := 57,
lengthIndicator := 0,
v6 := '0'B,
@@ -274,6 +286,18 @@
ipv4_address := addr_v4,
ipv6_address := omit
}
+template (present) F_SEID
+tr_PFCP_F_SEID_ipv4(template (present) OCT4 addr_v4 := ?,
+ template (present) OCT8 seid := ?) := {
+ elementIdentifier := 57,
+ lengthIndicator := ?,
+ v6 := '0'B,
+ v4 := '1'B,
+ spare := ?,
+ seid := seid,
+ ipv4_address := addr_v4,
+ ipv6_address := omit
+}
type enumerated e_PFCP_Src_Iface {
ACCESS (0),
@@ -283,12 +307,20 @@
x_5G_VN_INTERNAL (4)
};
-template (value) Source_Interface ts_PFCP_Src_Iface(e_PFCP_Src_Iface iface) := {
+template (value) Source_Interface
+ts_PFCP_Src_Iface(e_PFCP_Src_Iface iface) := {
elementIdentifier := 20,
lengthIndicator := 0,
interfacevalue := enum2int(iface),
spare := '0000'B
}
+template (present) Source_Interface
+tr_PFCP_Src_Iface(e_PFCP_Src_Iface iface) := {
+ elementIdentifier := 20,
+ lengthIndicator := ?,
+ interfacevalue := enum2int(iface),
+ spare := ?
+}
template (value) UE_IP_Address ts_PFCP_UE_IP_Address_v4(OCT4 addr_v4, boolean is_destination := true) := {
elementIdentifier := 93,
@@ -344,10 +376,11 @@
pdn_instance := f_netinst_str_to_qname(netinst_name)
};
-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) Network_Instance network_instance := omit) := {
+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) Network_Instance network_instance := omit) := {
elementIdentifier := 2,
lengthIndicator := 0,
grouped_ie := {
@@ -362,8 +395,30 @@
qfi_list := omit
}
}
+template (present) PDI_IE
+tr_PFCP_PDI(e_PFCP_Src_Iface src_iface,
+ template F_TEID local_F_TEID := *,
+ template UE_IP_Address ue_addr_v4 := *,
+ template Network_Instance network_instance := *) := {
+ elementIdentifier := 2,
+ lengthIndicator := ?,
+ grouped_ie := {
+ source_interface := tr_PFCP_Src_Iface(src_iface),
+ local_F_TEID := local_F_TEID,
+ pdn_instance := network_instance,
+ ue_ip_address := ue_addr_v4,
+ traffic_endpoint_id := *,
+ sdf_filter_list := *,
+ application_id := *,
+ ethernet_packet_filter_list := *,
+ qfi_list := *
+ }
+}
-template (value) Apply_Action ts_PFCP_Apply_Action(BIT1 forw := '0'B, BIT1 drop := '0'B, BIT1 buff := '0'B) := {
+template (value) Apply_Action
+ts_PFCP_Apply_Action(BIT1 forw := '0'B,
+ BIT1 drop := '0'B,
+ BIT1 buff := '0'B) := {
elementIdentifier := 44,
lengthIndicator := 0,
drop := drop,
@@ -373,10 +428,28 @@
dupl := '0'B,
spare := '000'B
}
+template (present) Apply_Action
+tr_PFCP_Apply_Action(template (present) BIT1 forw := '0'B,
+ template (present) BIT1 drop := '0'B,
+ template (present) BIT1 buff := '0'B) := {
+ elementIdentifier := 44,
+ lengthIndicator := ?,
+ drop := drop,
+ forw := forw,
+ buff := buff,
+ nocp := ?,
+ dupl := ?,
+ spare := ?
+}
template (value) Apply_Action ts_PFCP_Apply_Action_FORW := ts_PFCP_Apply_Action(forw := '1'B);
+template (present) Apply_Action tr_PFCP_Apply_Action_FORW := tr_PFCP_Apply_Action(forw := '1'B);
+
template (value) Apply_Action ts_PFCP_Apply_Action_DROP := ts_PFCP_Apply_Action(drop := '1'B);
+template (present) Apply_Action tr_PFCP_Apply_Action_DROP := tr_PFCP_Apply_Action(drop := '1'B);
+
template (value) Apply_Action ts_PFCP_Apply_Action_BUFF := ts_PFCP_Apply_Action(buff := '1'B);
+template (present) Apply_Action tr_PFCP_Apply_Action_BUFF := tr_PFCP_Apply_Action(buff := '1'B);
type enumerated e_PFCP_Dest_Iface {
ACCESS (0),
@@ -387,14 +460,24 @@
x_5G_VN_INTERNAL (5)
};
-template (value) Destination_Interface ts_PFCP_Destination_Interface(e_PFCP_Dest_Iface di) := {
+template (value) Destination_Interface
+ts_PFCP_Destination_Interface(e_PFCP_Dest_Iface di) := {
elementIdentifier := 42,
lengthIndicator := 0,
interface_value := enum2int(di),
spare := '0000'B
}
+template (present) Destination_Interface
+tr_PFCP_Destination_Interface(e_PFCP_Dest_Iface di) := {
+ elementIdentifier := 42,
+ lengthIndicator := ?,
+ interface_value := enum2int(di),
+ spare := ?
+}
-template (value) Outer_Header_Creation ts_PFCP_Outer_Header_Creation_GTP_ipv4(OCT4 remote_teid, OCT4 remote_addr_v4) := {
+template (value) Outer_Header_Creation
+ts_PFCP_Outer_Header_Creation_GTP_ipv4(template (value) OCT4 remote_teid,
+ template (value) OCT4 remote_addr_v4) := {
elementIdentifier := 84,
lengthIndicator := 0,
ohc_description_oct5 := '00000001'B,
@@ -404,6 +487,18 @@
ipv6 := omit,
udp_port := omit
}
+template (present) Outer_Header_Creation
+tr_PFCP_Outer_Header_Creation_GTP_ipv4(template (present) OCT4 remote_teid := ?,
+ template (present) OCT4 remote_addr_v4 := ?) := {
+ elementIdentifier := 84,
+ lengthIndicator := ?,
+ ohc_description_oct5 := '00000001'B,
+ ohc_description_oct6 := '00000000'B,
+ teid := remote_teid,
+ ipv4 := remote_addr_v4,
+ ipv6 := omit,
+ udp_port := *
+}
type enumerated e_PFCP_Outer_Header_Removal {
GTP_U_UDP_IPV4 (0),
@@ -417,42 +512,65 @@
S_TAG_AND_C_TAG (8)
};
-template (value) Outer_Header_Removal ts_PFCP_Outer_Header_Removal(e_PFCP_Outer_Header_Removal ohr) := {
+template (value) Outer_Header_Removal
+ts_PFCP_Outer_Header_Removal(e_PFCP_Outer_Header_Removal ohr) := {
elementIdentifier := 95,
lengthIndicator := 0,
ohc_description := enum2int(ohr)
}
+template (present) Outer_Header_Removal
+tr_PFCP_Outer_Header_Removal(e_PFCP_Outer_Header_Removal ohr) := {
+ elementIdentifier := 95,
+ lengthIndicator := ?,
+ ohc_description := enum2int(ohr)
+}
-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) Network_Instance network_instance := omit
- ) := {
+template (value) Forwarding_Parameters
+ts_PFCP_Forwarding_Parameters(e_PFCP_Dest_Iface dest_iface,
+ template (omit) Outer_Header_Creation ohc := omit,
+ template (omit) Network_Instance network_instance := omit) := {
elementIdentifier := 4,
lengthIndicator := 0,
grouped_ie := {
destination_interface := ts_PFCP_Destination_Interface(dest_iface),
pdn_Instance := network_instance,
redirect_information := omit,
- outer_header_creation := outer_header_creation,
+ outer_header_creation := ohc,
transport_level_marking := omit,
forwarding_policy := omit,
header_enrichment := omit,
traffic_endpoint_ID := omit
}
}
+template (present) Forwarding_Parameters
+tr_PFCP_Forwarding_Parameters(e_PFCP_Dest_Iface dest_iface,
+ template Outer_Header_Creation ohc := *,
+ template Network_Instance network_instance := *) := {
+ elementIdentifier := 4,
+ lengthIndicator := ?,
+ grouped_ie := {
+ destination_interface := tr_PFCP_Destination_Interface(dest_iface),
+ pdn_Instance := network_instance,
+ redirect_information := *,
+ outer_header_creation := ohc,
+ transport_level_marking := *,
+ forwarding_policy := *,
+ header_enrichment := *,
+ traffic_endpoint_ID := *
+ }
+}
-template (value) Update_Forwarding_Parameters ts_PFCP_Update_Forwarding_Parameters(
- e_PFCP_Dest_Iface dest_iface,
- template (omit) Outer_Header_Creation outer_header_creation := omit
- ) := {
+template (value) Update_Forwarding_Parameters
+ts_PFCP_Update_Forwarding_Parameters(template (omit) Destination_Interface dest_iface := omit,
+ template (omit) Outer_Header_Creation ohc := omit,
+ template (omit) Network_Instance network_instance := omit) := {
elementIdentifier := 11,
lengthIndicator := 0,
grouped_ie := {
- destination_interface := ts_PFCP_Destination_Interface(dest_iface),
- pdn_Instance := omit,
+ destination_interface := dest_iface,
+ pdn_Instance := network_instance,
redirect_information := omit,
- outer_header_creation := outer_header_creation,
+ outer_header_creation := ohc,
transport_level_marking := omit,
forwarding_policy := omit,
header_enrichment := omit,
@@ -460,15 +578,42 @@
traffic_endpoint_id := omit
}
}
+template (present) Update_Forwarding_Parameters
+tr_PFCP_Update_Forwarding_Parameters(template Destination_Interface dest_iface := *,
+ template Outer_Header_Creation ohc := *,
+ template Network_Instance network_instance := *) := {
+ elementIdentifier := 11,
+ lengthIndicator := ?,
+ grouped_ie := {
+ destination_interface := dest_iface,
+ pdn_Instance := network_instance,
+ redirect_information := *,
+ outer_header_creation := ohc,
+ transport_level_marking := *,
+ forwarding_policy := *,
+ header_enrichment := *,
+ pfcpSMReq_flags := *,
+ traffic_endpoint_id := *
+ }
+}
-template (value) FAR_ID ts_PFCP_FAR_ID(LIN4_BO_LAST far_id) := {
+template (value) FAR_ID
+ts_PFCP_FAR_ID(template (value) LIN4_BO_LAST far_id) := {
elementIdentifier := 108,
lengthIndicator := 0,
id_value := far_id
}
+template (present) FAR_ID
+tr_PFCP_FAR_ID(template (present) LIN4_BO_LAST far_id := ?) := {
+ elementIdentifier := 108,
+ lengthIndicator := ?,
+ id_value := far_id
+}
-template (value) Create_FAR ts_PFCP_Create_FAR(LIN4_BO_LAST far_id, template (value) Apply_Action aa,
- template (omit) Forwarding_Parameters fp) := {
+template (value) Create_FAR
+ts_PFCP_Create_FAR(template (value) LIN4_BO_LAST far_id,
+ template (value) Apply_Action aa,
+ template (omit) Forwarding_Parameters fp) := {
elementIdentifier := 3,
lengthIndicator := 0,
grouped_ie := {
@@ -479,9 +624,25 @@
bar_id := omit
}
}
+template (present) Create_FAR
+tr_PFCP_Create_FAR(template (present) LIN4_BO_LAST far_id := ?,
+ template (present) Apply_Action aa := ?,
+ template Forwarding_Parameters fp := *) := {
+ elementIdentifier := 3,
+ lengthIndicator := ?,
+ grouped_ie := {
+ far_id := tr_PFCP_FAR_ID(far_id),
+ apply_action := aa,
+ forwarding_parameters := fp,
+ duplicating_parameters := *,
+ bar_id := *
+ }
+}
-template (value) Update_FAR ts_PFCP_Update_FAR(LIN4_BO_LAST far_id, template (value) Apply_Action aa,
- template (omit) Update_Forwarding_Parameters fp) := {
+template (value) Update_FAR
+ts_PFCP_Update_FAR(template (value) LIN4_BO_LAST far_id,
+ template (value) Apply_Action aa,
+ template (omit) Update_Forwarding_Parameters fp) := {
elementIdentifier := 10,
lengthIndicator := 0,
grouped_ie := {
@@ -492,42 +653,90 @@
bar_id := omit
}
}
+template (present) Update_FAR
+tr_PFCP_Update_FAR(template (present) LIN4_BO_LAST far_id := ?,
+ template (present) Apply_Action aa := ?,
+ template Update_Forwarding_Parameters fp := *) := {
+ elementIdentifier := 10,
+ lengthIndicator := ?,
+ grouped_ie := {
+ far_id := tr_PFCP_FAR_ID(far_id),
+ apply_action := aa,
+ forwarding_parameters := fp,
+ duplicating_parameters := *,
+ bar_id := *
+ }
+}
-template (value) PDR_ID ts_PFCP_PDR_ID(OCT2 pdr_id) := {
+template (value) PDR_ID
+ts_PFCP_PDR_ID(template (value) OCT2 pdr_id) := {
elementIdentifier := 56,
lengthIndicator := 0,
rule_id := pdr_id
}
+template (present) PDR_ID
+tr_PFCP_PDR_ID(template (present) OCT2 pdr_id) := {
+ elementIdentifier := 56,
+ lengthIndicator := ?,
+ rule_id := pdr_id
+}
-template (value) Precedence ts_PFCP_Precedence(LIN4_BO_LAST val) := {
+template (value) Precedence
+ts_PFCP_Precedence(template (value) LIN4_BO_LAST val) := {
elementIdentifier := 29,
lengthIndicator := 0,
precedence_value := val
}
+template (present) Precedence
+tr_PFCP_Precedence(template (present) LIN4_BO_LAST val) := {
+ elementIdentifier := 29,
+ lengthIndicator := ?,
+ precedence_value := val
+}
-template (value) Create_PDR ts_PFCP_Create_PDR(integer pdr_id, template (value) PDI_IE pdi,
- template (omit) Outer_Header_Removal outer_header_removal := omit,
- LIN4_BO_LAST far_id) := {
+template (value) Create_PDR
+ts_PFCP_Create_PDR(integer pdr_id,
+ template (value) PDI_IE pdi,
+ template (omit) Outer_Header_Removal ohr := omit,
+ template (value) LIN4_BO_LAST far_id) := {
elementIdentifier := 1,
lengthIndicator := 0,
grouped_ie := {
pdr_id := ts_PFCP_PDR_ID(int2oct(pdr_id, 2)),
precedence := ts_PFCP_Precedence(0),
pdi := pdi,
- outer_header_removal := outer_header_removal,
+ outer_header_removal := ohr,
FAR_ID_list := { ts_PFCP_FAR_ID(far_id) },
uRR_ID_list := omit,
qER_ID_list := omit,
activate_predefined_rules := omit
}
}
+template (present) Create_PDR
+tr_PFCP_Create_PDR(integer pdr_id,
+ template (present) PDI_IE pdi := ?,
+ template Outer_Header_Removal ohr := *,
+ template (present) LIN4_BO_LAST far_id := ?) := {
+ elementIdentifier := 1,
+ lengthIndicator := ?,
+ grouped_ie := {
+ pdr_id := tr_PFCP_PDR_ID(int2oct(pdr_id, 2)),
+ precedence := tr_PFCP_Precedence(?),
+ pdi := pdi,
+ outer_header_removal := ohr,
+ FAR_ID_list := { tr_PFCP_FAR_ID(far_id) },
+ uRR_ID_list := *,
+ qER_ID_list := *,
+ activate_predefined_rules := *
+ }
+}
/* 7.5.2 PFCP Session Establishment Request */
template (value) PDU_PFCP
ts_PFCP_Session_Est_Req(template (value) Node_ID node_id,
template (value) F_SEID cp_f_seid,
- Create_PDR_list create_pdr,
- Create_FAR_list create_far)
+ template (value) Create_PDR_list create_pdr,
+ template (value) Create_FAR_list create_far)
modifies ts_PDU_PFCP_ := {
seid := '0000000000000000'O, /* shall be set to 0 as per 7.2.2.4.2 */
message_body := {
@@ -547,15 +756,18 @@
}
}
template (present) PDU_PFCP
-tr_PFCP_Session_Est_Req(template (present) Node_ID node_id := ?)
+tr_PFCP_Session_Est_Req(template (present) Node_ID node_id := ?,
+ template (present) F_SEID cp_f_seid := ?,
+ template (present) Create_PDR_list create_pdr := ?,
+ template (present) Create_FAR_list create_far := ?)
modifies tr_PDU_PFCP_ := {
seid := '0000000000000000'O, /* shall be set to 0 as per 7.2.2.4.2 */
message_body := {
pfcp_session_establishment_request := {
node_id := node_id,
- CP_F_SEID := ?,
- create_PDR_list := ?,
- create_FAR_list := ?,
+ CP_F_SEID := cp_f_seid,
+ create_PDR_list := create_pdr,
+ create_FAR_list := create_far,
create_URR_list := *,
create_QER_list := *,
create_BAR := *,
@@ -615,7 +827,7 @@
/* 7.5.4 PFCP Session Modification Request */
template (value) PDU_PFCP
ts_PFCP_Session_Mod_Req(template (value) OCT8 seid,
- Update_FAR update_far)
+ template (value) Update_FAR update_far)
modifies ts_PDU_PFCP_ := {
seid := seid,
message_body := {
@@ -648,11 +860,37 @@
}
}
template (present) PDU_PFCP
-tr_PFCP_Session_Mod_Req(template (present) OCT8 seid := ?)
+tr_PFCP_Session_Mod_Req(template (present) OCT8 seid := ?,
+ template (present) Update_FAR update_far := ?)
modifies tr_PDU_PFCP_ := {
seid := seid,
message_body := {
- pfcp_session_modification_request := ?
+ pfcp_session_modification_request := {
+ f_seid := *,
+ remove_PDR_list := *,
+ remove_FAR_list := *,
+ remove_URR_list := *,
+ remove_QER_list := *,
+ remove_BAR := *,
+ remove_traffic_endpoint := *,
+ create_PDR_list := *,
+ create_FAR_list := *,
+ create_URR_list := *,
+ create_QER_list := *,
+ create_BAR := *,
+ create_traffic_endpoint := *,
+ update_PDR_list := *,
+ update_FAR_list := { update_far },
+ update_URR_list := *,
+ update_QER_list := *,
+ update_BAR := *,
+ update_traffic_endpoint := *,
+ pfcpSMReq_flags := *,
+ query_URR_list := *,
+ node_list := *,
+ up_inactivity_timer := *,
+ querry_urr_reference := *
+ }
}
}
diff --git a/upf/UPF_Tests.ttcn b/upf/UPF_Tests.ttcn
index b92701f..434e4f4 100644
--- a/upf/UPF_Tests.ttcn
+++ b/upf/UPF_Tests.ttcn
@@ -727,7 +727,7 @@
gtp.core.tunmap.far_id,
ts_PFCP_Apply_Action_FORW,
valueof(ts_PFCP_Update_Forwarding_Parameters(
- CORE,
+ ts_PFCP_Destination_Interface(CORE),
ts_PFCP_Outer_Header_Creation_GTP_ipv4(gtp.core.tunmap.teid_r,
f_inet_addr(gtp.core.tunmap.gtp_ip_r))
)
@@ -880,7 +880,7 @@
rules.pdr, rules.far));
var PDU_PFCP pfcp;
- PFCP.receive(tr_PFCP_Session_Est_Resp(s.cp_seid)) -> value pfcp;
+ PFCP.receive(tr_PFCP_Session_Est_Resp(seid := s.cp_seid)) -> value pfcp;
s.up_seid := pfcp.message_body.pfcp_session_establishment_response.UP_F_SEID.seid;
s.gtp.seid_l := s.up_seid;
To view, visit change 38100. To unsubscribe, or for help writing mail filters, visit settings.