laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-bsc/+/27250 )
Change subject: cosmetics around select_best_cipher()
......................................................................
cosmetics around select_best_cipher()
Improve the function doc. Remove a comment at a caller, because that
information is what the function doc is for.
Rename the array to codec_by_strength, because it is not the codec
strength but the codec number listed in the array.
Related: SYS#5839
Change-Id: Iaed6b97c31e4ccb1f28ca7e64596d5e20563b392
---
M src/osmo-bsc/osmo_bsc_bssap.c
1 file changed, 5 insertions(+), 7 deletions(-)
Approvals:
laforge: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c
index 8acf293..cab78ed 100644
--- a/src/osmo-bsc/osmo_bsc_bssap.c
+++ b/src/osmo-bsc/osmo_bsc_bssap.c
@@ -393,17 +393,18 @@
return 0;
}
-/* select the best cipher permitted by the intersection of both masks */
+/* Select the best cipher permitted by the intersection of both masks. Return as the n in
A5/n, or -1 if the
+ * intersection is empty. */
int select_best_cipher(uint8_t msc_mask, uint8_t bsc_mask)
{
/* A5/7 ... A5/3: We assume higher is better,
* but: A5/1 is better than A5/2, which is better than A5/0 */
- const uint8_t codec_strength[8] = { 7, 6, 5, 4, 3, 1, 2, 0 };
+ const uint8_t codec_by_strength[8] = { 7, 6, 5, 4, 3, 1, 2, 0 };
uint8_t intersection = msc_mask & bsc_mask;
int i;
- for (i = 0; i < ARRAY_SIZE(codec_strength); i++) {
- uint8_t codec = codec_strength[i];
+ for (i = 0; i < ARRAY_SIZE(codec_by_strength); i++) {
+ uint8_t codec = codec_by_strength[i];
if (intersection & (1 << codec))
return codec;
}
@@ -509,9 +510,6 @@
* a5_encryption == 2 --> 0x04 ... */
enc_bits_msc = data[0];
- /* The bit-mask of permitted ciphers from the MSC (sent in ASSIGNMENT COMMAND) is
intersected
- * with the vty-configured mask a the BSC. Finally, the best (highest) possible cipher
is
- * chosen. */
chosen_cipher = select_best_cipher(enc_bits_msc, bsc_gsmnet->a5_encryption_mask);
if (chosen_cipher < 0) {
LOGP(DMSC, LOGL_ERROR, "Reject: no overlapping A5 ciphers between BSC (0x%02x)
"
--
To view, visit
https://gerrit.osmocom.org/c/osmo-bsc/+/27250
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Iaed6b97c31e4ccb1f28ca7e64596d5e20563b392
Gerrit-Change-Number: 27250
Gerrit-PatchSet: 4
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged