aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/lte-rrc
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2014-01-27 12:06:46 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2014-01-27 12:06:46 +0000
commitf903141d65413c7f47303ee5ca5b5fe780f2fca6 (patch)
tree2a1fdbd1dc0f9d3c074899b719a67e0c1b71c6e2 /asn1/lte-rrc
parent3abb51aa67e82777159283f62cbdfad0eaae56ce (diff)
Send news of SecurityModeFailure to PDCP dissector, which will attempt to roll back to previous setting
svn path=/trunk/; revision=54978
Diffstat (limited to 'asn1/lte-rrc')
-rw-r--r--asn1/lte-rrc/lte-rrc.cnf17
1 files changed, 16 insertions, 1 deletions
diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf
index 65240555ba..12ab434bce 100644
--- a/asn1/lte-rrc/lte-rrc.cnf
+++ b/asn1/lte-rrc/lte-rrc.cnf
@@ -1092,9 +1092,19 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(&lte_rrc_duration_val)
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete");
-#.FN_HDR SecurityModeFailure
+#.FN_BODY SecurityModeFailure
+ mac_lte_info *p_mac_lte_info;
+%(DEFAULT_BODY)s
+ /* Look for UE identifier */
+ p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
+
+ if (p_mac_lte_info != NULL) {
+ /* Inform PDCP that the UE failed to execute the securityModeCommand */
+ set_pdcp_lte_security_algorithms_failed(p_mac_lte_info->ueid);
+ }
col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
+
#.FN_HDR UECapabilityInformation
@@ -1510,6 +1520,7 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(&lte_rrc_duration_val)
/* We do release the configuration here instead of RRC Connection Release message */
/* as the UE could have locally dropped the previous RRC Connection */
set_mac_lte_drx_config_release(p_mac_lte_info->ueid, actx->pinfo);
+ /* TODO: also release PDCP security config here */
}
%(DEFAULT_BODY)s
@@ -1520,6 +1531,10 @@ SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(&lte_rrc_duration_val)
%(DEFAULT_BODY)s
p_security_algorithms = private_data_pdcp_security_algorithms(actx);
p_security_algorithms->configuration_frame = actx->pinfo->fd->num;
+ p_security_algorithms->previous_configuration_frame = 0;
+ p_security_algorithms->previous_integrity = eia0;
+ p_security_algorithms->previous_ciphering = eea0;
+
/* Look for UE identifier */
p_pdcp_lte_info = (pdcp_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_pdcp_lte, 0);
if (p_pdcp_lte_info != NULL) {