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))
                        )
                )

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37942?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I04735adf88c81b949e1dca6e9ab9a3b37ba78bd6
Gerrit-Change-Number: 37942
Gerrit-PatchSet: 4
Gerrit-Owner: fixeria <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to