Ensure BcdMccMnc is encoded as 24.008 10.5.5.15

PCU is using BcdMccMnc as it's encoded as 24.008.
But SGSN code is using it as it would be byte by byte
sorted.

Fixes: OS#3878
Change-Id: Ie8f67f16f18e4c5090bc5a4c46a866a7e7e00206
This commit is contained in:
Alexander Couzens 2019-04-11 19:18:35 +02:00 committed by Harald Welte
parent 1623774b68
commit c7dddbd7d0
3 changed files with 9 additions and 7 deletions

View File

@ -106,9 +106,9 @@ function f_RAI_to_plmn_hexstr(RoutingAreaIdentificationV rai) return hexstring {
rai.mccDigit1
& rai.mccDigit2
& rai.mccDigit3
& rai.mncDigit3
& rai.mncDigit1
& rai.mncDigit2
& rai.mncDigit3;
& rai.mncDigit2;
return plmn;
}

View File

@ -868,8 +868,8 @@ octetstring sdu) := {
ret.mccDigit2 := cid.ra_id.lai.mcc_mnc[1];
ret.mccDigit3 := cid.ra_id.lai.mcc_mnc[2];
ret.mncDigit3 := cid.ra_id.lai.mcc_mnc[3];
ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5];
ret.mncDigit1 := cid.ra_id.lai.mcc_mnc[4];
ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5];
}
if (isvalue(cid.ra_id.lai.lac)) {
ret.lac := f_oct_or_wc(cid.ra_id.lai.lac, 2);

View File

@ -137,15 +137,16 @@ type record BSSGP_ConnHdlrPars {
};
private function f_cellid_to_RAI(in BssgpCellId cell_id) return RoutingAreaIdentificationV {
/* mcc_mnc is encoded as of 24.008 10.5.5.15 */
var BcdMccMnc mcc_mnc := cell_id.ra_id.lai.mcc_mnc;
var RoutingAreaIdentificationV ret := {
mccDigit1 := mcc_mnc[0],
mccDigit2 := mcc_mnc[1],
mccDigit3 := mcc_mnc[2],
mncDigit3 := mcc_mnc[5],
mncDigit1 := mcc_mnc[3],
mncDigit2 := mcc_mnc[4],
mncDigit3 := mcc_mnc[3],
mncDigit1 := mcc_mnc[4],
mncDigit2 := mcc_mnc[5],
lac := int2oct(cell_id.ra_id.lai.lac, 16),
rac := int2oct(cell_id.ra_id.rac, 8)
}
@ -225,7 +226,8 @@ private function f_vty_enable_echo_interval(boolean enable) runs on test_CT {
}
function f_init(BcdMccMnc mcc_mnc := '26242F'H) runs on test_CT {
/* mcc_mnc is 24.008 10.5.5.15 encoded. 262 42 */
function f_init(BcdMccMnc mcc_mnc := '262F42'H) runs on test_CT {
if (g_initialized == true) {
return;
}