libvlr: fix is_ciph_required(): always send SecModeCmd for UTRAN

Ciphering is optional in both GERAN and UTRAN, however for the later
it's *required* to enable integrity protection for the signalling.
Thus we must always send Security Mode Command in UTRAN, even in
case if ciphering is disabled (UEA0) in the configuration.

The actual decision whether to send CMC/SMC or not is taken in:

  * vlr_access_req_fsm.c / _proc_arq_vlr_node2(), and
  * vlr_lu_fsm.c / vlr_loc_upd_post_auth().

depending on the value returned by is_ciph_required().  Let's
rename this function to is_cmc_smc_required() and ensure that
it always returns true in UTRAN.

This change fixes the Iu test cases in ttcn3-msc-test.

Change-Id: I6205f13453eff7afbf25e013d72ae98a78fcd31b
Fixes: OS#5333
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index 41e5608..4f603b3 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -702,10 +702,12 @@
 		(lfp->ciphering_required && !auth_try_reuse_tuple(lfp->vsub, lfp->key_seq));
 }
 
-/* Determine if ciphering is required */
-static bool is_ciph_required(struct lu_fsm_priv *lfp)
+/* Determine if sending of CMC/SMC is required */
+static bool is_cmc_smc_required(struct lu_fsm_priv *lfp)
 {
-	return lfp->ciphering_required;
+	/* UTRAN: always send SecModeCmd, even if ciphering is not required.
+	 * GERAN: avoid sending CiphModeCmd if ciphering is not required. */
+	return lfp->is_utran || lfp->ciphering_required;
 }
 
 /* Determine if a HLR Update is required */
@@ -853,7 +855,7 @@
 
 	OSMO_ASSERT(vsub);
 
-	if (!is_ciph_required(lfp)) {
+	if (!is_cmc_smc_required(lfp)) {
 		vlr_loc_upd_post_ciph(fi);
 		return;
 	}