diff --git a/openbsc/include/Makefile.am b/openbsc/include/Makefile.am
index 2cc8bee..4596b6e 100644
--- a/openbsc/include/Makefile.am
+++ b/openbsc/include/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS = openbsc osmocom
+SUBDIRS = openbsc
 
 noinst_HEADERS = mISDNif.h compat_af_isdn.h
diff --git a/openbsc/include/osmocom/Makefile.am b/openbsc/include/osmocom/Makefile.am
deleted file mode 100644
index 596ce23..0000000
--- a/openbsc/include/osmocom/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = gprs
diff --git a/openbsc/include/osmocom/gprs/Makefile.am b/openbsc/include/osmocom/gprs/Makefile.am
deleted file mode 100644
index d39592c..0000000
--- a/openbsc/include/osmocom/gprs/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-libgb_HEADERS = gprs_bssgp.h gprs_ns.h gprs_ns_frgre.h gprs_msgb.h
-
-libgbdir = $(includedir)/osmocom/gprs
-
-SUBDIRS = protocol
diff --git a/openbsc/include/osmocom/gprs/gprs_bssgp.h b/openbsc/include/osmocom/gprs/gprs_bssgp.h
deleted file mode 100644
index 949dbdc..0000000
--- a/openbsc/include/osmocom/gprs/gprs_bssgp.h
+++ /dev/null
@@ -1,166 +0,0 @@
-#ifndef _GPRS_BSSGP_H
-#define _GPRS_BSSGP_H
-
-#include <stdint.h>
-
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/gsm/prim.h>
-
-#include <osmocom/gprs/protocol/gsm_08_18.h>
-
-/* gprs_bssgp_util.c */
-extern struct gprs_ns_inst *bssgp_nsi;
-struct msgb *bssgp_msgb_alloc(void);
-const char *bssgp_cause_str(enum gprs_bssgp_cause cause);
-/* Transmit a simple response such as BLOCK/UNBLOCK/RESET ACK/NACK */
-int bssgp_tx_simple_bvci(uint8_t pdu_type, uint16_t nsei,
-			 uint16_t bvci, uint16_t ns_bvci);
-/* Chapter 10.4.14: Status */
-int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg);
-
-enum bssgp_prim {
-	PRIM_BSSGP_DL_UD,
-	PRIM_BSSGP_UL_UD,
-	PRIM_BSSGP_PTM_UD,
-
-	PRIM_BSSGP_GMM_SUSPEND,
-	PRIM_BSSGP_GMM_RESUME,
-	PRIM_BSSGP_GMM_PAGING,
-
-	PRIM_NM_FLUSH_LL,
-	PRIM_NM_LLC_DISCARDED,
-	PRIM_NM_BVC_RESET,
-	PRIM_NM_BVC_BLOCK,
-	PRIM_NM_BVC_UNBLOCK,
-};
-
-struct osmo_bssgp_prim {
-	struct osmo_prim_hdr oph;
-
-	/* common fields */
-	uint16_t nsei;
-	uint16_t bvci;
-	uint32_t tlli;
-	struct tlv_parsed *tp;
-	struct gprs_ra_id *ra_id;
-
-	/* specific fields */
-	union {
-		struct {
-			uint8_t *suspend_ref;
-		} resume;
-	} u;
-};
-
-/* gprs_bssgp.c */
-
-#define BVC_S_BLOCKED	0x0001
-
-/* The per-BTS context that we keep on the SGSN side of the BSSGP link */
-struct bssgp_bvc_ctx {
-	struct llist_head list;
-
-	struct gprs_ra_id ra_id; /*!< parsed RA ID of the remote BTS */
-	uint16_t cell_id; /*!< Cell ID of the remote BTS */
-
-	/* NSEI and BVCI of underlying Gb link.  Together they
-	 * uniquely identify a link to a BTS (5.4.4) */
-	uint16_t bvci;
-	uint16_t nsei;
-
-	uint32_t state;
-
-	struct rate_ctr_group *ctrg;
-
-	/* we might want to add this as a shortcut later, avoiding the NSVC
-	 * lookup for every packet, similar to a routing cache */
-	//struct gprs_nsvc *nsvc;
-};
-extern struct llist_head bssgp_bvc_ctxts;
-/* Find a BTS Context based on parsed RA ID and Cell ID */
-struct bssgp_bvc_ctx *btsctx_by_raid_cid(const struct gprs_ra_id *raid, uint16_t cid);
-/* Find a BTS context based on BVCI+NSEI tuple */
-struct bssgp_bvc_ctx *btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei);
-
-#define BVC_F_BLOCKED	0x0001
-
-enum bssgp_ctr {
-	BSSGP_CTR_PKTS_IN,
-	BSSGP_CTR_PKTS_OUT,
-	BSSGP_CTR_BYTES_IN,
-	BSSGP_CTR_BYTES_OUT,
-	BSSGP_CTR_BLOCKED,
-	BSSGP_CTR_DISCARDED,
-};
-
-
-#include <osmocom/gsm/tlv.h>
-#include <osmocom/gprs/gprs_msgb.h>
-
-/* BSSGP-UL-UNITDATA.ind */
-int bssgp_rcvmsg(struct msgb *msg);
-
-/* BSSGP-DL-UNITDATA.req */
-struct bssgp_lv {
-	uint16_t len;
-	uint8_t *v;
-};
-/* parameters for BSSGP downlink userdata transmission */
-struct bssgp_dl_ud_par {
-	uint32_t *tlli;
-	char *imsi;
-	uint16_t drx_parms;
-	/* FIXME: priority */
-	struct bssgp_lv ms_ra_cap;
-	uint8_t qos_profile[3];
-};
-int bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime,
-		   struct bssgp_dl_ud_par *dup);
-
-uint16_t bssgp_parse_cell_id(struct gprs_ra_id *raid, const uint8_t *buf);
-int bssgp_create_cell_id(uint8_t *buf, const struct gprs_ra_id *raid,
-			 uint16_t cid);
-
-/* Wrapper around TLV parser to parse BSSGP IEs */
-static inline int bssgp_tlv_parse(struct tlv_parsed *tp, uint8_t *buf, int len)
-{
-	return tlv_parse(tp, &tvlv_att_def, buf, len, 0, 0);
-}
-
-/*! \brief BSSGP Paging mode */
-enum bssgp_paging_mode {
-	BSSGP_PAGING_PS,
-	BSSGP_PAGING_CS,
-};
-
-/*! \brief BSSGP Paging scope */
-enum bssgp_paging_scope {
-	BSSGP_PAGING_BSS_AREA,		/*!< all cells in BSS */
-	BSSGP_PAGING_LOCATION_AREA,	/*!< all cells in LA */
-	BSSGP_PAGING_ROUTEING_AREA,	/*!< all cells in RA */
-	BSSGP_PAGING_BVCI,		/*!< one cell */
-};
-
-/*! \brief BSSGP paging information */
-struct bssgp_paging_info {
-	enum bssgp_paging_mode mode;	/*!< CS or PS paging */
-	enum bssgp_paging_scope scope;	/*!< bssgp_paging_scope */
-	struct gprs_ra_id raid;		/*!< RA Identifier */
-	uint16_t bvci;			/*!< BVCI */
-	char *imsi;			/*!< IMSI, if any */
-	uint32_t *ptmsi;		/*!< P-TMSI, if any */
-	uint16_t drx_params;		/*!< DRX parameters */
-	uint8_t qos[3];			/*!< QoS parameters */
-};
-
-/* Send a single GMM-PAGING.req to a given NSEI/NS-BVCI */
-int bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci,
-		    struct bssgp_paging_info *pinfo);
-
-/* gprs_bssgp_vty.c */
-int bssgp_vty_init(void);
-void bssgp_set_log_ss(int ss);
-
-int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx);
-
-#endif /* _GPRS_BSSGP_H */
diff --git a/openbsc/include/osmocom/gprs/gprs_msgb.h b/openbsc/include/osmocom/gprs/gprs_msgb.h
deleted file mode 100644
index f4c8554..0000000
--- a/openbsc/include/osmocom/gprs/gprs_msgb.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef _LIBGB_MSGB_H
-#define _LIBGB_MSGB_H
-
-#include <stdint.h>
-/* the data structure stored in msgb->cb for libgb apps */
-struct libgb_msgb_cb {
-	unsigned char *bssgph;
-	unsigned char *llch;
-
-	/* Cell Identifier */
-	unsigned char *bssgp_cell_id;
-
-	/* Identifiers of a BTS, equal to 'struct bssgp_bts_ctx' */
-	uint16_t nsei;
-	uint16_t bvci;
-
-	/* Identifier of a MS (inside BTS), equal to 'struct sgsn_mm_ctx' */
-	uint32_t tlli;
-} __attribute__((packed));
-#define LIBGB_MSGB_CB(__msgb)	((struct libgb_msgb_cb *)&((__msgb)->cb[0]))
-#define msgb_tlli(__x)		LIBGB_MSGB_CB(__x)->tlli
-#define msgb_nsei(__x)		LIBGB_MSGB_CB(__x)->nsei
-#define msgb_bvci(__x)		LIBGB_MSGB_CB(__x)->bvci
-#define msgb_gmmh(__x)		(__x)->l3h
-#define msgb_bssgph(__x)	LIBGB_MSGB_CB(__x)->bssgph
-#define msgb_bssgp_len(__x)	((__x)->tail - (uint8_t *)msgb_bssgph(__x))
-#define msgb_bcid(__x)		LIBGB_MSGB_CB(__x)->bssgp_cell_id
-#define msgb_llch(__x)		LIBGB_MSGB_CB(__x)->llch
-
-/* logging contexts */
-#define GPRS_CTX_NSVC	0
-#define GPRS_CTX_BVC	1
-
-#include <osmocom/core/logging.h>
-int gprs_log_filter_fn(const struct log_context *ctx,
-			struct log_target *tar);
-#endif
diff --git a/openbsc/include/osmocom/gprs/gprs_ns.h b/openbsc/include/osmocom/gprs/gprs_ns.h
deleted file mode 100644
index a7f32b2..0000000
--- a/openbsc/include/osmocom/gprs/gprs_ns.h
+++ /dev/null
@@ -1,189 +0,0 @@
-#ifndef _GPRS_NS_H
-#define _GPRS_NS_H
-
-#include <stdint.h>
-
-/* Our Implementation */
-#include <netinet/in.h>
-#include <osmocom/core/linuxlist.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/timer.h>
-#include <osmocom/core/select.h>
-#include <osmocom/gprs/gprs_msgb.h>
-
-#include <osmocom/gprs/protocol/gsm_08_16.h>
-
-#define NS_TIMERS_COUNT 7
-#define NS_TIMERS "(tns-block|tns-block-retries|tns-reset|tns-reset-retries|tns-test|tns-alive|tns-alive-retries)"
-#define NS_TIMERS_HELP	\
-	"(un)blocking Timer (Tns-block) timeout\n"		\
-	"(un)blocking Timer (Tns-block) number of retries\n"	\
-	"Reset Timer (Tns-reset) timeout\n"			\
-	"Reset Timer (Tns-reset) number of retries\n"		\
-	"Test Timer (Tns-test) timeout\n"			\
-	"Alive Timer (Tns-alive) timeout\n"			\
-	"Alive Timer (Tns-alive) number of retries\n"
-
-enum ns_timeout {
-	NS_TOUT_TNS_BLOCK,
-	NS_TOUT_TNS_BLOCK_RETRIES,
-	NS_TOUT_TNS_RESET,
-	NS_TOUT_TNS_RESET_RETRIES,
-	NS_TOUT_TNS_TEST,
-	NS_TOUT_TNS_ALIVE,
-	NS_TOUT_TNS_ALIVE_RETRIES,
-};
-
-#define NSE_S_BLOCKED	0x0001
-#define NSE_S_ALIVE	0x0002
-
-/*! \brief Osmocom NS link layer types */
-enum gprs_ns_ll {
-	GPRS_NS_LL_UDP,		/*!< NS/UDP/IP */
-	GPRS_NS_LL_E1,		/*!< NS/E1 */
-	GPRS_NS_LL_FR_GRE,	/*!< NS/FR/GRE/IP */
-};
-
-/*! \brief Osmoco NS events */
-enum gprs_ns_evt {
-	GPRS_NS_EVT_UNIT_DATA,
-};
-
-struct gprs_nsvc;
-/*! \brief Osmocom GPRS callback function type */
-typedef int gprs_ns_cb_t(enum gprs_ns_evt event, struct gprs_nsvc *nsvc,
-			 struct msgb *msg, uint16_t bvci);
-
-/*! \brief An instance of the NS protocol stack */
-struct gprs_ns_inst {
-	/*! \brief callback to the user for incoming UNIT DATA IND */
-	gprs_ns_cb_t *cb;
-
-	/*! \brief linked lists of all NSVC in this instance */
-	struct llist_head gprs_nsvcs;
-
-	/*! \brief a NSVC object that's needed to deal with packets for
-	 * 	   unknown NSVC */
-	struct gprs_nsvc *unknown_nsvc;
-
-	uint16_t timeout[NS_TIMERS_COUNT];
-
-	/*! \brief NS-over-IP specific bits */
-	struct {
-		struct osmo_fd fd;
-		uint32_t local_ip;
-		uint16_t local_port;
-	} nsip;
-	/*! \brief NS-over-FR-over-GRE-over-IP specific bits */
-	struct {
-		struct osmo_fd fd;
-		uint32_t local_ip;
-		unsigned int enabled:1;
-	} frgre;
-};
-
-enum nsvc_timer_mode {
-	/* standard timers */
-	NSVC_TIMER_TNS_TEST,
-	NSVC_TIMER_TNS_ALIVE,
-	NSVC_TIMER_TNS_RESET,
-	_NSVC_TIMER_NR,
-};
-
-/*! \brief Structure representing a single NS-VC */
-struct gprs_nsvc {
-	/*! \brief list of NS-VCs within NS Instance */
-	struct llist_head list;
-	/*! \brief pointer to NS Instance */
-	struct gprs_ns_inst *nsi;
-
-	uint16_t nsei;	/*! \brief end-to-end significance */
-	uint16_t nsvci;	/*! \brief uniquely identifies NS-VC at SGSN */
-
-	uint32_t state;
-	uint32_t remote_state;
-
-	struct osmo_timer_list timer;
-	enum nsvc_timer_mode timer_mode;
-	int alive_retries;
-
-	unsigned int remote_end_is_sgsn:1;
-	unsigned int persistent:1;
-
-	struct rate_ctr_group *ctrg;
-
-	/*! \brief which link-layer are we based on? */
-	enum gprs_ns_ll ll;
-
-	union {
-		struct {
-			struct sockaddr_in bts_addr;
-		} ip;
-		struct {
-			struct sockaddr_in bts_addr;
-		} frgre;
-	};
-};
-
-/* Create a new NS protocol instance */
-struct gprs_ns_inst *gprs_ns_instantiate(gprs_ns_cb_t *cb, void *ctx);
-
-/* Destroy a NS protocol instance */
-void gprs_ns_destroy(struct gprs_ns_inst *nsi);
-
-/* Listen for incoming GPRS packets via NS/UDP */
-int gprs_ns_nsip_listen(struct gprs_ns_inst *nsi);
-
-/* Establish a connection (from the BSS) to the SGSN */
-struct gprs_nsvc *gprs_ns_nsip_connect(struct gprs_ns_inst *nsi,
-					struct sockaddr_in *dest,
-					uint16_t nsei, uint16_t nsvci);
-
-
-struct sockaddr_in;
-
-/* main function for higher layers (BSSGP) to send NS messages */
-int gprs_ns_sendmsg(struct gprs_ns_inst *nsi, struct msgb *msg);
-
-int gprs_ns_tx_reset(struct gprs_nsvc *nsvc, uint8_t cause);
-int gprs_ns_tx_block(struct gprs_nsvc *nsvc, uint8_t cause);
-int gprs_ns_tx_unblock(struct gprs_nsvc *nsvc);
-
-/* Listen for incoming GPRS packets via NS/FR/GRE */
-int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi);
-
-struct gprs_nsvc *gprs_nsvc_create(struct gprs_ns_inst *nsi, uint16_t nsvci);
-void gprs_nsvc_delete(struct gprs_nsvc *nsvc);
-struct gprs_nsvc *gprs_nsvc_by_nsei(struct gprs_ns_inst *nsi, uint16_t nsei);
-struct gprs_nsvc *gprs_nsvc_by_nsvci(struct gprs_ns_inst *nsi, uint16_t nsvci);
-
-/* Initiate a RESET procedure (including timer start, ...)*/
-void gprs_nsvc_reset(struct gprs_nsvc *nsvc, uint8_t cause);
-
-/* Add NS-specific VTY stuff */
-int gprs_ns_vty_init(struct gprs_ns_inst *nsi);
-
-#define NS_ALLOC_SIZE	2048
-#define NS_ALLOC_HEADROOM 20
-static inline struct msgb *gprs_ns_msgb_alloc(void)
-{
-	return msgb_alloc_headroom(NS_ALLOC_SIZE, NS_ALLOC_HEADROOM, "GPRS/NS");
-}
-
-enum signal_ns {
-	S_NS_RESET,
-	S_NS_BLOCK,
-	S_NS_UNBLOCK,
-	S_NS_ALIVE_EXP,	/* Tns-alive expired more than N times */
-};
-
-struct ns_signal_data {
-	struct gprs_nsvc *nsvc;
-	uint8_t cause;
-};
-
-void gprs_ns_set_log_ss(int ss);
-
-/*! }@ */
-
-#endif
diff --git a/openbsc/include/osmocom/gprs/gprs_ns_frgre.h b/openbsc/include/osmocom/gprs/gprs_ns_frgre.h
deleted file mode 100644
index abcd43f..0000000
--- a/openbsc/include/osmocom/gprs/gprs_ns_frgre.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _GPRS_NS_FRGRE_H
-#define _GPRS_NS_FRGRE_H
-
-int gprs_ns_frgre_sendmsg(struct gprs_nsvc *nsvc, struct msgb *msg);
-
-#endif
diff --git a/openbsc/include/osmocom/gprs/protocol/Makefile.am b/openbsc/include/osmocom/gprs/protocol/Makefile.am
deleted file mode 100644
index 8255a95..0000000
--- a/openbsc/include/osmocom/gprs/protocol/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-libgbp_HEADERS = gsm_08_16.h gsm_08_18.h
-
-libgbpdir = $(includedir)/osmocom/gprs/protocol
diff --git a/openbsc/include/osmocom/gprs/protocol/gsm_08_16.h b/openbsc/include/osmocom/gprs/protocol/gsm_08_16.h
deleted file mode 100644
index 4c3eda3..0000000
--- a/openbsc/include/osmocom/gprs/protocol/gsm_08_16.h
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef _OSMO_08_16_H
-#define _OSMO_08_16_H
-
-/* GPRS Networks Service (NS) messages on the Gb interface
- * 3GPP TS 08.16 version 8.0.1 Release 1999 / ETSI TS 101 299 V8.0.1 (2002-05)
- * 3GPP TS 48.016 version 6.5.0 Release 6 / ETSI TS 148 016 V6.5.0 (2005-11) */
-
-#include <stdint.h>
-
-/*! \addtogroup libgb
- *  @{
- */
-
-/*! \file gprs_ns.h */
-
-/*! \brief Common header of GPRS NS */
-struct gprs_ns_hdr {
-	uint8_t pdu_type;	/*!< NS PDU type */
-	uint8_t data[0];	/*!< variable-length payload */
-} __attribute__((packed));
-
-/*! \brief NS PDU Type (TS 08.16, Section 10.3.7, Table 14) */
-enum ns_pdu_type {
-	NS_PDUT_UNITDATA	= 0x00,
-	NS_PDUT_RESET		= 0x02,
-	NS_PDUT_RESET_ACK	= 0x03,
-	NS_PDUT_BLOCK		= 0x04,
-	NS_PDUT_BLOCK_ACK	= 0x05,
-	NS_PDUT_UNBLOCK		= 0x06,
-	NS_PDUT_UNBLOCK_ACK	= 0x07,
-	NS_PDUT_STATUS		= 0x08,
-	NS_PDUT_ALIVE		= 0x0a,
-	NS_PDUT_ALIVE_ACK	= 0x0b,
-	/* TS 48.016 Section 10.3.7, Table 10.3.7.1 */
-	SNS_PDUT_ACK		= 0x0c,
-	SNS_PDUT_ADD		= 0x0d,
-	SNS_PDUT_CHANGE_WEIGHT	= 0x0e,
-	SNS_PDUT_CONFIG		= 0x0f,
-	SNS_PDUT_CONFIG_ACK	= 0x10,
-	SNS_PDUT_DELETE		= 0x11,
-	SNS_PDUT_SIZE		= 0x12,
-	SNS_PDUT_SIZE_ACK	= 0x13,
-};
-
-/*! \brief NS Control IE (TS 08.16, Section 10.3, Table 12) */
-enum ns_ctrl_ie {
-	NS_IE_CAUSE		= 0x00,
-	NS_IE_VCI		= 0x01,
-	NS_IE_PDU		= 0x02,
-	NS_IE_BVCI		= 0x03,
-	NS_IE_NSEI		= 0x04,
-	/* TS 48.016 Section 10.3, Table 10.3.1 */
-	NS_IE_IPv4_LIST		= 0x05,
-	NS_IE_IPv6_LIST		= 0x06,
-	NS_IE_MAX_NR_NSVC	= 0x07,
-	NS_IE_IPv4_EP_NR	= 0x08,
-	NS_IE_IPv6_EP_NR	= 0x09,
-	NS_IE_RESET_FLAG	= 0x0a,
-	NS_IE_IP_ADDR		= 0x0b,
-};
-
-/*! \brief NS Cause (TS 08.16, Section 10.3.2, Table 13) */
-enum ns_cause {
-	NS_CAUSE_TRANSIT_FAIL		= 0x00,
-	NS_CAUSE_OM_INTERVENTION	= 0x01,
-	NS_CAUSE_EQUIP_FAIL		= 0x02,
-	NS_CAUSE_NSVC_BLOCKED		= 0x03,
-	NS_CAUSE_NSVC_UNKNOWN		= 0x04,
-	NS_CAUSE_BVCI_UNKNOWN		= 0x05,
-	NS_CAUSE_SEM_INCORR_PDU		= 0x08,
-	NS_CAUSE_PDU_INCOMP_PSTATE	= 0x0a,
-	NS_CAUSE_PROTO_ERR_UNSPEC	= 0x0b,
-	NS_CAUSE_INVAL_ESSENT_IE	= 0x0c,
-	NS_CAUSE_MISSING_ESSENT_IE	= 0x0d,
-	/* TS 48.016 Section 10.3.2, Table 10.3.2.1 */
-	NS_CAUSE_INVAL_NR_IPv4_EP	= 0x0e,
-	NS_CAUSE_INVAL_NR_IPv6_EP	= 0x0f,
-	NS_CAUSE_INVAL_NR_NS_VC		= 0x10,
-	NS_CAUSE_INVAL_WEIGH		= 0x11,
-	NS_CAUSE_UNKN_IP_EP		= 0x12,
-	NS_CAUSE_UNKN_IP_ADDR		= 0x13,
-	NS_CAUSE_UNKN_IP_TEST_FAILED	= 0x14,
-};
-
-#endif
diff --git a/openbsc/include/osmocom/gprs/protocol/gsm_08_18.h b/openbsc/include/osmocom/gprs/protocol/gsm_08_18.h
deleted file mode 100644
index 3a351ea..0000000
--- a/openbsc/include/osmocom/gprs/protocol/gsm_08_18.h
+++ /dev/null
@@ -1,144 +0,0 @@
-#ifndef _OSMO_08_18_H
-#define _OSMO_08_18_H
-
-#include <stdint.h>
-
-/*! \brief Fixed BVCI definitions (Section 5.4.1) */
-#define BVCI_SIGNALLING	0x0000
-#define BVCI_PTM	0x0001
-
-/*! \brief BSSGP PDU types (Section 11.3.26 / Table 11.27) */
-enum bssgp_pdu_type {
-	/* PDUs between RL and BSSGP SAPs */
-	BSSGP_PDUT_DL_UNITDATA		= 0x00,
-	BSSGP_PDUT_UL_UNITDATA		= 0x01,
-	BSSGP_PDUT_RA_CAPABILITY	= 0x02,
-	BSSGP_PDUT_PTM_UNITDATA		= 0x03,
-	/* PDUs between GMM SAPs */
-	BSSGP_PDUT_PAGING_PS		= 0x06,
-	BSSGP_PDUT_PAGING_CS		= 0x07,
-	BSSGP_PDUT_RA_CAPA_UDPATE	= 0x08,
-	BSSGP_PDUT_RA_CAPA_UPDATE_ACK	= 0x09,
-	BSSGP_PDUT_RADIO_STATUS		= 0x0a,
-	BSSGP_PDUT_SUSPEND		= 0x0b,
-	BSSGP_PDUT_SUSPEND_ACK		= 0x0c,
-	BSSGP_PDUT_SUSPEND_NACK		= 0x0d,
-	BSSGP_PDUT_RESUME		= 0x0e,
-	BSSGP_PDUT_RESUME_ACK		= 0x0f,
-	BSSGP_PDUT_RESUME_NACK		= 0x10,
-	/* PDus between NM SAPs */
-	BSSGP_PDUT_BVC_BLOCK		= 0x20,
-	BSSGP_PDUT_BVC_BLOCK_ACK	= 0x21,
-	BSSGP_PDUT_BVC_RESET		= 0x22,
-	BSSGP_PDUT_BVC_RESET_ACK	= 0x23,
-	BSSGP_PDUT_BVC_UNBLOCK		= 0x24,
-	BSSGP_PDUT_BVC_UNBLOCK_ACK	= 0x25,
-	BSSGP_PDUT_FLOW_CONTROL_BVC	= 0x26,
-	BSSGP_PDUT_FLOW_CONTROL_BVC_ACK	= 0x27,
-	BSSGP_PDUT_FLOW_CONTROL_MS	= 0x28,
-	BSSGP_PDUT_FLOW_CONTROL_MS_ACK	= 0x29,
-	BSSGP_PDUT_FLUSH_LL		= 0x2a,
-	BSSGP_PDUT_FLUSH_LL_ACK		= 0x2b,
-	BSSGP_PDUT_LLC_DISCARD		= 0x2c,
-	BSSGP_PDUT_SGSN_INVOKE_TRACE	= 0x40,
-	BSSGP_PDUT_STATUS		= 0x41,
-	/* PDUs between PFM SAP's */
-	BSSGP_PDUT_DOWNLOAD_BSS_PFC	= 0x50,
-	BSSGP_PDUT_CREATE_BSS_PFC	= 0x51,
-	BSSGP_PDUT_CREATE_BSS_PFC_ACK	= 0x52,
-	BSSGP_PDUT_CREATE_BSS_PFC_NACK	= 0x53,
-	BSSGP_PDUT_MODIFY_BSS_PFC	= 0x54,
-	BSSGP_PDUT_MODIFY_BSS_PFC_ACK	= 0x55,
-	BSSGP_PDUT_DELETE_BSS_PFC	= 0x56,
-	BSSGP_PDUT_DELETE_BSS_PFC_ACK	= 0x57,
-};
-
-/*! \brief BSSGP User-Data header (Section 10.2.1 and 10.2.2) */
-struct bssgp_ud_hdr {
-	uint8_t pdu_type;	/*!< BSSGP PDU type */
-	uint32_t tlli;		/*!< Temporary Link-Local Identifier */
-	uint8_t qos_profile[3];	/*!< QoS profile */
-	uint8_t data[0];	/* optional/conditional IEs as TLVs */
-} __attribute__((packed));
-
-/*! \brief BSSGP normal header */
-struct bssgp_normal_hdr {
-	uint8_t pdu_type;	/*!< BSSGP PDU type */
-	uint8_t data[0];	/*!< optional/conditional IEs as TLVs */
-};
-
-/*! \brief BSSGP Information Element Identifiers */
-enum bssgp_iei_type {
-	BSSGP_IE_ALIGNMENT		= 0x00,
-	BSSGP_IE_BMAX_DEFAULT_MS	= 0x01,
-	BSSGP_IE_BSS_AREA_ID		= 0x02,
-	BSSGP_IE_BUCKET_LEAK_RATE	= 0x03,
-	BSSGP_IE_BVCI			= 0x04,
-	BSSGP_IE_BVC_BUCKET_SIZE	= 0x05,
-	BSSGP_IE_BVC_MEASUREMENT	= 0x06,
-	BSSGP_IE_CAUSE			= 0x07,
-	BSSGP_IE_CELL_ID		= 0x08,
-	BSSGP_IE_CHAN_NEEDED		= 0x09,
-	BSSGP_IE_DRX_PARAMS		= 0x0a,
-	BSSGP_IE_EMLPP_PRIO		= 0x0b,
-	BSSGP_IE_FLUSH_ACTION		= 0x0c,
-	BSSGP_IE_IMSI			= 0x0d,
-	BSSGP_IE_LLC_PDU		= 0x0e,
-	BSSGP_IE_LLC_FRAMES_DISCARDED	= 0x0f,
-	BSSGP_IE_LOCATION_AREA		= 0x10,
-	BSSGP_IE_MOBILE_ID		= 0x11,
-	BSSGP_IE_MS_BUCKET_SIZE		= 0x12,
-	BSSGP_IE_MS_RADIO_ACCESS_CAP	= 0x13,
-	BSSGP_IE_OMC_ID			= 0x14,
-	BSSGP_IE_PDU_IN_ERROR		= 0x15,
-	BSSGP_IE_PDU_LIFETIME		= 0x16,
-	BSSGP_IE_PRIORITY		= 0x17,
-	BSSGP_IE_QOS_PROFILE		= 0x18,
-	BSSGP_IE_RADIO_CAUSE		= 0x19,
-	BSSGP_IE_RA_CAP_UPD_CAUSE	= 0x1a,
-	BSSGP_IE_ROUTEING_AREA		= 0x1b,
-	BSSGP_IE_R_DEFAULT_MS		= 0x1c,
-	BSSGP_IE_SUSPEND_REF_NR		= 0x1d,
-	BSSGP_IE_TAG			= 0x1e,
-	BSSGP_IE_TLLI			= 0x1f,
-	BSSGP_IE_TMSI			= 0x20,
-	BSSGP_IE_TRACE_REFERENC		= 0x21,
-	BSSGP_IE_TRACE_TYPE		= 0x22,
-	BSSGP_IE_TRANSACTION_ID		= 0x23,
-	BSSGP_IE_TRIGGER_ID		= 0x24,
-	BSSGP_IE_NUM_OCT_AFF		= 0x25,
-	BSSGP_IE_LSA_ID_LIST		= 0x26,
-	BSSGP_IE_LSA_INFORMATION	= 0x27,
-	BSSGP_IE_PACKET_FLOW_ID		= 0x28,
-	BSSGP_IE_PACKET_FLOW_TIMER	= 0x29,
-	BSSGP_IE_AGG_BSS_QOS_PROFILE	= 0x3a,
-	BSSGP_IE_FEATURE_BITMAP		= 0x3b,
-	BSSGP_IE_BUCKET_FULL_RATIO	= 0x3c,
-	BSSGP_IE_SERVICE_UTRAN_CCO	= 0x3d,
-};
-
-/*! \brief Cause coding (Section 11.3.8 / Table 11.10) */
-enum gprs_bssgp_cause {
-	BSSGP_CAUSE_PROC_OVERLOAD	= 0x00,
-	BSSGP_CAUSE_EQUIP_FAIL		= 0x01,
-	BSSGP_CAUSE_TRASIT_NET_FAIL	= 0x02,
-	BSSGP_CAUSE_CAPA_GREATER_0KPBS	= 0x03,
-	BSSGP_CAUSE_UNKNOWN_MS		= 0x04,
-	BSSGP_CAUSE_UNKNOWN_BVCI	= 0x05,
-	BSSGP_CAUSE_CELL_TRAF_CONG	= 0x06,
-	BSSGP_CAUSE_SGSN_CONG		= 0x07,
-	BSSGP_CAUSE_OML_INTERV		= 0x08,
-	BSSGP_CAUSE_BVCI_BLOCKED	= 0x09,
-	BSSGP_CAUSE_PFC_CREATE_FAIL	= 0x0a,
-	BSSGP_CAUSE_SEM_INCORR_PDU	= 0x20,
-	BSSGP_CAUSE_INV_MAND_INF	= 0x21,
-	BSSGP_CAUSE_MISSING_MAND_IE	= 0x22,
-	BSSGP_CAUSE_MISSING_COND_IE	= 0x23,
-	BSSGP_CAUSE_UNEXP_COND_IE	= 0x24,
-	BSSGP_CAUSE_COND_IE_ERR		= 0x25,
-	BSSGP_CAUSE_PDU_INCOMP_STATE	= 0x26,
-	BSSGP_CAUSE_PROTO_ERR_UNSPEC	= 0x27,
-	BSSGP_CAUSE_PDU_INCOMP_FEAT	= 0x28,
-};
-
-#endif
