aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/gprs/gprs_bssgp.h31
-rw-r--r--include/osmocom/gprs/gprs_bssgp_rim.h30
-rw-r--r--src/gb/gprs_bssgp.c91
-rw-r--r--src/gb/gprs_bssgp_rim.c91
-rw-r--r--tests/gb/gprs_bssgp_rim_test.c135
-rw-r--r--tests/gb/gprs_bssgp_rim_test.ok56
-rw-r--r--tests/gb/gprs_bssgp_test.c133
-rw-r--r--tests/gb/gprs_bssgp_test.ok56
8 files changed, 312 insertions, 311 deletions
diff --git a/include/osmocom/gprs/gprs_bssgp.h b/include/osmocom/gprs/gprs_bssgp.h
index d228c53c..92556615 100644
--- a/include/osmocom/gprs/gprs_bssgp.h
+++ b/include/osmocom/gprs/gprs_bssgp.h
@@ -178,37 +178,6 @@ uint16_t bssgp_parse_cell_id(struct gprs_ra_id *raid, const uint8_t *buf);
int bssgp_create_cell_id(uint8_t *buf, const struct gprs_ra_id *raid,
uint16_t cid);
-enum bssgp_rim_routing_info_discr {
- BSSGP_RIM_ROUTING_INFO_GERAN,
- BSSGP_RIM_ROUTING_INFO_UTRAN,
- BSSGP_RIM_ROUTING_INFO_EUTRAN,
-};
-
-/*! BSSGP RIM Routing information, see also 3GPP TS 48.018, section 11.3.70 */
-struct bssgp_rim_routing_info {
- enum bssgp_rim_routing_info_discr discr;
- union {
- struct {
- struct gprs_ra_id raid;
- uint16_t cid;
- } geran;
- struct {
- struct gprs_ra_id raid;
- uint16_t rncid;
- } utran;
- struct {
- struct osmo_eutran_tai tai;
- /* See also 3GPP TS 36.413 9.2.1.37 and 3GPP TS 36.401 */
- uint8_t global_enb_id[8];
- uint8_t global_enb_id_len;
- } eutran;
- };
-};
-
-int bssgp_parse_rim_ri(struct bssgp_rim_routing_info *ri, const uint8_t *buf,
- unsigned int len);
-int bssgp_create_rim_ri(uint8_t *buf, const struct bssgp_rim_routing_info *ri);
-
/* Wrapper around TLV parser to parse BSSGP IEs */
static inline int bssgp_tlv_parse(struct tlv_parsed *tp, const uint8_t *buf, int len)
{
diff --git a/include/osmocom/gprs/gprs_bssgp_rim.h b/include/osmocom/gprs/gprs_bssgp_rim.h
index 0612a910..7f3a0e43 100644
--- a/include/osmocom/gprs/gprs_bssgp_rim.h
+++ b/include/osmocom/gprs/gprs_bssgp_rim.h
@@ -27,6 +27,36 @@
#include <osmocom/gprs/protocol/gsm_08_18.h>
+enum bssgp_rim_routing_info_discr {
+ BSSGP_RIM_ROUTING_INFO_GERAN,
+ BSSGP_RIM_ROUTING_INFO_UTRAN,
+ BSSGP_RIM_ROUTING_INFO_EUTRAN,
+};
+
+/*! BSSGP RIM Routing information, see also 3GPP TS 48.018, section 11.3.70 */
+struct bssgp_rim_routing_info {
+ enum bssgp_rim_routing_info_discr discr;
+ union {
+ struct {
+ struct gprs_ra_id raid;
+ uint16_t cid;
+ } geran;
+ struct {
+ struct gprs_ra_id raid;
+ uint16_t rncid;
+ } utran;
+ struct {
+ struct osmo_eutran_tai tai;
+ /* See also 3GPP TS 36.413 9.2.1.37 and 3GPP TS 36.401 */
+ uint8_t global_enb_id[8];
+ uint8_t global_enb_id_len;
+ } eutran;
+ };
+};
+
+int bssgp_parse_rim_ri(struct bssgp_rim_routing_info *ri, const uint8_t *buf, unsigned int len);
+int bssgp_create_rim_ri(uint8_t *buf, const struct bssgp_rim_routing_info *ri);
+
/* 3GPP TS 48.018, table 11.3.63.1.1: RAN-INFORMATION-REQUEST Application Container coding for NACC */
struct bssgp_ran_inf_req_app_cont_nacc {
struct osmo_cell_global_id_ps reprt_cell;
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index 530c7029..45514275 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -326,97 +326,6 @@ int bssgp_create_cell_id(uint8_t *buf, const struct gprs_ra_id *raid,
return 8;
}
-/*! Parse a RIM Routing information IE (3GPP TS 48.018, chapter 11.3.70).
- * \param[out] ri user provided memory to store the parsed results.
- * \param[in] buf input buffer of the value part of the IE.
- * \returns length of parsed octets, -EINVAL on error. */
-int bssgp_parse_rim_ri(struct bssgp_rim_routing_info *ri, const uint8_t *buf,
- unsigned int len)
-{
- struct gprs_ra_id raid_temp;
-
- memset(ri, 0, sizeof(*ri));
- if (len < 2)
- return -EINVAL;
-
- ri->discr = buf[0] & 0x0f;
-
- switch (ri->discr) {
- case BSSGP_RIM_ROUTING_INFO_GERAN:
- if (len < 9)
- return -EINVAL;
- ri->geran.cid = bssgp_parse_cell_id(&ri->geran.raid, buf + 1);
- return 9;
- case BSSGP_RIM_ROUTING_INFO_UTRAN:
- if (len < 9)
- return -EINVAL;
- gsm48_parse_ra(&ri->utran.raid, buf + 1);
- ri->utran.rncid = osmo_load16be(buf + 7);
- return 9;
- case BSSGP_RIM_ROUTING_INFO_EUTRAN:
- if (len < 7 || len > 14)
- return -EINVAL;
- /* Note: 3GPP TS 24.301 Figure 9.9.3.32.1 and 3GPP TS 24.008
- * Figure 10.5.130 specify MCC/MNC encoding in the same way,
- * so we can re-use gsm48_parse_ra() for that. */
- gsm48_parse_ra(&raid_temp, buf + 1);
- ri->eutran.tai.mcc = raid_temp.mcc;
- ri->eutran.tai.mnc = raid_temp.mnc;
- ri->eutran.tai.mnc_3_digits = raid_temp.mnc_3_digits;
- ri->eutran.tai.tac = osmo_load16be(buf + 4);
- memcpy(ri->eutran.global_enb_id, buf + 6, len - 6);
- ri->eutran.global_enb_id_len = len - 6;
- return len;
- default:
- return -EINVAL;
- }
-}
-
-/*! Encode a RIM Routing information IE (3GPP TS 48.018, chapter 11.3.70).
- * \param[out] buf user provided memory (at least 14 byte) for the generated value part of the IE.
- * \param[in] ri user provided input data struct.
- * \returns length of encoded octets, -EINVAL on error. */
-int bssgp_create_rim_ri(uint8_t *buf, const struct bssgp_rim_routing_info *ri)
-{
- int rc;
- struct gprs_ra_id raid_temp;
-
- buf[0] = ri->discr & 0x0f;
- buf++;
-
- switch (ri->discr) {
- case BSSGP_RIM_ROUTING_INFO_GERAN:
- rc = bssgp_create_cell_id(buf, &ri->geran.raid, ri->geran.cid);
- if (rc < 0)
- return -EINVAL;
- return rc + 1;
- case BSSGP_RIM_ROUTING_INFO_UTRAN:
- gsm48_encode_ra((struct gsm48_ra_id *)buf, &ri->utran.raid);
- osmo_store16be(ri->utran.rncid, buf + 6);
- return 9;
- case BSSGP_RIM_ROUTING_INFO_EUTRAN:
- /* Note: 3GPP TS 24.301 Figure 9.9.3.32.1 and 3GPP TS 24.008
- * Figure 10.5.130 specify MCC/MNC encoding in the same way,
- * so we can re-use gsm48_encode_ra() for that. */
- raid_temp = (struct gprs_ra_id) {
- .mcc = ri->eutran.tai.mcc,
- .mnc = ri->eutran.tai.mnc,
- .mnc_3_digits = ri->eutran.tai.mnc_3_digits,
- /* TAC is encoded in the same way as LAC */
- .lac = ri->eutran.tai.tac,
- };
-
- gsm48_encode_ra((struct gsm48_ra_id *)buf, &raid_temp);
- OSMO_ASSERT(ri->eutran.global_enb_id_len <=
- sizeof(ri->eutran.global_enb_id));
- memcpy(buf + 5, ri->eutran.global_enb_id,
- ri->eutran.global_enb_id_len);
- return ri->eutran.global_enb_id_len + 6;
- default:
- return -EINVAL;
- }
-}
-
/* Chapter 8.4 BVC-Reset Procedure */
static int bssgp_rx_bvc_reset(struct msgb *msg, struct tlv_parsed *tp,
uint16_t ns_bvci)
diff --git a/src/gb/gprs_bssgp_rim.c b/src/gb/gprs_bssgp_rim.c
index 3ac405eb..0dc6d215 100644
--- a/src/gb/gprs_bssgp_rim.c
+++ b/src/gb/gprs_bssgp_rim.c
@@ -41,6 +41,97 @@
* (3GPP TS 48.018, sub-clause 11.3.9) but without IE and length octets. */
#define REP_CELL_ID_LEN 8
+/*! Parse a RIM Routing information IE (3GPP TS 48.018, chapter 11.3.70).
+ * \param[out] ri user provided memory to store the parsed results.
+ * \param[in] buf input buffer of the value part of the IE.
+ * \returns length of parsed octets, -EINVAL on error. */
+int bssgp_parse_rim_ri(struct bssgp_rim_routing_info *ri, const uint8_t *buf,
+ unsigned int len)
+{
+ struct gprs_ra_id raid_temp;
+
+ memset(ri, 0, sizeof(*ri));
+ if (len < 2)
+ return -EINVAL;
+
+ ri->discr = buf[0] & 0x0f;
+ buf++;
+
+ switch (ri->discr) {
+ case BSSGP_RIM_ROUTING_INFO_GERAN:
+ if (len < 9)
+ return -EINVAL;
+ ri->geran.cid = bssgp_parse_cell_id(&ri->geran.raid, buf);
+ return 9;
+ case BSSGP_RIM_ROUTING_INFO_UTRAN:
+ if (len < 9)
+ return -EINVAL;
+ gsm48_parse_ra(&ri->utran.raid, buf);
+ ri->utran.rncid = osmo_load16be(buf + 6);
+ return 9;
+ case BSSGP_RIM_ROUTING_INFO_EUTRAN:
+ if (len < 7 || len > 14)
+ return -EINVAL;
+ /* Note: 3GPP TS 24.301 Figure 9.9.3.32.1 and 3GPP TS 24.008
+ * Figure 10.5.130 specify MCC/MNC encoding in the same way,
+ * so we can re-use gsm48_parse_ra() for that. */
+ gsm48_parse_ra(&raid_temp, buf);
+ ri->eutran.tai.mcc = raid_temp.mcc;
+ ri->eutran.tai.mnc = raid_temp.mnc;
+ ri->eutran.tai.mnc_3_digits = raid_temp.mnc_3_digits;
+ ri->eutran.tai.tac = osmo_load16be(buf + 3);
+ memcpy(ri->eutran.global_enb_id, buf + 5, len - 6);
+ ri->eutran.global_enb_id_len = len - 6;
+ return len;
+ default:
+ return -EINVAL;
+ }
+}
+
+/*! Encode a RIM Routing information IE (3GPP TS 48.018, chapter 11.3.70).
+ * \param[out] buf user provided memory (at least 14 byte) for the generated value part of the IE.
+ * \param[in] ri user provided input data struct.
+ * \returns length of encoded octets, -EINVAL on error. */
+int bssgp_create_rim_ri(uint8_t *buf, const struct bssgp_rim_routing_info *ri)
+{
+ int rc;
+ struct gprs_ra_id raid_temp;
+
+ buf[0] = ri->discr & 0x0f;
+ buf++;
+
+ switch (ri->discr) {
+ case BSSGP_RIM_ROUTING_INFO_GERAN:
+ rc = bssgp_create_cell_id(buf, &ri->geran.raid, ri->geran.cid);
+ if (rc < 0)
+ return -EINVAL;
+ return rc + 1;
+ case BSSGP_RIM_ROUTING_INFO_UTRAN:
+ gsm48_encode_ra((struct gsm48_ra_id *)buf, &ri->utran.raid);
+ osmo_store16be(ri->utran.rncid, buf + 6);
+ return 9;
+ case BSSGP_RIM_ROUTING_INFO_EUTRAN:
+ /* Note: 3GPP TS 24.301 Figure 9.9.3.32.1 and 3GPP TS 24.008
+ * Figure 10.5.130 specify MCC/MNC encoding in the same way,
+ * so we can re-use gsm48_encode_ra() for that. */
+ raid_temp = (struct gprs_ra_id) {
+ .mcc = ri->eutran.tai.mcc,
+ .mnc = ri->eutran.tai.mnc,
+ .mnc_3_digits = ri->eutran.tai.mnc_3_digits,
+ };
+
+ gsm48_encode_ra((struct gsm48_ra_id *)buf, &raid_temp);
+ osmo_store16be(ri->eutran.tai.tac, buf + 3);
+ OSMO_ASSERT(ri->eutran.global_enb_id_len <=
+ sizeof(ri->eutran.global_enb_id));
+ memcpy(buf + 5, ri->eutran.global_enb_id,
+ ri->eutran.global_enb_id_len);
+ return ri->eutran.global_enb_id_len + 6;
+ default:
+ return -EINVAL;
+ }
+}
+
/*! Decode a RAN Information Request Application Container for NACC (3GPP TS 48.018, section 11.3.63.1.1).
* \param[out] user provided memory for decoded data struct.
* \param[in] buf user provided memory with the encoded value data of the IE.
diff --git a/tests/gb/gprs_bssgp_rim_test.c b/tests/gb/gprs_bssgp_rim_test.c
index 8c6a00d0..d08421b1 100644
--- a/tests/gb/gprs_bssgp_rim_test.c
+++ b/tests/gb/gprs_bssgp_rim_test.c
@@ -24,6 +24,137 @@
#include <string.h>
#include <unistd.h>
+void dump_rim_ri(struct bssgp_rim_routing_info *ri)
+{
+ switch (ri->discr) {
+ case BSSGP_RIM_ROUTING_INFO_GERAN:
+ printf("GERAN cell identifier\n");
+ printf(" * mcc: %u\n", ri->geran.raid.mcc);
+ printf(" mnc: %u\n", ri->geran.raid.mnc);
+ printf(" mnc 3 digits: %u\n", ri->geran.raid.mnc_3_digits);
+ printf(" lac: %u\n", ri->geran.raid.lac);
+ printf(" rac: %u\n", ri->geran.raid.rac);
+ printf(" * cell id: %04x\n", ri->geran.cid);
+ break;
+ case BSSGP_RIM_ROUTING_INFO_UTRAN:
+ printf("UTRAN RNC identifier\n");
+ printf(" * mcc: %u\n", ri->utran.raid.mcc);
+ printf(" mnc: %u\n", ri->utran.raid.mnc);
+ printf(" mnc 3 digits: %u\n", ri->utran.raid.mnc_3_digits);
+ printf(" lac: %u\n", ri->utran.raid.lac);
+ printf(" rac: %u\n", ri->utran.raid.rac);
+ printf(" * rnc id: %04x\n", ri->utran.rncid);
+ break;
+ case BSSGP_RIM_ROUTING_INFO_EUTRAN:
+ printf("EUTRAN eNB identifier\n");
+ printf(" * mcc: %u\n", ri->eutran.tai.mcc);
+ printf(" mnc: %u\n", ri->eutran.tai.mnc);
+ printf(" mnc 3 digits: %u\n", ri->eutran.tai.mnc_3_digits);
+ printf(" tac: %u\n", ri->eutran.tai.tac);
+ printf(" * global_enb_id: %s\n",
+ osmo_hexdump_nospc(ri->eutran.global_enb_id,
+ ri->eutran.global_enb_id_len));
+ break;
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void test_bssgp_parse_rim_ri()
+{
+ int rc;
+ struct bssgp_rim_routing_info result;
+ uint8_t testvec_geran[] =
+ { 0x00, 0x62, 0xf2, 0x24, 0x33, 0x90, 0x00, 0x51, 0xe1 };
+ uint8_t testvec_utran[] =
+ { 0x01, 0x62, 0xf2, 0x24, 0x33, 0x90, 0x00, 0x51, 0xe1 };
+ uint8_t testvec_eutran[] =
+ { 0x02, 0x62, 0xf2, 0x24, 0x33, 0x90, 0x00, 0x51, 0xe1 };
+
+ printf("----- %s START\n", __func__);
+
+ rc = bssgp_parse_rim_ri(&result, testvec_geran,
+ sizeof(testvec_geran));
+ printf("rc=%d\n", rc);
+ dump_rim_ri(&result);
+ printf("\n");
+
+ rc = bssgp_parse_rim_ri(&result, testvec_utran,
+ sizeof(testvec_utran));
+ printf("rc=%d\n", rc);
+ dump_rim_ri(&result);
+ printf("\n");
+
+ rc = bssgp_parse_rim_ri(&result, testvec_eutran,
+ sizeof(testvec_eutran));
+ printf("rc=%d\n", rc);
+ dump_rim_ri(&result);
+ printf("\n");
+
+ printf("----- %s END\n", __func__);
+}
+
+static void test_bssgp_create_rim_ri()
+{
+ int rc;
+ struct bssgp_rim_routing_info ri;
+ uint8_t result[15];
+
+ printf("----- %s START\n", __func__);
+ memset(&ri, 0, sizeof(ri));
+ memset(result, 0, sizeof(result));
+ ri.discr = BSSGP_RIM_ROUTING_INFO_GERAN;
+
+ ri.geran.raid.mcc = 262;
+ ri.geran.raid.mnc = 42;
+ ri.geran.raid.mnc_3_digits = false;
+ ri.geran.raid.lac = 13200;
+ ri.geran.raid.rac = 0;
+ ri.geran.cid = 0x51e1;
+ dump_rim_ri(&ri);
+ rc = bssgp_create_rim_ri(result, &ri);
+ printf("rc=%d, ", rc);
+ if (rc > 0)
+ printf("result=%s", osmo_hexdump_nospc(result, rc));
+ printf("\n\n");
+
+ memset(&ri, 0, sizeof(ri));
+ memset(result, 0, sizeof(result));
+ ri.discr = BSSGP_RIM_ROUTING_INFO_UTRAN;
+ ri.utran.raid.mcc = 262;
+ ri.utran.raid.mnc = 42;
+ ri.utran.raid.mnc_3_digits = 0;
+ ri.utran.raid.lac = 13200;
+ ri.utran.raid.rac = 0;
+ ri.utran.rncid = 0x51e1;
+ dump_rim_ri(&ri);
+ rc = bssgp_create_rim_ri(result, &ri);
+ printf("rc=%d, ", rc);
+ if (rc > 0)
+ printf("result=%s", osmo_hexdump_nospc(result, rc));
+ printf("\n\n");
+
+ memset(&ri, 0, sizeof(ri));
+ memset(result, 0, sizeof(result));
+ ri.discr = BSSGP_RIM_ROUTING_INFO_EUTRAN;
+ ri.eutran.tai.mcc = 262;
+ ri.eutran.tai.mnc = 42;
+ ri.eutran.tai.mnc_3_digits = 0;
+ ri.eutran.tai.tac = 13200;
+ ri.eutran.global_enb_id[0] = 0x00;
+ ri.eutran.global_enb_id[1] = 0x51;
+ ri.eutran.global_enb_id[2] = 0xe1;
+ ri.eutran.global_enb_id_len = 3;
+ dump_rim_ri(&ri);
+ rc = bssgp_create_rim_ri(result, &ri);
+ printf("rc=%d, ", rc);
+ if (rc > 0)
+ printf("result=%s", osmo_hexdump_nospc(result, rc));
+ printf("\n\n");
+
+ printf("----- %s END\n", __func__);
+}
+
void dump_bssgp_ran_inf_req_app_cont_nacc(struct bssgp_ran_inf_req_app_cont_nacc *app_cont)
{
printf(" app_cont: bssgp_ran_inf_req_app_cont_nacc:\n");
@@ -636,6 +767,10 @@ int main(int argc, char **argv)
{
printf("===== BSSGP RIM test START\n");
+ /* RIM routing information */
+ test_bssgp_parse_rim_ri();
+ test_bssgp_create_rim_ri();
+
/* RIM containers */
test_bssgp_dec_ran_inf_req_rim_cont_nacc();
test_bssgp_enc_ran_inf_req_rim_cont_nacc();
diff --git a/tests/gb/gprs_bssgp_rim_test.ok b/tests/gb/gprs_bssgp_rim_test.ok
index d075ca3e..df5a41df 100644
--- a/tests/gb/gprs_bssgp_rim_test.ok
+++ b/tests/gb/gprs_bssgp_rim_test.ok
@@ -1,4 +1,60 @@
===== BSSGP RIM test START
+----- test_bssgp_parse_rim_ri START
+rc=9
+GERAN cell identifier
+ * mcc: 262
+ mnc: 42
+ mnc 3 digits: 0
+ lac: 13200
+ rac: 0
+ * cell id: 51e1
+
+rc=9
+UTRAN RNC identifier
+ * mcc: 262
+ mnc: 42
+ mnc 3 digits: 0
+ lac: 13200
+ rac: 0
+ * rnc id: 51e1
+
+rc=9
+EUTRAN eNB identifier
+ * mcc: 262
+ mnc: 42
+ mnc 3 digits: 0
+ tac: 13200
+ * global_enb_id: 0051e1
+
+----- test_bssgp_parse_rim_ri END
+----- test_bssgp_create_rim_ri START
+GERAN cell identifier
+ * mcc: 262
+ mnc: 42
+ mnc 3 digits: 0
+ lac: 13200
+ rac: 0
+ * cell id: 51e1
+rc=9, result=0062f22433900051e1
+
+UTRAN RNC identifier
+ * mcc: 262
+ mnc: 42
+ mnc 3 digits: 0
+ lac: 13200
+ rac: 0
+ * rnc id: 51e1
+rc=9, result=0162f22433900051e1
+
+EUTRAN eNB identifier
+ * mcc: 262
+ mnc: 42
+ mnc 3 digits: 0
+ tac: 13200
+ * global_enb_id: 0051e1
+rc=9, result=0262f22433900051e1
+
+----- test_bssgp_create_rim_ri END
----- test_bssgp_dec_ran_inf_req_rim_cont_nacc START
rc=0, bssgp_ran_inf_req_rim_cont:
app_id = 01
diff --git a/tests/gb/gprs_bssgp_test.c b/tests/gb/gprs_bssgp_test.c
index e1c920a9..52e986e8 100644
--- a/tests/gb/gprs_bssgp_test.c
+++ b/tests/gb/gprs_bssgp_test.c
@@ -289,137 +289,6 @@ static void test_bssgp_msgb_copy()
printf("----- %s END\n", __func__);
}
-void dump_rim_ri(struct bssgp_rim_routing_info *ri)
-{
- switch (ri->discr) {
- case BSSGP_RIM_ROUTING_INFO_GERAN:
- printf("GERAN cell identifier\n");
- printf(" * mcc: %u\n", ri->geran.raid.mcc);
- printf(" mnc: %u\n", ri->geran.raid.mnc);
- printf(" mnc 3 digits: %u\n", ri->geran.raid.mnc_3_digits);
- printf(" lac: %u\n", ri->geran.raid.lac);
- printf(" rac: %u\n", ri->geran.raid.rac);
- printf(" * cell id: %04x\n", ri->geran.cid);
- break;
- case BSSGP_RIM_ROUTING_INFO_UTRAN:
- printf("UTRAN RNC identifier\n");
- printf(" * mcc: %u\n", ri->utran.raid.mcc);
- printf(" mnc: %u\n", ri->utran.raid.mnc);
- printf(" mnc 3 digits: %u\n", ri->utran.raid.mnc_3_digits);
- printf(" lac: %u\n", ri->utran.raid.lac);
- printf(" rac: %u\n", ri->utran.raid.rac);
- printf(" * rnc id: %04x\n", ri->utran.rncid);
- break;
- case BSSGP_RIM_ROUTING_INFO_EUTRAN:
- printf("EUTRAN eNB identifier\n");
- printf(" * mcc: %u\n", ri->eutran.tai.mcc);
- printf(" mnc: %u\n", ri->eutran.tai.mnc);
- printf(" mnc 3 digits: %u\n", ri->eutran.tai.mnc_3_digits);
- printf(" tac: %u\n", ri->eutran.tai.tac);
- printf(" * global_enb_id: %s\n",
- osmo_hexdump_nospc(ri->eutran.global_enb_id,
- ri->eutran.global_enb_id_len));
- break;
- default:
- OSMO_ASSERT(false);
- }
-}
-
-static void test_bssgp_parse_rim_ri()
-{
- int rc;
- struct bssgp_rim_routing_info result;
- uint8_t testvec_geran[] =
- { 0x00, 0x62, 0xf2, 0x24, 0x33, 0x90, 0x00, 0x51, 0xe1 };
- uint8_t testvec_utran[] =
- { 0x01, 0x62, 0xf2, 0x24, 0x33, 0x90, 0x00, 0x51, 0xe1 };
- uint8_t testvec_eutran[] =
- { 0x02, 0x62, 0xf2, 0x24, 0x33, 0x90, 0x00, 0x51, 0xe1 };
-
- printf("----- %s START\n", __func__);
-
- rc = bssgp_parse_rim_ri(&result, testvec_geran,
- sizeof(testvec_geran));
- printf("rc=%d\n", rc);
- dump_rim_ri(&result);
- printf("\n");
-
- rc = bssgp_parse_rim_ri(&result, testvec_utran,
- sizeof(testvec_utran));
- printf("rc=%d\n", rc);
- dump_rim_ri(&result);
- printf("\n");
-
- rc = bssgp_parse_rim_ri(&result, testvec_eutran,
- sizeof(testvec_eutran));
- printf("rc=%d\n", rc);
- dump_rim_ri(&result);
- printf("\n");
-
- printf("----- %s END\n", __func__);
-}
-
-static void test_bssgp_create_rim_ri()
-{
- int rc;
- struct bssgp_rim_routing_info ri;
- uint8_t result[15];
-
- printf("----- %s START\n", __func__);
- memset(&ri, 0, sizeof(ri));
- memset(result, 0, sizeof(result));
- ri.discr = BSSGP_RIM_ROUTING_INFO_GERAN;
-
- ri.geran.raid.mcc = 262;
- ri.geran.raid.mnc = 42;
- ri.geran.raid.mnc_3_digits = false;
- ri.geran.raid.lac = 13200;
- ri.geran.raid.rac = 0;
- ri.geran.cid = 0x51e1;
- dump_rim_ri(&ri);
- rc = bssgp_create_rim_ri(result, &ri);
- printf("rc=%d, ", rc);
- if (rc > 0)
- printf("result=%s", osmo_hexdump_nospc(result, rc));
- printf("\n\n");
-
- memset(&ri, 0, sizeof(ri));
- memset(result, 0, sizeof(result));
- ri.discr = BSSGP_RIM_ROUTING_INFO_UTRAN;
- ri.utran.raid.mcc = 262;
- ri.utran.raid.mnc = 42;
- ri.utran.raid.mnc_3_digits = 0;
- ri.utran.raid.lac = 13200;
- ri.utran.raid.rac = 0;
- ri.utran.rncid = 0x51e1;
- dump_rim_ri(&ri);
- rc = bssgp_create_rim_ri(result, &ri);
- printf("rc=%d, ", rc);
- if (rc > 0)
- printf("result=%s", osmo_hexdump_nospc(result, rc));
- printf("\n\n");
-
- memset(&ri, 0, sizeof(ri));
- memset(result, 0, sizeof(result));
- ri.discr = BSSGP_RIM_ROUTING_INFO_EUTRAN;
- ri.eutran.tai.mcc = 262;
- ri.eutran.tai.mnc = 42;
- ri.eutran.tai.mnc_3_digits = 0;
- ri.eutran.tai.tac = 13200;
- ri.eutran.global_enb_id[0] = 0x00;
- ri.eutran.global_enb_id[1] = 0x51;
- ri.eutran.global_enb_id[2] = 0xe1;
- ri.eutran.global_enb_id_len = 3;
- dump_rim_ri(&ri);
- rc = bssgp_create_rim_ri(result, &ri);
- printf("rc=%d, ", rc);
- if (rc > 0)
- printf("result=%s", osmo_hexdump_nospc(result, rc));
- printf("\n\n");
-
- printf("----- %s END\n", __func__);
-}
-
static struct log_info info = {};
int main(int argc, char **argv)
@@ -448,8 +317,6 @@ int main(int argc, char **argv)
test_bssgp_bad_reset();
test_bssgp_flow_control_bvc();
test_bssgp_msgb_copy();
- test_bssgp_parse_rim_ri();
- test_bssgp_create_rim_ri();
printf("===== BSSGP test END\n\n");
exit(EXIT_SUCCESS);
diff --git a/tests/gb/gprs_bssgp_test.ok b/tests/gb/gprs_bssgp_test.ok
index 744f1a79..c5b3e7d1 100644
--- a/tests/gb/gprs_bssgp_test.ok
+++ b/tests/gb/gprs_bssgp_test.ok
@@ -17,61 +17,5 @@ Got message: 26 1e 81 2a 05 82 10 22 03 82 c0 40 01 82 08 11 1c 82 60 20 3c 81 7
Old msgb: [L3]> 22 04 82 00 02 07 81 08
New msgb: [L3]> 22 04 82 00 02 07 81 08
----- test_bssgp_msgb_copy END
------ test_bssgp_parse_rim_ri START
-rc=9
-GERAN cell identifier
- * mcc: 262
- mnc: 42
- mnc 3 digits: 0
- lac: 13200
- rac: 0
- * cell id: 51e1
-
-rc=9
-UTRAN RNC identifier
- * mcc: 262
- mnc: 42
- mnc 3 digits: 0
- lac: 13200
- rac: 0
- * rnc id: 51e1
-
-rc=9
-EUTRAN eNB identifier
- * mcc: 262
- mnc: 42
- mnc 3 digits: 0
- tac: 13200
- * global_enb_id: 0051e1
-
------ test_bssgp_parse_rim_ri END
------ test_bssgp_create_rim_ri START
-GERAN cell identifier
- * mcc: 262
- mnc: 42
- mnc 3 digits: 0
- lac: 13200
- rac: 0
- * cell id: 51e1
-rc=9, result=0062f22433900051e1
-
-UTRAN RNC identifier
- * mcc: 262
- mnc: 42
- mnc 3 digits: 0
- lac: 13200
- rac: 0
- * rnc id: 51e1
-rc=9, result=0162f22433900051e1
-
-EUTRAN eNB identifier
- * mcc: 262
- mnc: 42
- mnc 3 digits: 0
- tac: 13200
- * global_enb_id: 0051e1
-rc=9, result=0262f22433900051e1
-
------ test_bssgp_create_rim_ri END
===== BSSGP test END