aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/msc_a.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmsc/msc_a.c')
-rw-r--r--src/libmsc/msc_a.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c
index b41457458..344b442cb 100644
--- a/src/libmsc/msc_a.c
+++ b/src/libmsc/msc_a.c
@@ -1407,6 +1407,18 @@ int msc_a_ran_dec_from_msc_i(struct msc_a *msc_a, struct msc_a_ran_dec_data *d)
};
vlr_subscr_rx_ciph_res(vsub, VLR_CIPH_COMPL);
rc = 0;
+
+ /* Evaluate enclosed L3 message, typically Identity Response (IMEISV) */
+ if (msg->cipher_mode_complete.l3_msg) {
+ unsigned char *data = (unsigned char*)(msg->cipher_mode_complete.l3_msg->val);
+ uint16_t len = msg->cipher_mode_complete.l3_msg->len;
+ struct msgb *dtap = msgb_alloc(len, "DTAP from Cipher Mode Complete");
+ unsigned char *pos = msgb_put(dtap, len);
+ memcpy(pos, data, len);
+ dtap->l3h = pos;
+ rc = msc_a_up_l3(msc_a, dtap);
+ msgb_free(dtap);
+ }
break;
case RAN_MSG_CIPHER_MODE_REJECT: