diff --git a/openbsc/include/osmocom/gprs/gprs_bssgp.h b/openbsc/include/osmocom/gprs/gprs_bssgp.h
index e060fc0..66c2290 100644
--- a/openbsc/include/osmocom/gprs/gprs_bssgp.h
+++ b/openbsc/include/osmocom/gprs/gprs_bssgp.h
@@ -236,7 +236,7 @@
 #include <osmocom/gprs/gprs_msgb.h>
 
 /* BSSGP-UL-UNITDATA.ind */
-int gprs_bssgp_rcvmsg(struct msgb *msg);
+int bssgp_rcvmsg(struct msgb *msg);
 
 /* BSSGP-DL-UNITDATA.req */
 struct bssgp_lv {
@@ -252,8 +252,8 @@
 	struct bssgp_lv ms_ra_cap;
 	uint8_t qos_profile[3];
 };
-int gprs_bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime,
-			struct bssgp_dl_ud_par *dup);
+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,
@@ -292,12 +292,12 @@
 };
 
 /* Send a single GMM-PAGING.req to a given NSEI/NS-BVCI */
-int gprs_bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci,
-			 struct bssgp_paging_info *pinfo);
+int bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci,
+		    struct bssgp_paging_info *pinfo);
 
 /* gprs_bssgp_vty.c */
-int gprs_bssgp_vty_init(void);
-void gprs_bssgp_set_log_ss(int ss);
+int bssgp_vty_init(void);
+void bssgp_set_log_ss(int ss);
 
 int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx);
 
diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index 00a134f..b5b11fd 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -262,7 +262,7 @@
 	gbcfg.nsi = bssgp_nsi;
 	gprs_ns_vty_init(bssgp_nsi);
 	gprs_ns_set_log_ss(DNS);
-	gprs_bssgp_set_log_ss(DBSSGP);
+	bssgp_set_log_ss(DBSSGP);
 	osmo_signal_register_handler(SS_L_NS, &gbprox_signal, NULL);
 
 	rc = gbproxy_parse_config(config_file, &gbcfg);
diff --git a/openbsc/src/gprs/gprs_llc.c b/openbsc/src/gprs/gprs_llc.c
index be5fe52..c705c87 100644
--- a/openbsc/src/gprs/gprs_llc.c
+++ b/openbsc/src/gprs/gprs_llc.c
@@ -51,7 +51,7 @@
 	memcpy(&dup.qos_profile, qos_profile_default,
 		sizeof(qos_profile_default));
 
-	return gprs_bssgp_tx_dl_ud(msg, 1000, &dup);
+	return bssgp_tx_dl_ud(msg, 1000, &dup);
 }
 
 
diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c
index a45d344..a19af36 100644
--- a/openbsc/src/gprs/sgsn_libgtp.c
+++ b/openbsc/src/gprs/sgsn_libgtp.c
@@ -446,7 +446,7 @@
 		pinfo.ptmsi = &mm->p_tmsi;
 		pinfo.drx_params = mm->drx_parms;
 		pinfo.qos[0] = 0; // FIXME
-		rc = gprs_bssgp_tx_paging(mm->nsei, 0, &pinfo);
+		rc = bssgp_tx_paging(mm->nsei, 0, &pinfo);
 		rate_ctr_inc(&mm->ctrg->ctr[GMM_CTR_PAGING_PS]);
 		/* FIXME: queue the packet we received from GTP */
 		break;
diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c
index c3bc8d2..d1df094 100644
--- a/openbsc/src/gprs/sgsn_main.c
+++ b/openbsc/src/gprs/sgsn_main.c
@@ -88,7 +88,7 @@
 	switch (event) {
 	case GPRS_NS_EVT_UNIT_DATA:
 		/* hand the message into the BSSGP implementation */
-		rc = gprs_bssgp_rcvmsg(msg);
+		rc = bssgp_rcvmsg(msg);
 		break;
 	default:
 		LOGP(DGPRS, LOGL_ERROR, "SGSN: Unknown event %u from NS\n", event);
@@ -320,7 +320,7 @@
 		exit(1);
 
 	gprs_ns_set_log_ss(DNS);
-	gprs_bssgp_set_log_ss(DBSSGP);
+	bssgp_set_log_ss(DBSSGP);
 
 	sgsn_nsi = gprs_ns_instantiate(&sgsn_ns_cb, tall_bsc_ctx);
 	if (!sgsn_nsi) {
@@ -332,7 +332,7 @@
 	gprs_llc_init("/usr/local/lib/osmocom/crypt/");
 
 	gprs_ns_vty_init(bssgp_nsi);
-	gprs_bssgp_vty_init();
+	bssgp_vty_init();
 	gprs_llc_vty_init();
 	gprs_sndcp_vty_init();
 	/* FIXME: register signal handler for SS_L_NS */
diff --git a/openbsc/src/libgb/gprs_bssgp.c b/openbsc/src/libgb/gprs_bssgp.c
index 4775048..4b8c730 100644
--- a/openbsc/src/libgb/gprs_bssgp.c
+++ b/openbsc/src/libgb/gprs_bssgp.c
@@ -540,8 +540,8 @@
 }
 
 /* Receive a BSSGP PDU from a BSS on a PTP BVCI */
-static int gprs_bssgp_rx_ptp(struct msgb *msg, struct tlv_parsed *tp,
-			     struct bssgp_bvc_ctx *bctx)
+static int bssgp_rx_ptp(struct msgb *msg, struct tlv_parsed *tp,
+			struct bssgp_bvc_ctx *bctx)
 {
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_bssgph(msg);
@@ -619,8 +619,8 @@
 }
 
 /* Receive a BSSGP PDU from a BSS on a SIGNALLING BVCI */
-static int gprs_bssgp_rx_sign(struct msgb *msg, struct tlv_parsed *tp,
-				struct bssgp_bvc_ctx *bctx)
+static int bssgp_rx_sign(struct msgb *msg, struct tlv_parsed *tp,
+			 struct bssgp_bvc_ctx *bctx)
 {
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_bssgph(msg);
@@ -710,7 +710,7 @@
 }
 
 /* We expect msgb_bssgph() to point to the BSSGP header */
-int gprs_bssgp_rcvmsg(struct msgb *msg)
+int bssgp_rcvmsg(struct msgb *msg)
 {
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_bssgph(msg);
@@ -752,17 +752,17 @@
 	}
 
 	if (ns_bvci == BVCI_SIGNALLING)
-		rc = gprs_bssgp_rx_sign(msg, &tp, bctx);
+		rc = bssgp_rx_sign(msg, &tp, bctx);
 	else if (ns_bvci == BVCI_PTM)
 		rc = bssgp_tx_status(BSSGP_CAUSE_PDU_INCOMP_FEAT, NULL, msg);
 	else
-		rc = gprs_bssgp_rx_ptp(msg, &tp, bctx);
+		rc = bssgp_rx_ptp(msg, &tp, bctx);
 
 	return rc;
 }
 
-int gprs_bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime,
-			struct bssgp_dl_ud_par *dup)
+int bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime,
+		   struct bssgp_dl_ud_par *dup)
 {
 	struct bssgp_bvc_ctx *bctx;
 	struct bssgp_ud_hdr *budh;
@@ -851,8 +851,8 @@
 }
 
 /* Send a single GMM-PAGING.req to a given NSEI/NS-BVCI */
-int gprs_bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci,
-			 struct bssgp_paging_info *pinfo)
+int bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci,
+		     struct bssgp_paging_info *pinfo)
 {
 	struct msgb *msg = bssgp_msgb_alloc();
 	struct bssgp_normal_hdr *bgph =
@@ -913,7 +913,7 @@
 	return gprs_ns_sendmsg(bssgp_nsi, msg);
 }
 
-void gprs_bssgp_set_log_ss(int ss)
+void bssgp_set_log_ss(int ss)
 {
 	DBSSGP = ss;
 }
diff --git a/openbsc/src/libgb/gprs_bssgp_bss.c b/openbsc/src/libgb/gprs_bssgp_bss.c
index 4ca11ff..c058850 100644
--- a/openbsc/src/libgb/gprs_bssgp_bss.c
+++ b/openbsc/src/libgb/gprs_bssgp_bss.c
@@ -336,8 +336,8 @@
 }
 
 /* Parse a single GMM-PAGING.req to a given NSEI/NS-BVCI */
-int gprs_bssgp_rx_paging(struct bssgp_paging_info *pinfo,
-			 struct msgb *msg)
+int bssgp_rx_paging(struct bssgp_paging_info *pinfo,
+		    struct msgb *msg)
 {
 	struct bssgp_normal_hdr *bgph =
 			(struct bssgp_normal_hdr *) msgb_bssgph(msg);
diff --git a/openbsc/src/libgb/gprs_bssgp_vty.c b/openbsc/src/libgb/gprs_bssgp_vty.c
index 49a90c3..aa1f106 100644
--- a/openbsc/src/libgb/gprs_bssgp_vty.c
+++ b/openbsc/src/libgb/gprs_bssgp_vty.c
@@ -167,7 +167,7 @@
 	return CMD_SUCCESS;
 }
 
-int gprs_bssgp_vty_init(void)
+int bssgp_vty_init(void)
 {
 	install_element_ve(&show_bssgp_cmd);
 	install_element_ve(&show_bssgp_stats_cmd);
diff --git a/openbsc/src/libgb/libosmo-gb.map b/openbsc/src/libgb/libosmo-gb.map
index 60f85b2..83a8302 100644
--- a/openbsc/src/libgb/libosmo-gb.map
+++ b/openbsc/src/libgb/libosmo-gb.map
@@ -23,13 +23,12 @@
 bssgp_tx_suspend_ack;
 bssgp_tx_suspend_nack;
 bssgp_tx_ul_ud;
-
-gprs_bssgp_rcvmsg
-gprs_bssgp_rx_paging
-gprs_bssgp_set_log_ss
-gprs_bssgp_tx_dl_ud
-gprs_bssgp_tx_paging
-gprs_bssgp_vty_init
+bssgp_rcvmsg
+bssgp_rx_paging
+bssgp_set_log_ss
+bssgp_tx_dl_ud
+bssgp_tx_paging
+bssgp_vty_init
 
 gprs_ns_cause_str;
 gprs_ns_destroy;
