diff --git a/openbsc/src/db.c b/openbsc/src/db.c
index dd74804..c6f00de 100644
--- a/openbsc/src/db.c
+++ b/openbsc/src/db.c
@@ -348,8 +348,8 @@
 	return 0;
 }
 
-int get_authinfo_by_subscr(struct gsm_auth_info *ainfo,
-			   struct gsm_subscriber *subscr)
+int db_get_authinfo_for_subscr(struct gsm_auth_info *ainfo,
+                               struct gsm_subscriber *subscr)
 {
 	dbi_result result;
 	const unsigned char *a3a8_ki;
@@ -377,8 +377,8 @@
 	return 0;
 }
 
-int set_authinfo_for_subscr(struct gsm_auth_info *ainfo,
-			    struct gsm_subscriber *subscr)
+int db_sync_authinfo_for_subscr(struct gsm_auth_info *ainfo,
+                                struct gsm_subscriber *subscr)
 {
 	dbi_result result;
 	struct gsm_auth_info ainfo_old;
@@ -400,7 +400,7 @@
 	}
 
 	/* Check if already existing */
-	rc = get_authinfo_by_subscr(&ainfo_old, subscr);
+	rc = db_get_authinfo_for_subscr(&ainfo_old, subscr);
 	if (rc && rc != -ENOENT)
 		return rc;
 	upd = rc ? 0 : 1;
@@ -433,8 +433,8 @@
 	return 0;
 }
 
-int get_lastauthtuple_by_subscr(struct gsm_auth_tuple *atuple,
-                                struct gsm_subscriber *subscr)
+int db_get_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
+                                    struct gsm_subscriber *subscr)
 {
 	dbi_result result;
 	int len;
@@ -486,8 +486,8 @@
 	return -EIO;
 }
 
-int set_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
-                                 struct gsm_subscriber *subscr)
+int db_sync_lastauthtuple_for_subscr(struct gsm_auth_tuple *atuple,
+                                     struct gsm_subscriber *subscr)
 {
 	dbi_result result;
 	int rc, upd;
@@ -509,7 +509,7 @@
 	}
 
 	/* Check if already existing */
-	rc = get_lastauthtuple_by_subscr(&atuple_old, subscr);
+	rc = db_get_lastauthtuple_for_subscr(&atuple_old, subscr);
 	if (rc && rc != -ENOENT)
 		return rc;
 	upd = rc ? 0 : 1;
diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c
index 0b6da04..bf88fc0 100644
--- a/openbsc/src/vty_interface_layer3.c
+++ b/openbsc/src/vty_interface_layer3.c
@@ -91,7 +91,7 @@
 		vty_out(vty, "    TMSI: %08X%s", subscr->tmsi,
 			VTY_NEWLINE);
 
-	rc = get_authinfo_by_subscr(&ainfo, subscr);
+	rc = db_get_authinfo_for_subscr(&ainfo, subscr);
 	if (!rc) {
 		vty_out(vty, "    A3A8 algorithm id: %d%s",
 			ainfo.auth_algo, VTY_NEWLINE);
@@ -100,7 +100,7 @@
 			VTY_NEWLINE);
 	}
 
-	rc = get_lastauthtuple_by_subscr(&atuple, subscr);
+	rc = db_get_lastauthtuple_for_subscr(&atuple, subscr);
 	if (!rc) {
 		vty_out(vty, "    A3A8 last tuple (used %d times):%s",
 			atuple.use_count, VTY_NEWLINE);
@@ -469,7 +469,7 @@
 
 	if (!strcasecmp(alg_str, "none")) {
 		/* Just erase */
-		rc = set_authinfo_for_subscr(NULL, subscr);
+		rc = db_sync_authinfo_for_subscr(NULL, subscr);
 	} else if (!strcasecmp(alg_str, "comp128v1")) {
 		/* Parse hex string Ki */
 		rc = hexparse(ki_str, ainfo.a3a8_ki, sizeof(ainfo.a3a8_ki));
@@ -479,7 +479,7 @@
 		/* Set the infos */
 		ainfo.auth_algo = AUTH_ALGO_COMP128v1;
 		ainfo.a3a8_ki_len = rc;
-		rc = set_authinfo_for_subscr(&ainfo, subscr);
+		rc = db_sync_authinfo_for_subscr(&ainfo, subscr);
 	} else {
 		/* Unknown method */
 		return CMD_WARNING;
