add msgb and tlv support bits required for openbsc gprs branch
diff --git a/include/osmocore/msgb.h b/include/osmocore/msgb.h
index 131f920..e2755ef 100644
--- a/include/osmocore/msgb.h
+++ b/include/osmocore/msgb.h
@@ -35,9 +35,20 @@
 	struct gsm_bts_trx *trx;
 	struct gsm_lchan *lchan;
 
+	/* the A-bis layer 2 header: OML, RSL(RLL), NS */
 	unsigned char *l2h;
+	/* the layer 3 header. For OML: FOM; RSL: 04.08; GPRS: BSSGP */
 	unsigned char *l3h;
-	unsigned char *smsh;
+
+	/* the layer 4 header */
+	union {
+		unsigned char *smsh;
+		unsigned char *llch;
+	};
+
+	/* the layer 5 header, GPRS: GMM header */
+	unsigned char *gmmh;
+	uint32_t tlli;
 
 	uint16_t data_len;
 	uint16_t len;
diff --git a/include/osmocore/tlv.h b/include/osmocore/tlv.h
index 14c9910..c733dbc 100644
--- a/include/osmocore/tlv.h
+++ b/include/osmocore/tlv.h
@@ -190,6 +190,13 @@
 	return tv16_put(buf, tag, val);
 }
 
+static inline uint8_t *msgb_tvlv_push(struct msgb *msg, uint8_t tag, uint16_t len,
+				      const uint8_t *val)
+{
+	uint8_t *buf = msgb_push(msg, TVLV_GROSS_LEN(len));
+	return tvlv_put(buf, tag, len, val);
+}
+
 /* TLV parsing */
 
 struct tlv_p_entry {