laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37942?usp=email )
Change subject: PFCP: rework templates, get rid of functions ......................................................................
PFCP: rework templates, get rid of functions
This patch fixes dozens of compilation warnings, turning functions returning templates into templates inheriting from {tr,ts}_PDU_PFCP_.
Change-Id: I04735adf88c81b949e1dca6e9ab9a3b37ba78bd6 Related: SYS#6772 --- M library/PFCP_Templates.ttcn M upf/UPF_Tests.ttcn 2 files changed, 173 insertions(+), 126 deletions(-)
Approvals: laforge: Looks good to me, approved Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve
diff --git a/library/PFCP_Templates.ttcn b/library/PFCP_Templates.ttcn index 3acc287..329ea88 100644 --- a/library/PFCP_Templates.ttcn +++ b/library/PFCP_Templates.ttcn @@ -124,7 +124,10 @@ seid := seid };
-template (value) PDU_PFCP ts_PFCP_Assoc_Setup_Req(template (value) Node_ID node_id, LIN4_BO_LAST recovery_timestamp) +/* 7.4.4.1 PFCP Association Setup Request */ +template (value) PDU_PFCP +ts_PFCP_Assoc_Setup_Req(template (value) Node_ID node_id, + LIN4_BO_LAST recovery_timestamp) modifies ts_PDU_PFCP_ := { message_body := { pfcp_association_setup_request := { @@ -136,10 +139,10 @@ } } }; - -function tr_PFCP_Assoc_Setup_Req(template (present) Node_ID node_id := ?) return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Assoc_Setup_Req(template (present) Node_ID node_id := ?) +modifies tr_PDU_PFCP_ := { + message_body := { pfcp_association_setup_request := { node_id := node_id, time_stamp := ?, @@ -147,14 +150,15 @@ cp_function_features := *, UP_IP_resource_list := * } - }; - return t; + } };
-template (value) PDU_PFCP ts_PFCP_Assoc_Setup_Resp(LIN3_BO_LAST sequence_number, - template (value) Node_ID node_id, - template (value) Cause cause, - LIN4_BO_LAST recovery_timestamp) +/* 7.4.4.2 PFCP Association Setup Response */ +template (value) PDU_PFCP +ts_PFCP_Assoc_Setup_Resp(LIN3_BO_LAST sequence_number, + template (value) Node_ID node_id, + template (value) Cause cause, + LIN4_BO_LAST recovery_timestamp) modifies ts_PDU_PFCP_ := { sequence_number := sequence_number, message_body := { @@ -168,11 +172,11 @@ } } }; - -function tr_PFCP_Assoc_Setup_Resp(template (present) Node_ID node_id := ?, - template (present) Cause cause := ?) return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Assoc_Setup_Resp(template (present) Node_ID node_id := ?, + template (present) Cause cause := ?) +modifies tr_PDU_PFCP_ := { + message_body := { pfcp_association_setup_response := { node_id := node_id, cause := cause, @@ -181,31 +185,53 @@ cp_function_features := *, UP_IP_resource_list := * } - }; - return t; + } };
-function ts_PFCP_Assoc_Release_Req(template (value) Node_ID node_id) return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(); - - t.message_body := { +/* 7.4.4.5 PFCP Association Release Request */ +template (value) PDU_PFCP +ts_PFCP_Assoc_Release_Req(template (value) Node_ID node_id) +modifies ts_PDU_PFCP_ := { + message_body := { pfcp_association_release_request := { node_id := node_id } - }; - return t; + } +}; +template (present) PDU_PFCP +tr_PFCP_Assoc_Release_Req(template (present) Node_ID node_id := ?) +modifies tr_PDU_PFCP_ := { + message_body := { + pfcp_association_release_request := { + node_id := node_id + } + } };
-function tr_PFCP_Assoc_Release_Resp(template (present) Node_ID node_id := ?, template (present) Cause cause := ?) - return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(); - t.message_body := { +/* 7.4.4.6 PFCP Association Release Response */ +template (value) PDU_PFCP +ts_PFCP_Assoc_Release_Resp(LIN3_BO_LAST sequence_number, + template (value) Node_ID node_id, + template (value) Cause cause) +modifies ts_PDU_PFCP_ := { + sequence_number := sequence_number, + message_body := { pfcp_association_release_response := { node_id := node_id, cause := cause } - }; - return t; + } +}; +template (present) PDU_PFCP +tr_PFCP_Assoc_Release_Resp(template (present) Node_ID node_id := ?, + template (present) Cause cause := ?) +modifies tr_PDU_PFCP_ := { + message_body := { + pfcp_association_release_response := { + node_id := node_id, + cause := cause + } + } };
template (value) F_SEID ts_PFCP_F_SEID_ipv4(OCT4 addr_v4, OCT8 seid) := { @@ -281,15 +307,12 @@ 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) Network_Instance +ts_PFCP_Network_Instance(charstring netinst_name) := { + elementIdentifier := 22, + lengthIndicator := 0, + 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, @@ -321,9 +344,7 @@ spare := '000'B }
-function ts_PFCP_Apply_Action_FORW() return template (value) Apply_Action { - return ts_PFCP_Apply_Action(forw := '1'B); -} +template (value) Apply_Action ts_PFCP_Apply_Action_FORW := ts_PFCP_Apply_Action(forw := '1'B); template (value) Apply_Action ts_PFCP_Apply_Action_DROP := ts_PFCP_Apply_Action(drop := '1'B); template (value) Apply_Action ts_PFCP_Apply_Action_BUFF := ts_PFCP_Apply_Action(buff := '1'B);
@@ -471,13 +492,15 @@ } }
-function 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) - return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(); - t.message_body := { +/* 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) +modifies ts_PDU_PFCP_ := { + seid := omit, /* FIXME: 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 := cp_f_seid, @@ -491,18 +514,27 @@ node_list := omit, up_inactivity_timer := omit } - }; - return t; + } } - -function tr_PFCP_Session_Est_Req() return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(?); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Session_Est_Req(template (present) Node_ID node_id := ?) +modifies tr_PDU_PFCP_ := { + seid := ?, + message_body := { pfcp_session_establishment_request := { - node_id := ? + node_id := node_id, + CP_F_SEID := ?, + create_PDR_list := ?, + create_FAR_list := ?, + create_URR_list := *, + create_QER_list := *, + create_BAR := *, + create_traffic_endpoint_list := *, + pdn_type := *, + node_list := *, + up_inactivity_timer := * } - }; - return t; + } }
template (value) Created_PDR ts_PFCP_Created_PDR(PDR_ID pdr_id, template (value) F_TEID local_F_TEID) := { @@ -514,22 +546,27 @@ } }
-function ts_PFCP_Session_Est_Resp(LIN3_BO_LAST seq_nr, template (value) Node_ID node_id, OCT8 seid) - return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(seq_nr, seid); - t.sequence_number := seq_nr; - t.message_body := { +/* 7.5.3 PFCP Session Establishment Response */ +template (value) PDU_PFCP +ts_PFCP_Session_Est_Resp(template (value) LIN3_BO_LAST seq_nr, + template (value) Node_ID node_id, + template (value) OCT8 seid) +modifies ts_PDU_PFCP_ := { + seid := seid, + sequence_number := seq_nr, + message_body := { pfcp_session_establishment_response := { node_id := node_id, cause := ts_PFCP_Cause(REQUEST_ACCEPTED) } - }; - return t; + } } - -function tr_PFCP_Session_Est_Resp(template (present) OCT8 hdr_seid := ?) return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(hdr_seid); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Session_Est_Resp(template (present) OCT8 seid := ?) +modifies tr_PDU_PFCP_ := { + seid := seid, + sequence_number := ?, + message_body := { pfcp_session_establishment_response := { node_id := ?, cause := tr_PFCP_Cause(REQUEST_ACCEPTED), @@ -542,14 +579,16 @@ failed_rule_id := *, created_traffic_endpoint_list := * } - }; - return t; + } }
-function ts_PFCP_Session_Mod_Req(OCT8 up_seid, Update_FAR update_far) - return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(seid := up_seid); - t.message_body := { +/* 7.5.4 PFCP Session Modification Request */ +template (value) PDU_PFCP +ts_PFCP_Session_Mod_Req(template (value) OCT8 seid, + Update_FAR update_far) +modifies ts_PDU_PFCP_ := { + seid := seid, + message_body := { pfcp_session_modification_request := { f_seid := omit, remove_PDR_list := omit, @@ -576,21 +615,25 @@ up_inactivity_timer := omit, querry_urr_reference := omit } - }; - return t; + } } - -function tr_PFCP_Session_Mod_Req(template (present) OCT8 seid := ?) return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(seid); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Session_Mod_Req(template (present) OCT8 seid := ?) +modifies tr_PDU_PFCP_ := { + seid := seid, + message_body := { pfcp_session_modification_request := ? - }; - return t; + } }
-function ts_PFCP_Session_Mod_Resp(LIN3_BO_LAST seq_nr, OCT8 seid) return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(seq_nr, seid); - t.message_body := { +/* 7.5.5 PFCP Session Modification Response */ +template (value) PDU_PFCP +ts_PFCP_Session_Mod_Resp(template (value) LIN3_BO_LAST seq_nr, + template (value) OCT8 seid) +modifies ts_PDU_PFCP_ := { + seid := seid, + sequence_number := seq_nr, + message_body := { pfcp_session_modification_response := { cause := ts_PFCP_Cause(REQUEST_ACCEPTED), offending_IE := omit, @@ -602,54 +645,59 @@ additional_usage_reports_information := omit, created_updated_traffic_endpoint := omit } - }; - return t; + } } - -function tr_PFCP_Session_Mod_Resp(template (present) OCT8 seid := ?) return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(seid); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Session_Mod_Resp(template (present) OCT8 seid := ?) +modifies tr_PDU_PFCP_ := { + seid := seid, + message_body := { pfcp_session_modification_response := ? - }; - return t; + } }
-function ts_PFCP_Session_Del_Req(OCT8 seid) return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(seid := seid); - t.message_body := { +/* 7.5.6 PFCP Session Deletion Request */ +template (value) PDU_PFCP +ts_PFCP_Session_Del_Req(template (value) OCT8 seid) +modifies ts_PDU_PFCP_ := { + seid := seid, + message_body := { pfcp_session_deletion_request := { } - }; - return t; + } } - -function tr_PFCP_Session_Del_Req(template (present) OCT8 seid := ?) return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(seid); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Session_Del_Req(template (present) OCT8 seid := ?) +modifies tr_PDU_PFCP_ := { + seid := seid, + message_body := { pfcp_session_deletion_request := ? - }; - return t; + } }
-function ts_PFCP_Session_Del_Resp(LIN3_BO_LAST seq_nr, OCT8 seid, e_PFCP_Cause cause := REQUEST_ACCEPTED) - return template (value) PDU_PFCP { - var template (value) PDU_PFCP t := ts_PDU_PFCP(seq_nr, seid); - t.message_body := { +/* 7.5.7 PFCP Session Deletion Response */ +template (value) PDU_PFCP +ts_PFCP_Session_Del_Resp(template (value) LIN3_BO_LAST seq_nr, + template (value) OCT8 seid, + template (value) Cause cause := ts_PFCP_Cause(REQUEST_ACCEPTED)) +modifies ts_PDU_PFCP_ := { + seid := seid, + sequence_number := seq_nr, + message_body := { pfcp_session_deletion_response := { - cause := ts_PFCP_Cause(cause), + cause := cause, offending_IE := omit, load_control_information := omit, overload_control_information := omit, usage_report := omit } - }; - return t; + } } - -function tr_PFCP_Session_Del_Resp(template (present) OCT8 seid := ?, - template (present) Cause cause := tr_PFCP_Cause(REQUEST_ACCEPTED)) - return template (present) PDU_PFCP { - var template PDU_PFCP t := tr_PDU_PFCP(seid); - t.message_body := { +template (present) PDU_PFCP +tr_PFCP_Session_Del_Resp(template (present) OCT8 seid, + template (present) Cause cause := tr_PFCP_Cause(REQUEST_ACCEPTED)) +modifies tr_PDU_PFCP_ := { + seid := seid, + message_body := { pfcp_session_deletion_response := { cause := cause, offending_IE := *, @@ -657,8 +705,7 @@ overload_control_information := *, usage_report := * } - }; - return t; + } }
} diff --git a/upf/UPF_Tests.ttcn b/upf/UPF_Tests.ttcn index cb8c489..37af9b3 100644 --- a/upf/UPF_Tests.ttcn +++ b/upf/UPF_Tests.ttcn @@ -615,7 +615,7 @@ valueof( ts_PFCP_Create_FAR( far_id, - ts_PFCP_Apply_Action_FORW(), + ts_PFCP_Apply_Action_FORW, valueof(ts_PFCP_Forwarding_Parameters(CORE)) ) ) @@ -645,7 +645,7 @@ valueof( ts_PFCP_Create_FAR( far_id, - ts_PFCP_Apply_Action_FORW(), + ts_PFCP_Apply_Action_FORW, valueof(ts_PFCP_Forwarding_Parameters( ACCESS, ts_PFCP_Outer_Header_Creation_GTP_ipv4( @@ -682,7 +682,7 @@ valueof( ts_PFCP_Create_FAR( far_id, - ts_PFCP_Apply_Action_FORW(), + ts_PFCP_Apply_Action_FORW, valueof(ts_PFCP_Forwarding_Parameters(dest_iface, ts_PFCP_Outer_Header_Creation_GTP_ipv4(dest_remote_f_teid.teid, dest_remote_f_teid.ipv4_address))) @@ -727,7 +727,7 @@ return valueof( ts_PFCP_Update_FAR( gtp.core.tunmap.far_id, - ts_PFCP_Apply_Action_FORW(), + ts_PFCP_Apply_Action_FORW, valueof(ts_PFCP_Update_Forwarding_Parameters( CORE, ts_PFCP_Outer_Header_Creation_GTP_ipv4(gtp.core.tunmap.teid_r, @@ -763,7 +763,7 @@ valueof( ts_PFCP_Create_FAR( far_id, - ts_PFCP_Apply_Action_FORW(), + ts_PFCP_Apply_Action_FORW, valueof(ts_PFCP_Forwarding_Parameters(ACCESS)) ) ) @@ -788,7 +788,7 @@ valueof( ts_PFCP_Create_FAR( far_id, - ts_PFCP_Apply_Action_FORW(), + ts_PFCP_Apply_Action_FORW, valueof(ts_PFCP_Forwarding_Parameters(ACCESS)) ) )