aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/rsl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/rsl.c')
-rw-r--r--src/common/rsl.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/common/rsl.c b/src/common/rsl.c
index b96182ff..410b38a7 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -1090,9 +1090,13 @@ static int rsl_rx_chan_activ(struct msgb *msg)
memset(&lchan->encr, 0, sizeof(lchan->encr));
/* 9.3.9 Handover Reference */
- if ((type == RSL_ACT_INTER_ASYNC ||
- type == RSL_ACT_INTER_SYNC) &&
- TLVP_PRES_LEN(&tp, RSL_IE_HANDO_REF, 1)) {
+ if ((type == RSL_ACT_INTER_ASYNC || type == RSL_ACT_INTER_SYNC)) {
+ /* According to 8.4.1, the Handover Reference element is included
+ * if activation type is handover. Assuming it's mandatory. */
+ if (!TLVP_PRES_LEN(&tp, RSL_IE_HANDO_REF, 1)) {
+ LOGPLCHAN(lchan, DRSL, LOGL_NOTICE, "Missing Handover Reference IE\n");
+ return rsl_tx_chan_act_nack(lchan, RSL_ERR_MAND_IE_ERROR);
+ }
lchan->ho.active = HANDOVER_ENABLED;
lchan->ho.ref = *TLVP_VAL(&tp, RSL_IE_HANDO_REF);
}