Parse sms-submit messages
diff --git a/include/openbsc/gsm_04_11.h b/include/openbsc/gsm_04_11.h
index 3f4b0a3..84751a3 100644
--- a/include/openbsc/gsm_04_11.h
+++ b/include/openbsc/gsm_04_11.h
@@ -22,12 +22,30 @@
/* Chapter 8.1.1 */
struct gsm411_rp_data_hdr {
- u_int8_t len;
- u_int8_t msg_type;
+ u_int8_t len;
+ u_int8_t msg_type;
u_int8_t msg_ref;
u_int8_t data[0];
} __attribute__ ((packed));
+/* SMS submit PDU */
+struct sms_submit {
+ u_int8_t *smsc;
+ u_int8_t mti:2;
+ u_int8_t mms:1;
+ u_int8_t vpf:2;
+ u_int8_t sri:1;
+ u_int8_t udhi:1;
+ u_int8_t rp:1;
+ u_int8_t msg_ref;
+ u_int8_t *dest_addr;
+ u_int8_t pid;
+ u_int8_t dcs;
+ u_int8_t vp;
+ u_int8_t ud_len;
+ u_int8_t *user_data;
+};
+
struct msgb;
int gsm0411_rcv_sms(struct msgb *msg);
diff --git a/include/openbsc/msgb.h b/include/openbsc/msgb.h
index cfb9121..db1f8ae 100644
--- a/include/openbsc/msgb.h
+++ b/include/openbsc/msgb.h
@@ -36,6 +36,7 @@
unsigned char *l2h;
unsigned char *l3h;
+ unsigned char *smsh;
u_int16_t data_len;
u_int16_t len;
@@ -53,6 +54,7 @@
#define msgb_l2(m) ((void *)(m->l2h))
#define msgb_l3(m) ((void *)(m->l3h))
+#define msgb_sms(m) ((void *)(m->smsh))
static inline unsigned int msgb_headlen(const struct msgb *msgb)
{