aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-12-11 12:24:18 +0100
committerHarald Welte <laforge@gnumonks.org>2017-12-12 18:00:56 +0000
commit61b0c30cca80cba5522b172b884b2904b91eb516 (patch)
treeea76c34e9366eb00dfbe4f7214a068bf91f3c058 /src
parentd382bf63e2b7e28fe41c5310c26fe584f0356897 (diff)
Generate SI2bis Rest Octets
According to the spec it's an empty 1-byte element reserved for future extension but we still have to generate padding properly. Add stub function similar to the used for SI2ter and adjust test output accordingly. Related: OS#2711 Change-Id: I3c278c57880a173df3c4648c9724339d23ce94fd
Diffstat (limited to 'src')
-rw-r--r--src/libbsc/rest_octets.c14
-rw-r--r--src/libbsc/system_information.c5
2 files changed, 18 insertions, 1 deletions
diff --git a/src/libbsc/rest_octets.c b/src/libbsc/rest_octets.c
index b8a29bac5..9f2b4c0ab 100644
--- a/src/libbsc/rest_octets.c
+++ b/src/libbsc/rest_octets.c
@@ -478,6 +478,20 @@ int rest_octets_si2ter(uint8_t *data)
return bv.data_len;
}
+/* Generate SI2bis Rest Octests 3GPP TS 44.018 Table 10.5.2.33.1 */
+int rest_octets_si2bis(uint8_t *data)
+{
+ struct bitvec bv;
+
+ memset(&bv, 0, sizeof(bv));
+ bv.data = data;
+ bv.data_len = 1;
+
+ bitvec_spare_padding(&bv, (bv.data_len * 8) - 1);
+
+ return bv.data_len;
+}
+
/* Generate SI3 Rest Octests (Chapter 10.5.2.34 / Table 10.4.72) */
int rest_octets_si3(uint8_t *data, const struct gsm48_si_ro_info *si3)
{
diff --git a/src/libbsc/system_information.c b/src/libbsc/system_information.c
index 4575454d4..a04959d87 100644
--- a/src/libbsc/system_information.c
+++ b/src/libbsc/system_information.c
@@ -739,7 +739,10 @@ static int generate_si2bis(enum osmo_sysinfo_type t, struct gsm_bts *bts)
si2b->rach_control = bts->si_common.rach_control;
- return sizeof(*si2b);
+ /* SI2bis Rest Octets as per 3GPP TS 44.018 ยง10.5.2.33 */
+ rc = rest_octets_si2bis(si2b->rest_octets);
+
+ return sizeof(*si2b) + rc;
}
static int generate_si2ter(enum osmo_sysinfo_type t, struct gsm_bts *bts)