aboutsummaryrefslogtreecommitdiffstats
path: root/src/libbsc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libbsc')
-rw-r--r--src/libbsc/rest_octets.c16
-rw-r--r--src/libbsc/system_information.c5
2 files changed, 20 insertions, 1 deletions
diff --git a/src/libbsc/rest_octets.c b/src/libbsc/rest_octets.c
index 7c6d7cd92..b8a29bac5 100644
--- a/src/libbsc/rest_octets.c
+++ b/src/libbsc/rest_octets.c
@@ -461,6 +461,22 @@ static void append_gprs_ind(struct bitvec *bv,
bitvec_set_bit(bv, L);
}
+/* Generate SI2ter Rest Octests 3GPP TS 44.018 Table 10.5.2.33a.1 */
+int rest_octets_si2ter(uint8_t *data)
+{
+ struct bitvec bv;
+
+ memset(&bv, 0, sizeof(bv));
+ bv.data = data;
+ bv.data_len = 4;
+
+ /* No SI2ter_MP_CHANGE_MARK */
+ bitvec_set_bit(&bv, L);
+
+ 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 c1b0d49f6..4575454d4 100644
--- a/src/libbsc/system_information.c
+++ b/src/libbsc/system_information.c
@@ -764,7 +764,10 @@ static int generate_si2ter(enum osmo_sysinfo_type t, struct gsm_bts *bts)
if (!n)
bts->si_valid &= ~(1 << SYSINFO_TYPE_2ter);
- return sizeof(*si2t);
+ /* SI2ter Rest Octets as per 3GPP TS 44.018 ยง10.5.2.33a */
+ rc = rest_octets_si2ter(si2t->rest_octets);
+
+ return sizeof(*si2t) + rc;
}
/* SI2quater messages are optional - we only generate them when neighbor UARFCNs or EARFCNs are configured */