neels has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/30926 )


Change subject: upf/PFCP: do not imply f_inet_addr()
......................................................................

upf/PFCP: do not imply f_inet_addr()

PFCP_Templates.ttcn is not the place to do the conversion between string
and OCT4.

When I wanted to use an OCT4 address in some ts_PFCP_* template, it
dawned on me that it is stupid to convert the OCT4 to a string, just so
that the ts_PFCP_* template converts it back to OCT4.

Related: SYS#6192 SYS#5599
Change-Id: Ib068831787f4256f70a2189a5f36ca1ea1f40c9e
---
M library/PFCP_Templates.ttcn
M upf/UPF_Tests.ttcn
2 files changed, 20 insertions(+), 15 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/26/30926/1

diff --git a/library/PFCP_Templates.ttcn b/library/PFCP_Templates.ttcn
index d0e8b67..caab09d 100644
--- a/library/PFCP_Templates.ttcn
+++ b/library/PFCP_Templates.ttcn
@@ -209,14 +209,14 @@
        return t;
 };

-template (value) F_SEID ts_PFCP_F_SEID_ipv4(charstring addr_v4, OCT8 seid) := {
+template (value) F_SEID ts_PFCP_F_SEID_ipv4(OCT4 addr_v4, OCT8 seid) := {
         elementIdentifier := 57,
         lengthIndicator := 0,
         v6 := '0'B,
         v4 := '1'B,
         spare := '000000'B,
         seid := seid,
-        ipv4_address := f_inet_addr(addr_v4),
+        ipv4_address := addr_v4,
         ipv6_address := omit
 }

@@ -235,18 +235,18 @@
         spare := '0000'B
 }

-template (value) UE_IP_Address ts_PFCP_UE_IP_Address_v4(charstring addr_v4, 
boolean is_destination := true) := {
+template (value) UE_IP_Address ts_PFCP_UE_IP_Address_v4(OCT4 addr_v4, boolean 
is_destination := true) := {
         elementIdentifier := 93,
         lengthIndicator := 0,
         v6 := '0'B,
         v4 := '1'B,
         sd := bool2bit(is_destination),
         spare := '00000'B,
-        ipv4_address := f_inet_addr(addr_v4),
+        ipv4_address := addr_v4,
         ipv6_address := omit
 }

-template (value) F_TEID ts_PFCP_F_TEID_ipv4(OCT4 teid, charstring addr_v4) := {
+template (value) F_TEID ts_PFCP_F_TEID_ipv4(OCT4 teid, OCT4 addr_v4) := {
         elementIdentifier := 21,
         lengthIndicator := 0,
         v4 := '1'B,
@@ -255,7 +255,7 @@
         chid := '0'B,
         spare := '0000'B,
         teid := teid,
-        ipv4_address := f_inet_addr(addr_v4),
+        ipv4_address := addr_v4,
         ipv6_address := omit,
         choose_id := omit
 }
@@ -325,13 +325,13 @@
         spare := '0000'B
 }

-template (value) Outer_Header_Creation 
ts_PFCP_Outer_Header_Creation_GTP_ipv4(OCT4 remote_teid, charstring 
remote_addr_v4) := {
+template (value) Outer_Header_Creation 
ts_PFCP_Outer_Header_Creation_GTP_ipv4(OCT4 remote_teid, OCT4 remote_addr_v4) 
:= {
         elementIdentifier := 84,
         lengthIndicator := 0,
         ohc_description_oct5 := '00000001'B,
         ohc_description_oct6 := '00000000'B,
         teid := remote_teid,
-        ipv4 := f_inet_addr(remote_addr_v4),
+        ipv4 := remote_addr_v4,
         ipv6 := omit,
         udp_port := omit
 }
@@ -419,13 +419,16 @@
        }
 }

-function ts_PFCP_Session_Est_Req(charstring node_id, OCT8 cp_seid, 
Create_PDR_list create_pdr, Create_FAR_list create_far)
+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 := {
                pfcp_session_establishment_request := {
-                       node_id := ts_PFCP_Node_ID_ipv4(f_inet_addr(node_id)),
-                       CP_F_SEID := ts_PFCP_F_SEID_ipv4(node_id, cp_seid),
+                       node_id := node_id,
+                       CP_F_SEID := cp_f_seid,
                        create_PDR_list := create_pdr,
                        create_FAR_list := create_far,
                        create_URR_list := omit,
diff --git a/upf/UPF_Tests.ttcn b/upf/UPF_Tests.ttcn
index 796dc16..b5c65d2 100644
--- a/upf/UPF_Tests.ttcn
+++ b/upf/UPF_Tests.ttcn
@@ -539,7 +539,7 @@
 private function f_ruleset_add_GTP_encaps(inout PFCP_Ruleset r,
                                          charstring ue_addr_v4 := 
"192.168.23.42",
                                          OCT4 remote_teid,
-                                         charstring gtp_dest_addr_v4) {
+                                         OCT4 gtp_dest_addr_v4) {

        var integer pdr_id := lengthof(r.pdr) + 1;
        var integer far_id := lengthof(r.far) + 1;
@@ -550,7 +550,7 @@
                        pdr_id,
                        ts_PFCP_PDI(
                                CORE,
-                               ue_addr_v4 := 
ts_PFCP_UE_IP_Address_v4(ue_addr_v4, is_destination := true)
+                               ue_addr_v4 := 
ts_PFCP_UE_IP_Address_v4(f_inet_addr(ue_addr_v4), is_destination := true)
                                ),
                        far_id := far_id
                        )
@@ -635,14 +635,16 @@
 {
        var PFCP_Ruleset rules := { {}, {} };
        f_ruleset_add_GTP_decaps(rules);
-       f_ruleset_add_GTP_encaps(rules, gtp.core_ip, gtp.teid_access_r, 
gtp.gtp_access_ip);
+       f_ruleset_add_GTP_encaps(rules, gtp.core_ip, gtp.teid_access_r, 
f_inet_addr(gtp.gtp_access_ip));
        return rules;
 }

 /* Run a PFCP Session Establishment procedure */
 private function f_session_est(inout PFCP_session s, PFCP_Ruleset rules) runs 
on CPF_ConnHdlr {

-       PFCP.send(ts_PFCP_Session_Est_Req(g_pars.local_addr, s.cp_seid, 
rules.pdr, rules.far));
+       
PFCP.send(ts_PFCP_Session_Est_Req(ts_PFCP_Node_ID_ipv4(f_inet_addr(g_pars.local_addr)),
+                                         
ts_PFCP_F_SEID_ipv4(f_inet_addr(g_pars.local_addr), s.cp_seid),
+                                         rules.pdr, rules.far));

        var PDU_PFCP pfcp;
        PFCP.receive(tr_PFCP_Session_Est_Resp(s.cp_seid)) -> value pfcp;

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

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ib068831787f4256f70a2189a5f36ca1ea1f40c9e
Gerrit-Change-Number: 30926
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>
Gerrit-MessageType: newchange

Reply via email to