move f_gprs_tlli_{type,random} to Osmocom_Gb_Types

Those functions don't depend on any L3 specific data structurs, and
it is not a good idea to burden every user with having to impot all
of a 2G/3G Layer3 just to generate some hexstring identifiers.

Change-Id: I6fc41ed94e97e0ec44dc4ea56d110bdd9ac77a72
This commit is contained in:
Harald Welte 2020-11-12 17:27:58 +01:00
parent 69b3a4839f
commit 8f66af1665
2 changed files with 40 additions and 39 deletions

View File

@ -47,45 +47,6 @@ function f_gen_auth_vec_3g() return AuthVector {
return vec;
}
/* 3GPP TS 23.003 2.6 */
type enumerated TlliType {
TLLI_LOCAL,
TLLI_FOREIGN,
TLLI_RANDOM,
TLLI_AUXILIARY,
TLLI_RESERVED,
TLLI_G_RNTI,
TLLI_RAND_G_RNTI
}
/* 3GPP TS 23.003 2.6 */
function f_gprs_tlli_type(OCT4 tlli) return TlliType {
var bitstring tllib := oct2bit(tlli);
if (substr(tllib, 0, 2) == '11'B) {
return TLLI_LOCAL;
} else if (substr(tllib, 0, 2) == '10'B) {
return TLLI_FOREIGN;
} else if (substr(tllib, 0, 5) == '01111'B) {
return TLLI_RANDOM;
} else if (substr(tllib, 0, 4) == '0110'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 3) == '010'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 4) == '0000'B) {
return TLLI_G_RNTI;
} else if (substr(tllib, 0, 4) == '0001'B) {
return TLLI_RAND_G_RNTI;
} else {
setverdict(fail, "Unknonw TLLI Type ", tllib);
mtc.stop;
}
}
function f_gprs_tlli_random() return OCT4 {
var OCT4 tlli := f_rnd_octstring(4);
return tlli or4b 'c0000000'O;
}
function f_RAI(HEX0_3n mcc, HEX0_3n mnc, OCT2 lac, OCT1 rac) return RoutingAreaIdentificationV {
if (lengthof(mnc) == 2) {
mnc := mnc & 'F'H;

View File

@ -1785,5 +1785,45 @@ function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {
return oct2int(valueof(bvci_raw.unstructured_value));
}
/* 3GPP TS 23.003 2.6 */
type enumerated TlliType {
TLLI_LOCAL,
TLLI_FOREIGN,
TLLI_RANDOM,
TLLI_AUXILIARY,
TLLI_RESERVED,
TLLI_G_RNTI,
TLLI_RAND_G_RNTI
}
/* 3GPP TS 23.003 2.6 */
function f_gprs_tlli_type(OCT4 tlli) return TlliType {
var bitstring tllib := oct2bit(tlli);
if (substr(tllib, 0, 2) == '11'B) {
return TLLI_LOCAL;
} else if (substr(tllib, 0, 2) == '10'B) {
return TLLI_FOREIGN;
} else if (substr(tllib, 0, 5) == '01111'B) {
return TLLI_RANDOM;
} else if (substr(tllib, 0, 4) == '0110'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 3) == '010'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 4) == '0000'B) {
return TLLI_G_RNTI;
} else if (substr(tllib, 0, 4) == '0001'B) {
return TLLI_RAND_G_RNTI;
} else {
setverdict(fail, "Unknonw TLLI Type ", tllib);
mtc.stop;
}
}
function f_gprs_tlli_random() return OCT4 {
var OCT4 tlli := f_rnd_octstring(4);
return tlli or4b 'c0000000'O;
}
} with { encode "RAW" };