aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-03-23 01:47:37 +0100
committerHarald Welte <laforge@gnumonks.org>2018-03-23 12:47:05 +0000
commit8b8cd938173b2c1ef1f836a613691bd9e6789b76 (patch)
tree486bbce79b9c15b690862504bc5893d0e2524e1d
parentc44fc23feecc58ef3041f317dee0e5297e3c4571 (diff)
fix gsm0808_enc_cell_id_list2 for leading-zero MNC
Use non-deprecated API to decode encode in gsm0808_enc_cell_id_list2(). Adjust gsm0808_test.c to now expect the correct results instead of previous failure. Change-Id: I1ce78883995e0d484368046b69db5afb2b4adc97
-rw-r--r--src/gsm/gsm0808_utils.c4
-rw-r--r--tests/gsm0808/gsm0808_test.c5
2 files changed, 3 insertions, 6 deletions
diff --git a/src/gsm/gsm0808_utils.c b/src/gsm/gsm0808_utils.c
index 776f091d..e4872b87 100644
--- a/src/gsm/gsm0808_utils.c
+++ b/src/gsm/gsm0808_utils.c
@@ -595,7 +595,7 @@ uint8_t gsm0808_enc_cell_id_list2(struct msgb *msg,
for (i = 0; i < cil->id_list_len; i++) {
const struct osmo_cell_global_id *id = &cil->id_list[i].global;
struct gsm48_loc_area_id lai;
- gsm48_generate_lai(&lai, id->lai.plmn.mcc, id->lai.plmn.mnc, id->lai.lac);
+ gsm48_generate_lai2(&lai, &id->lai);
memcpy(msgb_put(msg, sizeof(lai)), &lai, sizeof(lai));
msgb_put_u16(msg, id->cell_identity);
}
@@ -615,7 +615,7 @@ uint8_t gsm0808_enc_cell_id_list2(struct msgb *msg,
for (i = 0; i < cil->id_list_len; i++) {
const struct osmo_location_area_id *id = &cil->id_list[i].lai_and_lac;
struct gsm48_loc_area_id lai;
- gsm48_generate_lai(&lai, id->plmn.mcc, id->plmn.mnc, id->lac);
+ gsm48_generate_lai2(&lai, id);
memcpy(msgb_put(msg, sizeof(lai)), &lai, sizeof(lai));
}
break;
diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c
index f6a7bc43..4bf61e78 100644
--- a/tests/gsm0808/gsm0808_test.c
+++ b/tests/gsm0808/gsm0808_test.c
@@ -1003,8 +1003,7 @@ static void test_gsm0808_enc_dec_cell_id_list_multi_global()
uint8_t cil_enc_expected[] = { GSM0808_IE_CELL_IDENTIFIER_LIST, 0x16, 0x00,
0x21, 0x63, 0x54, 0x23, 0x42, 0x00, 0x1,
0x21, 0xf4, 0x75, 0x24, 0x43, 0x00, 0x2,
- 0x21, 0xf5, 0x70, 0x25, 0x44, 0x00, 0x77
- /* ERROR! This ^^^^^^^^ should be 0x75, 0x00, i.e. a 3-digit MNC with leading zeros! */
+ 0x21, 0x75, 0x00, 0x25, 0x44, 0x00, 0x77
};
uint8_t rc_enc;
int rc_dec, i;
@@ -1057,9 +1056,7 @@ static void test_gsm0808_enc_dec_cell_id_list_multi_global()
struct osmo_cell_global_id *dec_id;
enc_id = &enc_cil.id_list[i].global;
dec_id = &dec_cil.id_list[i].global;
- /* ERROR: the decoded PLMN will mismatch, because the leading zero was not preserved:
OSMO_ASSERT(osmo_plmn_cmp(&enc_id->lai.plmn, &dec_id->lai.plmn) == 0);
- */
OSMO_ASSERT(enc_id->lai.lac == dec_id->lai.lac);
OSMO_ASSERT(enc_id->cell_identity == dec_id->cell_identity);
}