summaryrefslogtreecommitdiffstats
path: root/include/osmocore
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-07-13 13:48:13 +0200
committerHarald Welte <laforge@gnumonks.org>2010-07-13 13:48:13 +0200
commit6eb7d6c88748a445dde56b697f9faa062658a301 (patch)
tree1cd7a98cd66d3e4ca0ce4c7533bc5946ac09dd17 /include/osmocore
parented00fe4449ac2309ad80c32f0ba7aa80b2b8895a (diff)
[RSL] split rsl_rll_push_l3() L3 LV pushign and rsl_rll_push_hdr()
This allows us to generate RSLms messages that have some non-standard IEs between the RSL/RLL common header and the L3 INFO IE.
Diffstat (limited to 'include/osmocore')
-rw-r--r--include/osmocore/protocol/gsm_08_58.h9
-rw-r--r--include/osmocore/rsl.h6
2 files changed, 15 insertions, 0 deletions
diff --git a/include/osmocore/protocol/gsm_08_58.h b/include/osmocore/protocol/gsm_08_58.h
index 7dc35693..5fe332e0 100644
--- a/include/osmocore/protocol/gsm_08_58.h
+++ b/include/osmocore/protocol/gsm_08_58.h
@@ -49,6 +49,14 @@ struct abis_rsl_dchan_hdr {
uint8_t data[0];
} __attribute__ ((packed));
+/* Chapter 8.5 */
+struct abis_rsl_cchan_hdr {
+ struct abis_rsl_common_hdr c;
+ uint8_t ie_chan;
+ uint8_t chan_nr;
+ uint8_t data[0];
+} __attribute__ ((packed));
+
/* Chapter 9.1 */
#define ABIS_RSL_MDISC_RLL 0x02
@@ -88,6 +96,7 @@ enum abis_rsl_msgtype {
RSL_MT_PAGING_CMD,
RSL_MT_IMMEDIATE_ASSIGN_CMD,
RSL_MT_SMS_BC_REQ,
+ RSL_MT_CHAN_CONF, /* non-standard element */
/* empty */
RSL_MT_RF_RES_IND = 0x19,
RSL_MT_SACCH_FILL,
diff --git a/include/osmocore/rsl.h b/include/osmocore/rsl.h
index 99b90d68..cd84057b 100644
--- a/include/osmocore/rsl.h
+++ b/include/osmocore/rsl.h
@@ -7,6 +7,8 @@
void rsl_init_rll_hdr(struct abis_rsl_rll_hdr *dh, uint8_t msg_type);
+void rsl_init_cchan_hdr(struct abis_rsl_cchan_hdr *ch, uint8_t msg_type);
+
extern const struct tlv_definition rsl_att_tlvdef;
#define rsl_tlv_parse(dec, buf, len) \
tlv_parse(dec, &rsl_att_tlvdef, buf, len, 0, 0)
@@ -22,6 +24,10 @@ const char *rsl_rlm_cause_name(uint8_t err);
/* Section 3.3.2.3 TS 05.02. I think this looks like a table */
int rsl_ccch_conf_to_bs_cc_chans(int ccch_conf);
+/* Push a RSL RLL header */
+void rsl_rll_push_hdr(struct msgb *msg, uint8_t msg_type, uint8_t chan_nr,
+ uint8_t link_id, int transparent);
+
/* Push a RSL RLL header with L3_INFO IE */
void rsl_rll_push_l3(struct msgb *msg, uint8_t msg_type, uint8_t chan_nr,
uint8_t link_id, int transparent);