laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35366?usp=email )
Change subject: LTE_CryptoFunctions.ttcn: Increment nus.rx_count on each pkt read
......................................................................
LTE_CryptoFunctions.ttcn: Increment nus.rx_count on each pkt read
Before this patch, the rx_count field was never set to anything other
than zero.
There's still a problem with counter not being incremented when a
S1AP_IntialCtxSetupReq message containing a NAS_PDU is received. This
will be fixed ina follow-up patch.
Change-Id: I1ee25fd8fde6fbce95444ee4b73918ce1f61b427
---
M mme/LTE_CryptoFunctions.ttcn
1 file changed, 24 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/mme/LTE_CryptoFunctions.ttcn b/mme/LTE_CryptoFunctions.ttcn
index 9923541..340b784 100644
--- a/mme/LTE_CryptoFunctions.ttcn
+++ b/mme/LTE_CryptoFunctions.ttcn
@@ -143,6 +143,12 @@
var octetstring data_with_seq := int2oct(secp_nas.sequenceNumber, 1) & secp_nas.nAS_Message;
var OCT4 exp_mac := f_nas_mac_calc(nus.alg_int, nus.k_nas_int, nus.rx_count, 0,
f_rx_is_downlink(nus), data_with_seq);
+
+ if (nus.rx_count != secp_nas.sequenceNumber) {
+ setverdict(fail, "Received NAS SeqNr ", secp_nas.sequenceNumber,
+ " doesn't match expected SeqNr ", nus.rx_count, ": ", secp_nas, " | nus: ", nus);
+ return false;
+ }
if (exp_mac != secp_nas.messageAuthenticationCode) {
setverdict(fail, "Received NAS MAC ", secp_nas.messageAuthenticationCode,
" doesn't match expected MAC ", exp_mac, ": ", secp_nas, " | nus: ", nus);
@@ -173,12 +179,14 @@
return dec_PDU_NAS_EPS(secp_nas.nAS_Message);
}
case ('0001'B) { /* IP only */
+ nus.rx_count := nus.rx_count + 1;
if (not f_nas_check_ip(nus, secp_nas)) {
Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "f_nas_check_ip() failed");
}
return dec_PDU_NAS_EPS(secp_nas.nAS_Message);
}
case ('0010'B) { /* IP + ciphered */
+ nus.rx_count := nus.rx_count + 1;
if (not f_nas_check_ip(nus, secp_nas)) {
Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "f_nas_check_ip() failed");
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35366?usp=email
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: I1ee25fd8fde6fbce95444ee4b73918ce1f61b427
Gerrit-Change-Number: 35366
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35376?usp=email )
Change subject: S1AP_Emulation: Fix NAS_PDU decoding of InitialContextSetupRequest msg
......................................................................
S1AP_Emulation: Fix NAS_PDU decoding of InitialContextSetupRequest msg
The InitialContextSetupRequest message contains a NAS_PDU deep inside
(in E-RABToBeSetupListCtxtSUReq), and it was not being rx_counted nor
decoded by the S1AP_Emulation.
Since we also care about the lower layer contents from the emulation
user point of view, first send the S1AP_PDU and later the decoded NAS_PDU.
This way the user can wait to receive the related low level S1AP_PDU,
and then read again from the port to get the decoded NAS_PDU.
Change-Id: Ibff5a38b92deafa8d104801f107ca1b8b82bbce0
---
M library/S1AP_Emulation.ttcn
1 file changed, 36 insertions(+), 1 deletion(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
diff --git a/library/S1AP_Emulation.ttcn b/library/S1AP_Emulation.ttcn
index bb3a2a4..9f36225 100644
--- a/library/S1AP_Emulation.ttcn
+++ b/library/S1AP_Emulation.ttcn
@@ -503,6 +503,11 @@
if (match(nas, tr_NAS_EMM_SecurityProtected)) {
nas := f_nas_try_decaps(S1apAssociationTable[assoc_id].nus, nas);
}
+ /* DL/UlNasTransport are not interesting, don't send them */
+ if (not match(mrf.msg, (tr_S1AP_DlNasTransport, tr_S1AP_UlNasTransport))) {
+ /* send raw S1AP */
+ S1AP_CLIENT.send(mrf.msg) to vc_conn;
+ }
/* send decoded NAS */
S1AP_CLIENT.send(nas) to vc_conn;
} else {
@@ -771,7 +776,7 @@
function f_S1AP_get_NAS_PDU(S1AP_PDU s1ap) return template (omit) NAS_PDU
{
- var integer i;
+ var integer i, j;
if (ischosen(s1ap.initiatingMessage)) {
var InitiatingMessage im := s1ap.initiatingMessage;
@@ -792,6 +797,19 @@
}
}
}
+ case (tr_S1AP_IntialCtxSetupReq) {
+ var InitialContextSetupRequest msg := im.value_.initialContextSetupRequest;
+ for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
+ if (msg.protocolIEs[i].id == id_E_RABToBeSetupListCtxtSUReq) {
+ var E_RABToBeSetupListCtxtSUReq rab_req := msg.protocolIEs[i].value_.E_RABToBeSetupListCtxtSUReq;
+ for (j := 0; j < lengthof(rab_req); j := j+1) {
+ var E_RABToBeSetupItemCtxtSUReq it := rab_req[j].value_.E_RABToBeSetupItemCtxtSUReq;
+ return it.nAS_PDU;
+ }
+ }
+ }
+ return omit;
+ }
}
}
return omit;
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35376?usp=email
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: Ibff5a38b92deafa8d104801f107ca1b8b82bbce0
Gerrit-Change-Number: 35376
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged