this is the first version that actually talks to the BTS
* initialize OML and RSL based on TEI establish (ACTIVATE_IND) events
* fix abis_nm_raw_msg() to not overwrite the OML header with payload
* fix debug print statements
* fix msgb_dequeue: actually dequeue it from the list ;)

diff --git a/include/openbsc/debug.h b/include/openbsc/debug.h
index 41953a3..02ae699 100644
--- a/include/openbsc/debug.h
+++ b/include/openbsc/debug.h
@@ -12,9 +12,11 @@
 #define DMI		0x1000
 
 #ifdef DEBUG
-#define DEBUGP(ss, args...)	debugp(ss, __FILE__, __LINE__, ## args)
+#define DEBUGP(ss, fmt, args...) debugp(ss, __FILE__, __LINE__, fmt, ## args)
 #else
-#define DEBUGP(xss, args, ...) 
+#define DEBUGP(xss, fmt, args...) 
 #endif
 
+void debugp(int subsys, char *file, int line, const char *format, ...);
+
 #endif /* _DEBUG_H */
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 8bb219a..75de2e7 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -126,5 +126,13 @@
 	/* the 'local' subscriber */
 	struct gsm_subscriber *subscr;
 };
-	
+
+enum gsm_e1_event {
+	EVT_E1_NONE,
+	EVT_E1_OML_UP,
+	EVT_E1_RSL_UP,
+	EVT_E1_OML_DN,
+	EVT_E1_RSL_DN,
+};
+
 #endif
diff --git a/include/openbsc/msgb.h b/include/openbsc/msgb.h
index 13631e7..cfb9121 100644
--- a/include/openbsc/msgb.h
+++ b/include/openbsc/msgb.h
@@ -34,8 +34,8 @@
 	struct gsm_bts_trx *trx;
 	struct gsm_lchan *lchan;
 
-	u_int8_t l2_off;
-	u_int8_t l3_off;
+	unsigned char *l2h;
+	unsigned char *l3h;
 
 	u_int16_t data_len;
 	u_int16_t len;
@@ -51,8 +51,8 @@
 extern void msgb_enqueue(struct llist_head *queue, struct msgb *msg);
 extern struct msgb *msgb_dequeue(struct llist_head *queue);
 
-#define msgb_l2(m)	((void *)(m->data + m->l2_off))
-#define msgb_l3(m)	((void *)(m->data + m->l3_off))
+#define msgb_l2(m)	((void *)(m->l2h))
+#define msgb_l3(m)	((void *)(m->l3h))
 
 static inline unsigned int msgb_headlen(const struct msgb *msgb)
 {