aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/system_information.c
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-01-06 07:52:31 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-01-07 15:48:28 +0100
commit7ec448d0312f658a78f7d7cf1e3cbd03cce2a1ca (patch)
tree88a4b6b37d7cab0ccde37877cd0e8a56a26696af /openbsc/src/system_information.c
parentcaa14869c08b55d55168d29f5f6e3c23a22c833c (diff)
[system_information] Return how much byte were written into output
Diffstat (limited to 'openbsc/src/system_information.c')
-rw-r--r--openbsc/src/system_information.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/openbsc/src/system_information.c b/openbsc/src/system_information.c
index 42cd8ec6a..7fd12346e 100644
--- a/openbsc/src/system_information.c
+++ b/openbsc/src/system_information.c
@@ -222,9 +222,8 @@ static int generate_si1(u_int8_t *output, struct gsm_bts *bts)
si1->rach_control = bts->si_common.rach_control;
/* SI1 Rest Octets (10.5.2.32), contains NCH position */
- rest_octets_si1(si1->rest_octets, NULL);
-
- return GSM_MACBLOCK_LEN;
+ rc = rest_octets_si1(si1->rest_octets, NULL);
+ return sizeof(*si1) + rc;
}
static int generate_si2(u_int8_t *output, struct gsm_bts *bts)
@@ -247,7 +246,7 @@ static int generate_si2(u_int8_t *output, struct gsm_bts *bts)
si2->ncc_permitted = bts->si_common.ncc_permitted;
si2->rach_control = bts->si_common.rach_control;
- return GSM_MACBLOCK_LEN;
+ return sizeof(*si2);
}
struct gsm48_si_ro_info si_info = {
@@ -276,6 +275,7 @@ struct gsm48_si_ro_info si_info = {
static int generate_si3(u_int8_t *output, struct gsm_bts *bts)
{
+ int rc;
struct gsm48_system_information_type_3 *si3 =
(struct gsm48_system_information_type_3 *) output;
@@ -299,13 +299,14 @@ static int generate_si3(u_int8_t *output, struct gsm_bts *bts)
CBQ, CELL_RESELECT_OFFSET, TEMPORARY_OFFSET, PENALTY_TIME
Power Offset, 2ter Indicator, Early Classmark Sending,
Scheduling if and WHERE, GPRS Indicator, SI13 position */
- rest_octets_si3(si3->rest_octets, &si_info);
+ rc = rest_octets_si3(si3->rest_octets, &si_info);
- return GSM_MACBLOCK_LEN;
+ return sizeof(*si3) + rc;
}
static int generate_si4(u_int8_t *output, struct gsm_bts *bts)
{
+ int rc;
struct gsm48_system_information_type_4 *si4 =
(struct gsm48_system_information_type_4 *) output;
@@ -331,9 +332,9 @@ static int generate_si4(u_int8_t *output, struct gsm_bts *bts)
/* SI4 Rest Octets (10.5.2.35), containing
Optional Power offset, GPRS Indicator,
Cell Identity, LSA ID, Selection Parameter */
- rest_octets_si4(si4->data, &si_info);
+ rc = rest_octets_si4(si4->data, &si_info);
- return GSM_MACBLOCK_LEN;
+ return sizeof(*si4) + rc;
}
static int generate_si5(u_int8_t *output, struct gsm_bts *bts)
@@ -438,7 +439,7 @@ static int generate_si13(u_int8_t *output, struct gsm_bts *bts)
si13->header.l2_plen = ret & 0xff;
- return GSM_MACBLOCK_LEN;
+ return sizeof (*si13) + ret;
}
int gsm_generate_si(u_int8_t *output, struct gsm_bts *bts, int type)