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
This commit is contained in:
Neels Hofmeyr 2018-03-23 01:47:37 +01:00 committed by Harald Welte
parent c44fc23fee
commit 8b8cd93817
2 changed files with 3 additions and 6 deletions

View File

@ -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;

View File

@ -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);
}