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;
