msc_a,vlr: add is_ciphering_required (accurately named)

For establishing Layer 3, pass a flag from msc_a to VLR that indicates
to fail if encryption is not possible.

An earlier patch [1] renamed a previously existing flag
require_ciphering to is_ciphering_to_be_attempted, because the naming
was not accurate. This new flag now indicates what its name suggests.

This new flag is needed for upcoming patch [2] to distinguish between
optional and mandatory encryption.

[1] Ia55085e3b36feb275bcf92fc91a4be7d1c24a6b9
[2] I5feda196fa481dd8a46b0e4721c64b7c6600f0d1

Related: OS#4830
Change-Id: I52090c5f5db997030da7c2ed9beca9c51f55f4cf
diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c
index e8ceefd..22875cf 100644
--- a/src/libvlr/vlr_lu_fsm.c
+++ b/src/libvlr/vlr_lu_fsm.c
@@ -676,7 +676,12 @@
 	struct osmo_location_area_id old_lai;
 	struct osmo_location_area_id new_lai;
 	bool authentication_required;
+	/* is_ciphering_to_be_attempted: true when any A5/n > 0 are enabled. Ciphering is allowed, always attempt to get Auth Info from
+	 * the HLR. */
 	bool is_ciphering_to_be_attempted;
+	/* is_ciphering_required: true when A5/0 is disabled. If we cannot get Auth Info from the HLR, reject the
+	 * subscriber. */
+	bool is_ciphering_required;
 	uint8_t key_seq;
 	bool is_r99;
 	bool is_utran;
@@ -1476,6 +1481,7 @@
 	       const struct osmo_location_area_id *new_lai,
 	       bool authentication_required,
 	       bool is_ciphering_to_be_attempted,
+	       bool is_ciphering_required,
 	       uint8_t key_seq,
 	       bool is_r99, bool is_utran,
 	       bool assign_tmsi)
@@ -1483,6 +1489,9 @@
 	struct osmo_fsm_inst *fi;
 	struct lu_fsm_priv *lfp;
 
+	if (is_ciphering_required)
+		OSMO_ASSERT(is_ciphering_to_be_attempted);
+
 	fi = osmo_fsm_inst_alloc_child(&vlr_lu_fsm, parent, parent_event_failure);
 	if (!fi)
 		return NULL;
@@ -1500,6 +1509,7 @@
 	lfp->parent_event_data = parent_event_data;
 	lfp->authentication_required = authentication_required;
 	lfp->is_ciphering_to_be_attempted = is_ciphering_to_be_attempted;
+	lfp->is_ciphering_required = is_ciphering_required;
 	lfp->key_seq = key_seq;
 	lfp->is_r99 = is_r99;
 	lfp->is_utran = is_utran;