pespin submitted this change.
smf: Encode NG-NAS PDU Session Establishment Request
Until now, the NAS message was hardcoded. Let's generate it ourselves
instead, so we can pass the same PDU Session Id, etc.
Change-Id: If04c97c80e87f851ad0fb24ce089ccc0ff477fb0
---
M smf/SMF_Session_CT.ttcn
M smf/SMF_Session_CT_5G.ttcn
M smf/gen_links.sh
M smf/regen_makefile.sh
4 files changed, 90 insertions(+), 7 deletions(-)
diff --git a/smf/SMF_Session_CT.ttcn b/smf/SMF_Session_CT.ttcn
index 11e9f3a..197717f 100644
--- a/smf/SMF_Session_CT.ttcn
+++ b/smf/SMF_Session_CT.ttcn
@@ -152,6 +152,10 @@
return valueof(pfcp_pars);
}
+type record SessionPars_NGNAS {
+ OCT1 pti
+};
+
/* configuration data for a given Session */
type record SessionPars {
hexstring imsi,
@@ -179,7 +183,9 @@
SessionParsGy gy,
- PfcpParameters pfcp_pars
+ PfcpParameters pfcp_pars,
+
+ SessionPars_NGNAS nas
}
template (value) SessionPars
@@ -210,7 +216,10 @@
validity_time := 0,
cca_res_code := DIAMETER_SUCCESS
},
- pfcp_pars := pfcp_pars
+ pfcp_pars := pfcp_pars,
+ nas := {
+ pti := '00'O
+ }
}
diff --git a/smf/SMF_Session_CT_5G.ttcn b/smf/SMF_Session_CT_5G.ttcn
index 01c7a9f..425675e 100644
--- a/smf/SMF_Session_CT_5G.ttcn
+++ b/smf/SMF_Session_CT_5G.ttcn
@@ -24,6 +24,12 @@
import from NGAP_IEs all;
import from NGAP_Types all;
+import from NAS_CommonTypeDefs all;
+import from NG_NAS_MsgContainers all;
+import from NG_NAS_Osmo_Types all;
+import from NG_NAS_Osmo_Templates all;
+import from NG_NAS_Functions all;
+
import from PFCP_Emulation all;
import from Mutex all;
@@ -96,16 +102,18 @@
var template (value) HTTP2_pseudo_headers pseudo_hdr;
var template (value) HTTP2_header_list hdr_li;
var template (value) HTTP2_header_block hb;
+ var template (value) NG_NAS_UL_Message_Type nas_ul_msg;
+ var ProcedureTransactionIdentifier pti := f_next_pti();
var template (value) octetstring body;
var template (value) TS29502_Nsmf_PDUSession.PlmnId plmn_id := TS29502_Nsmf_PDUSession_Templates.ts_PlmnId("001", "001");
var template (value) TS29502_Nsmf_PDUSession.PlmnIdNid plmn_id_nid := TS29502_Nsmf_PDUSession_Templates.ts_PlmnIdNid(plmn_id.mcc, plmn_id.mnc);
- var integer pduSessionId := 1;
+ var integer pdu_sess_id := 1;
var template (value) SmContextCreateData sm_contexts;
var octetstring sm_contexts_enc;
sm_contexts := ts_SmContextCreateData(supi := "imsi-" & g_pars.imsi_str,
pei := "imeisv-0790219824011594",
- pduSessionId := pduSessionId,
+ pduSessionId := pdu_sess_id,
dnn := "internet",
sNssai := TS29502_Nsmf_PDUSession_Templates.ts_Snssai(1),
servingNfId := "foobar",
@@ -117,11 +125,17 @@
ratType := ts_RatType(NR),
ueLocation := ts_UserLocation(nrLocation := ts_NrLocation(tai := ts_Tai(plmn_id, "000001"),
ncgi := ts_Ncgi(plmn_id, "000000000"))),
- smContextStatusUri := f_amf_callback_uri(g_pars.imsi_str, "sm-context-status", pduSessionId));
+ smContextStatusUri := f_amf_callback_uri(g_pars.imsi_str, "sm-context-status", pdu_sess_id));
sm_contexts_enc := f_enc_SmContextCreateData(valueof(sm_contexts));
var charstring boundary := "=-0EVVjxcWWFYNd1JXh1OQEg=="
- var octetstring nas_enc := '2e0101c1ffff91a1'O;
+
+ nas_ul_msg := cs_NG_PDU_SESSION_ESTABLISHMENT_REQUEST(cs_NG_PDU_SessionIdV(int2oct(pdu_sess_id, 1)), pti,
+ p_IntegrityProtMaxDataRate := cs_IntegrityProtMaxDataRateV('FF'O, 'FF'O),
+ p_PDU_SessionType := cs_PDU_SessionTypeTV(c_PDU_SessionType_IPv4),
+ p_SSC_Mode := cs_SSC_ModeTV('001'B));
+ var octetstring nas_enc := enc_NG_NAS_UL_Message_Type(valueof(nas_ul_msg));
+
body := f_http2_encode_body_multipart_json_5gnas(sm_contexts_enc, nas_enc, boundary);
pseudo_hdr := ts_HTTP2_pseudo_headers("POST",
@@ -446,4 +460,21 @@
}
}
+
+/************
+* NG NAS
+**************/
+
+private function f_next_pti() runs on SMF_Session_CT return ProcedureTransactionIdentifier
+{
+ var integer i := oct2int(g_pars.nas.pti);
+ if (i >= 254) {
+ g_pars.nas.pti := '01'O;
+ } else {
+ g_pars.nas.pti := int2oct(i + 1, 1);
+ }
+ return g_pars.nas.pti;
+}
+
+
}
diff --git a/smf/gen_links.sh b/smf/gen_links.sh
index 29d860a..352f4a9 100755
--- a/smf/gen_links.sh
+++ b/smf/gen_links.sh
@@ -70,6 +70,45 @@
FILES="TS29571_CommonData.ttcn TS29502_Nsmf_PDUSession.ttcn TS29503_Nudm_SDM.ttcn TS29512_Npcf_SMPolicyControl.ttcn TS29518_Namf_Communication.ttcn "
gen_links $DIR $FILES
+
+####################
+# NG_NAS start
+####################
+DIR=$BASEDIR/nas/ccsrc/Externals
+FILES="common_ext.cc "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/Common
+FILES="CommonDefs.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/PicsPixit
+FILES="EUTRA_NR_Parameters.ttcn NAS_5GC_Parameters.ttcn Parameters.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/CommonIP
+FILES="CommonIP.ttcn LoopbackIP_PacketFilterTest.ttcn LoopbackIP.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/EPS_NAS
+FILES="EPS_NAS_LoopBack_TypeDefs.ttcn EPS_NAS_TypeDefs.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/Common4G5G
+FILES="Common4G5G_LoopBack.ttcn Common4G5G.ttcn EUTRA_NR_SecurityFunctions.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/NAS
+FILES="NAS_AuthenticationCommon.ttcn NAS_AuxiliaryDefsAndFunctions.ttcn NAS_CommonTemplates.ttcn NAS_CommonTypeDefs.ttcn SMS_Templates.ttcn SMS_TypeDefs.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/nas/ttcn/Lib3GPP/NG_NAS
+FILES="EAP_TypeDefs.ttcn NG_NAS_Common.ttcn NG_NAS_MsgContainers.ttcn NG_NAS_Templates.ttcn NG_NAS_TypeDefs.ttcn NG_V2X_MsgContainers.ttcn NG_V2X_TypeDefs.ttcn "
+gen_links $DIR $FILES
+####################
+# NG_NAS end
+####################
+
DIR=../library/ngap
FILES="NGAP_CommonDataTypes.asn NGAP_Constants.asn NGAP_Containers.asn NGAP_IEs.asn NGAP_PDU_Contents.asn NGAP_PDU_Descriptions.asn "
FILES+="NGAP_EncDec.cc NGAP_Types.ttcn NGAP_Pixits.ttcn NGAP_Templates.ttcn "
@@ -88,7 +127,8 @@
FILES+="NTP_Functions.ttcn PFCP_Templates.ttcn PFCP_CodecPort.ttcn PFCP_CodecPort_CtrlFunct.ttcn PFCP_CodecPort_CtrlFunctDef.cc PFCP_Emulation.ttcn "
FILES+="Mutex.ttcn "
FILES+="HTTP2_CodecPort.ttcn HTTP2_CodecPort_CtrlFunct.ttcn HTTP2_CodecPort_CtrlFunctDef.cc HTTP2_Templates.ttcn HTTP2_Functions.ttcn HTTP2_Adapter.ttcn HTTP2_Server_Emulation.ttcn "
-FILES+="TS29503_Nudm_SDM_Templates.ttcn TS29502_Nsmf_PDUSession_Templates.ttcn TS29512_Npcf_SMPolicyControl_Templates.ttcn TS29518_Namf_Communication_Templates.ttcn"
+FILES+="TS29503_Nudm_SDM_Templates.ttcn TS29502_Nsmf_PDUSession_Templates.ttcn TS29512_Npcf_SMPolicyControl_Templates.ttcn TS29518_Namf_Communication_Templates.ttcn "
+FILES+="NG_NAS_Osmo_Types.ttcn NG_NAS_Osmo_Templates.ttcn NG_NAS_Functions.ttcn "
gen_links $DIR $FILES
gen_links_finish
diff --git a/smf/regen_makefile.sh b/smf/regen_makefile.sh
index b8c5a9a..a648078 100755
--- a/smf/regen_makefile.sh
+++ b/smf/regen_makefile.sh
@@ -6,6 +6,7 @@
*.ttcn
*.ttcnpp
BSSGP_EncDec.cc
+ common_ext.cc
DIAMETER_CodecPort_CtrlFunctDef.cc
DIAMETER_EncDec.cc
GTPC_EncDec.cc
@@ -33,3 +34,5 @@
CPPFLAGS_TTCN3=""
. ../_buildsystem/regen_makefile.inc.sh
+
+sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lgnutls/' Makefile
To view, visit change 43663. To unsubscribe, or for help writing mail filters, visit settings.