pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42482?usp=email )


Change subject: 5gc: Introduce test TC_pdu_sess_est_pco_pcscf
......................................................................

5gc: Introduce test TC_pdu_sess_est_pco_pcscf

Our deps/nas fork is modified to fix multiple incorrect definitions
around ProtocolContainer record.

Change-Id: Ic7b22ad647bcac944551ac1c29080f895ca72cf8
---
M 5gc/C5G_Tests.ttcn
M 5gc/ConnHdlr.ttcn
M 5gc/expected-results.xml
M 5gc/open5gs/open5gs-smf.yaml
M deps/Makefile
M library/NG_NAS_Osmo_Templates.ttcn
6 files changed, 59 insertions(+), 9 deletions(-)



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

diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn
index 2bcc1d3..f710141 100644
--- a/5gc/C5G_Tests.ttcn
+++ b/5gc/C5G_Tests.ttcn
@@ -66,6 +66,8 @@
        charstring mp_local_gtpu_ip := "127.0.0.20";
        charstring mp_ping_hostname := "10.45.0.1";
        charstring mp_ping_hostname6 := "cafe::1";
+       charstring mp_pcscf_hostname4 := "127.0.0.7";
+       charstring mp_pcscf_hostname6 := "fd02:db8:18::7";

        charstring mp_run_prog_log_path := "/tmp";
        charstring mp_run_prog_as_user := "osmocom";
@@ -398,6 +400,42 @@

 /* 3GPP TS 24.501 8.3.1.7 Always-on PDU session requested (see also 9.11.4.4)
  * 3GPP TS 24.501 8.3.2.6 Always-on PDU session indication (see also 9.11.4.3) 
*/
+private function f_TC_pdu_sess_est_pco_pcscf() runs on ConnHdlr {
+       var template (value) ExtdProtocolConfigOptions pco_req;
+       var template (present) ExtdProtocolConfigOptions pco_exp;
+       var NG_PDU_SESSION_ESTABLISHMENT_ACCEPT sess_acc;
+
+       f_register();
+       pco_req := cs_ExtdPCO('0000'O,
+                            { valueof(cs_ProtocolContainer('000C'O, ''O)),
+                              valueof(cs_ProtocolContainer('0001'O, ''O)) });
+       pco_exp := cr_ExtdPCO(?,
+                             { valueof(cs_ProtocolContainer('000C'O, 
f_inet_addr(C5G_Tests.mp_pcscf_hostname4))),
+                               valueof(cs_ProtocolContainer('0001'O, 
f_inet6_addr(C5G_Tests.mp_pcscf_hostname6))) });
+
+       sess_acc := f_pdu_sess_establish(p_ExtdPCO := pco_req, 
configure_userplane := false);
+
+       if (not match(sess_acc.extdProtocolConfigurationOptions, pco_exp)) {
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+                       log2str("Requested ExtPCO ", pco_req, " expected ", 
pco_exp,
+                               " got ", 
sess_acc.extdProtocolConfigurationOptions));
+       }
+
+       f_pdu_sess_release();
+       f_deregister();
+}
+testcase TC_pdu_sess_est_pco_pcscf() runs on MTC_CT {
+       f_init();
+       f_ngap_setup(0);
+
+       var ConnHdlrPars pars := f_init_pars(ue_idx := 0);
+       var ConnHdlr vc_conn;
+       vc_conn := 
f_start_handler_with_pars(refers(f_TC_pdu_sess_est_pco_pcscf), pars);
+       vc_conn.done;
+}
+
+/* 3GPP TS 24.501 8.3.1.7 Always-on PDU session requested (see also 9.11.4.4)
+ * 3GPP TS 24.501 8.3.2.6 Always-on PDU session indication (see also 9.11.4.3) 
*/
 private function f_TC_pdu_sess_est_always_on() runs on ConnHdlr {
        var NG_PDU_SESSION_ESTABLISHMENT_ACCEPT sess_acc;

@@ -1077,6 +1115,7 @@
        execute( TC_ue_context_release_with_pdu_session() );
        execute( TC_pdu_sess_modification() );
        execute( TC_pdu_sess_est_always_on() );
+       execute( TC_pdu_sess_est_pco_pcscf() );

        execute( TC_ng_register_ping4() );
        execute( TC_ng_register_ping4_256() );
@@ -1145,10 +1184,6 @@
  * - 3GPP TS 23.632 5.3.3 Mobility from EPC to 5GC: Not supported by open5gs 
(missing Nhss interface use in UDM)
  * - 3GPP TS 23.632 5.2.3 Vector Generation in UDM/ARPF: Not supported by 
open5gs (missing Nudm_UEAuthentication_GetHssAv in UDM)
  * - 3GPP TS 23.502 Annex G (normative): Support of GERAN/UTRAN access by 
SMF+PGW-C: Not supported by open5gs (Gn<->N7 (to PCF) in open5gs-smfd)
- *
- * - VoLTE:
- * -- " If the UE requested P-CSCF discovery then the message shall also 
include the P-CSCF IP address(es) as determined by the SMF and as described in 
clause 5.16.3.4 of TS 23.50"
- * - Fill in PCO during PDU Sess Establish Req.
  */

 }
diff --git a/5gc/ConnHdlr.ttcn b/5gc/ConnHdlr.ttcn
index 69daa3e..5294b50 100644
--- a/5gc/ConnHdlr.ttcn
+++ b/5gc/ConnHdlr.ttcn
@@ -549,6 +549,7 @@
 function f_pdu_sess_establish(BIT3 request_type := 
c_RequestType_initial_request,
                              BIT3 pdu_sess_type := c_PDU_SessionType_IPv4,
                              template (omit) AlwaysOnPDUSessionReq 
p_AlwaysOnPDUSessionReq := omit,
+                             template (omit) ExtdProtocolConfigOptions 
p_ExtdPCO := omit,
                              boolean configure_userplane := true) runs on 
ConnHdlr return NG_PDU_SESSION_ESTABLISHMENT_ACCEPT  {
        var template (value) NG_NAS_UL_Message_Type nas_ul_msg;
        var NAS_PDU nas_pdu;
@@ -561,7 +562,8 @@
                                                              
p_IntegrityProtMaxDataRate := cs_IntegrityProtMaxDataRateV('FF'O, 'FF'O),
                                                              p_PDU_SessionType 
:= cs_PDU_SessionTypeTV(pdu_sess_type),
                                                              p_SSC_Mode := 
cs_SSC_ModeTV('001'B),
-                                                             
p_AlwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq);
+                                                             
p_AlwaysOnPDUSessionReq := p_AlwaysOnPDUSessionReq,
+                                                             p_ExtdPCO := 
p_ExtdPCO);
        nas_pdu := enc_NG_NAS_UL_Message_Type(valueof(nas_ul_msg));
        nas_ul_msg := 
cs_NG_UL_NAS_TRANSPORT(cs_PayloadContainerType(tsc_PayloadContainerESMMsg),
                                             cs_PayloadContainerLV(nas_pdu),
diff --git a/5gc/expected-results.xml b/5gc/expected-results.xml
index 155fd95..bbdc0b2 100644
--- a/5gc/expected-results.xml
+++ b/5gc/expected-results.xml
@@ -13,6 +13,7 @@
       C5G_Tests.ttcn:MASKED TC_pdu_sess_est_always_on testcase
     </failure>
   </testcase>
+  <testcase classname='C5G_Tests' name='TC_pdu_sess_est_pco_pcscf' 
time='MASKED'/>
   <testcase classname='C5G_Tests' name='TC_ng_register_ping4' time='MASKED'/>
   <testcase classname='C5G_Tests' name='TC_ng_register_ping4_256' 
time='MASKED'/>
   <testcase classname='C5G_Tests' name='TC_ng_register_ping6' time='MASKED'/>
diff --git a/5gc/open5gs/open5gs-smf.yaml b/5gc/open5gs/open5gs-smf.yaml
index f925af1..8792971 100644
--- a/5gc/open5gs/open5gs-smf.yaml
+++ b/5gc/open5gs/open5gs-smf.yaml
@@ -46,9 +46,9 @@
     - 2001:4860:4860::8888
     - 2001:4860:4860::8844
   mtu: 1400
-#  p-cscf:
-#    - 127.0.0.1
-#    - ::1
+  p-cscf:
+    - 127.0.0.7
+    - fd02:db8:18::7
 #  ctf:
 #    enabled: auto   # auto(default)|yes|no
   freeDiameter: open5gs-smf-freediameter.conf
diff --git a/deps/Makefile b/deps/Makefile
index 61dfe48..49f601b 100644
--- a/deps/Makefile
+++ b/deps/Makefile
@@ -72,7 +72,7 @@

 # Use tag names from 'git describe --tags' or commit hashes. This way we get
 # exact commits of deps when doing regression testing.
-nas_commit=                                    
60a69a44cc6bbb32d96aecc4e355128ac5f95a5e
+nas_commit=                                    
c8fb0b1dd96f45fbfdc93ffc73ffb3ca6ced47cc
 titan.Libraries.TCCUsefulFunctions_commit=     R.35.B-6-gb3687da
 titan.ProtocolEmulations.M3UA_commit=          
a70095b9113b23d2ea2405a5775befec18dd0fe0
 titan.ProtocolEmulations.SCCP_commit=          
744f3eeb58d7b5bc372c9fd01db737a20bae069a
diff --git a/library/NG_NAS_Osmo_Templates.ttcn 
b/library/NG_NAS_Osmo_Templates.ttcn
index 7edb9f5..92e59c7 100644
--- a/library/NG_NAS_Osmo_Templates.ttcn
+++ b/library/NG_NAS_Osmo_Templates.ttcn
@@ -20,6 +20,18 @@

 import from NG_NAS_Osmo_Types all;

+/* 24.301 cl. 9.9.4.26 */
+template (present) ExtdProtocolConfigOptions cr_ExtdPCO(template (present) 
Type6Length_Type p_Length := ?,
+                                                     template 
NAS_ExtdProtocolConfigOptions_Type p_ProtocolContainers := *) :=
+{
+       iei := '7B'O,
+       iel := p_Length,
+       ext := '1'B,
+       spare := tsc_Spare4,
+       configProtocol := tsc_Spare3,
+       pco := p_ProtocolContainers
+  };
+
 /* 24.501 cl. 9.11.3.54 */
 template (value) NG_UE_SecurityCapability
 cs_NG_UE_SecurityCapabilityTLV(template (value) O1_Type ngeaCap := 'f0'O,

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

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ic7b22ad647bcac944551ac1c29080f895ca72cf8
Gerrit-Change-Number: 42482
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to