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_access_req_fsm.c b/src/libvlr/vlr_access_req_fsm.c
index ce7c2af..af7ec74 100644
--- a/src/libvlr/vlr_access_req_fsm.c
+++ b/src/libvlr/vlr_access_req_fsm.c
@@ -67,7 +67,12 @@
 	uint32_t tmsi;
 	struct osmo_location_area_id 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;
@@ -635,12 +640,16 @@
 		 const struct osmo_location_area_id *lai,
 		 bool authentication_required,
 		 bool is_ciphering_to_be_attempted,
+		 bool is_ciphering_required,
 		 uint8_t key_seq,
 		 bool is_r99, bool is_utran)
 {
 	struct osmo_fsm_inst *fi;
 	struct proc_arq_priv *par;
 
+	if (is_ciphering_required)
+		OSMO_ASSERT(is_ciphering_to_be_attempted);
+
 	fi = osmo_fsm_inst_alloc_child(&proc_arq_vlr_fsm, parent,
 				       parent_event_failure);
 	if (!fi)
@@ -658,6 +667,7 @@
 	par->parent_event_data = parent_event_data;
 	par->authentication_required = authentication_required;
 	par->is_ciphering_to_be_attempted = is_ciphering_to_be_attempted;
+	par->is_ciphering_required = is_ciphering_required;
 	par->key_seq = key_seq;
 	par->is_r99 = is_r99;
 	par->is_utran = is_utran;