pespin submitted this change.

View Change

Approvals: fixeria: Looks good to me, approved Jenkins Builder: Verified
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(-)

diff --git a/5gc/C5G_Tests.ttcn b/5gc/C5G_Tests.ttcn
index 2bcc1d3..f1c46c8 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,
+ { cs_ProtocolContainer('000C'O, ''O),
+ cs_ProtocolContainer('0001'O, ''O) });
+ pco_exp := cr_ExtdPCO(?,
+ { cs_ProtocolContainer('000C'O, f_inet_addr(C5G_Tests.mp_pcscf_hostname4)),
+ 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 change 42482. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ic7b22ad647bcac944551ac1c29080f895ca72cf8
Gerrit-Change-Number: 42482
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>