aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc/gsm_data.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-02-22 03:19:05 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2018-03-05 05:35:54 +0100
commit4d358c00e1b3389291bdb3d5c40d0da8d6cf4d02 (patch)
treec07d80b905741c5d7af2f1391cb03a249fc39947 /src/libbsc/gsm_data.c
parent7cdd069b7a1a1a843030299cc5f345380486d0b2 (diff)
gsm48_ra_id_by_bts(): struct gsm48_ra_id* instead of buf
Move from using deprecated gsm48_construct_ra(), which uses a buf, to gsm48_encode_ra(), which uses a gsm48_ra_id argument. Pass struct gsm48_ra_id around instead of a buf. struct gsm48_ra_id is the "encoded" representation of the bytes in a typical MCC-MNC-LAC-RAC (04.08 Routing Area Id IE, 3GPP TS 24.008 ยง 10.5.5.15). Using the struct spares using magic numbers for byte offsets. In the process, fix a sanitizer warning for unaligned access by using memcpy() instead of pointer assignment: osmo-bsc/src/libbsc/abis_nm.c:2857:27: runtime error: store to misaligned address 0x7ffe8e0d6695 for type 'uint16_t', which requires 2 byte alignment Note that (besides removing a now unnecessary cast) the gsm0408_test and abis_test tests of RAI / CGI encoding remain stable, which indicates that the new code is still correct. Change-Id: I0d3908fb8ca1e2e669d257b5d59b40675fa85d06
Diffstat (limited to 'src/libbsc/gsm_data.c')
-rw-r--r--src/libbsc/gsm_data.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/libbsc/gsm_data.c b/src/libbsc/gsm_data.c
index 15945228a..d4a6a70f9 100644
--- a/src/libbsc/gsm_data.c
+++ b/src/libbsc/gsm_data.c
@@ -279,13 +279,12 @@ void gprs_ra_id_by_bts(struct gprs_ra_id *raid, struct gsm_bts *bts)
};
}
-int gsm48_ra_id_by_bts(uint8_t *buf, struct gsm_bts *bts)
+void gsm48_ra_id_by_bts(struct gsm48_ra_id *buf, struct gsm_bts *bts)
{
struct gprs_ra_id raid;
gprs_ra_id_by_bts(&raid, bts);
-
- return gsm48_construct_ra(buf, &raid);
+ gsm48_encode_ra(buf, &raid);
}
int gsm_parse_reg(void *ctx, regex_t *reg, char **str, int argc, const char **argv)