diff --git a/openbsc/include/openbsc/bsc_msg_filter.h b/openbsc/include/openbsc/bsc_msg_filter.h
index 4ecd286..7e66517 100644
--- a/openbsc/include/openbsc/bsc_msg_filter.h
+++ b/openbsc/include/openbsc/bsc_msg_filter.h
@@ -14,12 +14,12 @@
 struct bsc_connection;
 struct nat_sccp_connection;
 
-struct bsc_nat_reject_cause {
+struct bsc_filter_reject_cause {
 	int lu_reject_cause;
 	int cm_reject_cause;
 };
 
-struct bsc_nat_barr_entry {
+struct bsc_filter_barr_entry {
 	struct rb_node node;
 
 	char *imsi;
@@ -27,7 +27,7 @@
 	int lu_reject_cause;
 };
 
-enum bsc_nat_acc_ctr {
+enum bsc_filter_acc_ctr {
 	ACC_LIST_LOCAL_FILTER,
 	ACC_LIST_GLOBAL_FILTER,
 };
@@ -58,18 +58,18 @@
 };
 
 
-int bsc_nat_barr_adapt(void *ctx, struct rb_root *rbtree, const struct osmo_config_list *);
-int bsc_nat_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu);
+int bsc_filter_barr_adapt(void *ctx, struct rb_root *rbtree, const struct osmo_config_list *);
+int bsc_filter_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu);
 
 /**
  * Content filtering.
  */
 int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg,
 			struct bsc_nat_parsed *, int *con_type, char **imsi,
-			struct bsc_nat_reject_cause *cause);
+			struct bsc_filter_reject_cause *cause);
 int bsc_nat_filter_dt(struct bsc_connection *bsc, struct msgb *msg,
 			struct nat_sccp_connection *con, struct bsc_nat_parsed *parsed,
-			struct bsc_nat_reject_cause *cause);
+			struct bsc_filter_reject_cause *cause);
 
 /* IMSI allow/deny handling */
 struct bsc_msg_acc_lst *bsc_msg_acc_lst_find(struct llist_head *lst, const char *name);
diff --git a/openbsc/src/libfilter/bsc_msg_filter.c b/openbsc/src/libfilter/bsc_msg_filter.c
index e72ec0a..5f8bff0 100644
--- a/openbsc/src/libfilter/bsc_msg_filter.c
+++ b/openbsc/src/libfilter/bsc_msg_filter.c
@@ -38,10 +38,10 @@
 
 #include <osmocom/sccp/sccp.h>
 
-int bsc_nat_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu)
+int bsc_filter_barr_find(struct rb_root *root, const char *imsi, int *cm, int *lu)
 {
-	struct bsc_nat_barr_entry *n;
-	n = rb_entry(root->rb_node, struct bsc_nat_barr_entry, node);
+	struct bsc_filter_barr_entry *n;
+	n = rb_entry(root->rb_node, struct bsc_filter_barr_entry, node);
 
 	while (n) {
 		int rc = strcmp(imsi, n->imsi);
@@ -53,20 +53,20 @@
 
 		n = rb_entry(
 			(rc < 0) ? n->node.rb_left : n->node.rb_right,
-			struct bsc_nat_barr_entry, node);
+			struct bsc_filter_barr_entry, node);
 	};
 
 	return 0;
 }
 
-static int insert_barr_node(struct bsc_nat_barr_entry *entry, struct rb_root *root)
+static int insert_barr_node(struct bsc_filter_barr_entry *entry, struct rb_root *root)
 {
 	struct rb_node **new = &root->rb_node, *parent = NULL;
 
 	while (*new) {
 		int rc;
-		struct bsc_nat_barr_entry *this;
-		this = rb_entry(*new, struct bsc_nat_barr_entry, node);
+		struct bsc_filter_barr_entry *this;
+		this = rb_entry(*new, struct bsc_filter_barr_entry, node);
 		parent = *new;
 
 		rc = strcmp(entry->imsi, this->imsi);
@@ -87,7 +87,7 @@
 	return 0;
 }
 
-int bsc_nat_barr_adapt(void *ctx, struct rb_root *root,
+int bsc_filter_barr_adapt(void *ctx, struct rb_root *root,
 			const struct osmo_config_list *list)
 {
 	struct osmo_config_entry *cfg_entry;
@@ -105,8 +105,8 @@
 
 	/* now adapt the new list */
 	llist_for_each_entry(cfg_entry, &list->entry, list) {
-		struct bsc_nat_barr_entry *entry;
-		entry = talloc_zero(ctx, struct bsc_nat_barr_entry);
+		struct bsc_filter_barr_entry *entry;
+		entry = talloc_zero(ctx, struct bsc_filter_barr_entry);
 		if (!entry) {
 			LOGP(DNAT, LOGL_ERROR,
 				"Allocation of the barr entry failed.\n");
@@ -143,7 +143,7 @@
 
 /* apply white/black list */
 static int auth_imsi(struct bsc_connection *bsc, const char *imsi,
-		struct bsc_nat_reject_cause *cause)
+		struct bsc_filter_reject_cause *cause)
 {
 	/*
 	 * Now apply blacklist/whitelist of the BSC and the NAT.
@@ -158,7 +158,7 @@
 	struct bsc_msg_acc_lst *bsc_lst = NULL;
 
 	/* 1. global check for barred imsis */
-	if (bsc_nat_barr_find(&bsc->nat->imsi_black_list, imsi, &cm, &lu)) {
+	if (bsc_filter_barr_find(&bsc->nat->imsi_black_list, imsi, &cm, &lu)) {
 		cause->cm_reject_cause = cm;
 		cause->lu_reject_cause = lu;
 		LOGP(DNAT, LOGL_DEBUG,
@@ -300,7 +300,7 @@
 static int _dt_check_id_resp(struct bsc_connection *bsc,
 			     uint8_t *data, unsigned int length,
 			     struct nat_sccp_connection *con,
-			     struct bsc_nat_reject_cause *cause)
+			     struct bsc_filter_reject_cause *cause)
 {
 	char mi_string[GSM48_MI_SIZE];
 	uint8_t mi_type;
@@ -330,7 +330,7 @@
 /* Filter out CR data... */
 int bsc_nat_filter_sccp_cr(struct bsc_connection *bsc, struct msgb *msg,
 			struct bsc_nat_parsed *parsed, int *con_type,
-			char **imsi, struct bsc_nat_reject_cause *cause)
+			char **imsi, struct bsc_filter_reject_cause *cause)
 {
 	struct tlv_parsed tp;
 	struct gsm48_hdr *hdr48;
@@ -414,7 +414,7 @@
 
 int bsc_nat_filter_dt(struct bsc_connection *bsc, struct msgb *msg,
 		struct nat_sccp_connection *con, struct bsc_nat_parsed *parsed,
-		struct bsc_nat_reject_cause *cause)
+		struct bsc_filter_reject_cause *cause)
 {
 	uint32_t len;
 	uint8_t msg_type, proto;
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat.c b/openbsc/src/osmo-bsc_nat/bsc_nat.c
index ebd291b..116c612 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat.c
@@ -426,7 +426,7 @@
  */
 static void bsc_send_con_release(struct bsc_connection *bsc,
 		struct nat_sccp_connection *con,
-		struct bsc_nat_reject_cause *cause)
+		struct bsc_filter_reject_cause *cause)
 {
 	struct msgb *rlsd;
 	/* 1. release the network */
@@ -476,7 +476,7 @@
 
 static void bsc_send_con_refuse(struct bsc_connection *bsc,
 			struct bsc_nat_parsed *parsed, int con_type,
-			struct bsc_nat_reject_cause *cause)
+			struct bsc_filter_reject_cause *cause)
 {
 	struct msgb *payload;
 	struct msgb *refuse;
@@ -1026,7 +1026,7 @@
 	struct bsc_connection *con_bsc = NULL;
 	int con_type;
 	struct bsc_nat_parsed *parsed;
-	struct bsc_nat_reject_cause cause;
+	struct bsc_filter_reject_cause cause;
 
 	/* Parse and filter messages */
 	parsed = bsc_nat_parse(msg);
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
index 502bddd..596ecae 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
@@ -503,7 +503,7 @@
 		int rc;
 		struct osmo_config_list *rewr = NULL;
 		rewr = osmo_config_list_parse(_nat, _nat->imsi_black_list_fn);
-		rc = bsc_nat_barr_adapt(_nat, &_nat->imsi_black_list, rewr);
+		rc = bsc_filter_barr_adapt(_nat, &_nat->imsi_black_list, rewr);
 		if (rc != 0) {
 			vty_out(vty, "%%There was an error parsing the list."
 				" Please see the error log.%s", VTY_NEWLINE);
@@ -513,7 +513,7 @@
 		return CMD_SUCCESS;
 	}
 
-	bsc_nat_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
+	bsc_filter_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
 	return CMD_SUCCESS;
 }
 
@@ -524,7 +524,7 @@
 {
 	talloc_free(_nat->imsi_black_list_fn);
 	_nat->imsi_black_list_fn = NULL;
-	bsc_nat_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
+	bsc_filter_barr_adapt(_nat, &_nat->imsi_black_list, NULL);
 	return CMD_SUCCESS;
 }
 
@@ -862,8 +862,8 @@
 	vty_out(vty, "IMSIs barred from the network:%s", VTY_NEWLINE);
 
 	for (node = rb_first(&_nat->imsi_black_list); node; node = rb_next(node)) {
-		struct bsc_nat_barr_entry *entry;
-		entry = rb_entry(node, struct bsc_nat_barr_entry, node);
+		struct bsc_filter_barr_entry *entry;
+		entry = rb_entry(node, struct bsc_filter_barr_entry, node);
 
 		vty_out(vty, " IMSI(%s) CM-Reject-Cause(%d) LU-Reject-Cause(%d)%s",
 			entry->imsi, entry->cm_reject_cause, entry->lu_reject_cause,
diff --git a/openbsc/tests/bsc-nat/bsc_nat_test.c b/openbsc/tests/bsc-nat/bsc_nat_test.c
index 61b3bd1..2020c7a 100644
--- a/openbsc/tests/bsc-nat/bsc_nat_test.c
+++ b/openbsc/tests/bsc-nat/bsc_nat_test.c
@@ -870,7 +870,7 @@
 	struct bsc_nat_parsed *parsed;
 	struct bsc_msg_acc_lst *nat_lst, *bsc_lst;
 	struct bsc_msg_acc_lst_entry *nat_entry, *bsc_entry;
-	struct bsc_nat_reject_cause cause;
+	struct bsc_filter_reject_cause cause;
 
 	struct bsc_nat *nat = bsc_nat_alloc();
 	struct bsc_connection *bsc = bsc_connection_alloc(nat);
@@ -947,7 +947,7 @@
 	int i;
 	struct msgb *msg = msgb_alloc(4096, "test_dt_filter");
 	struct bsc_nat_parsed *parsed;
-	struct bsc_nat_reject_cause cause;
+	struct bsc_filter_reject_cause cause;
 
 	struct bsc_nat *nat = bsc_nat_alloc();
 	struct bsc_connection *bsc = bsc_connection_alloc(nat);
@@ -1454,21 +1454,21 @@
 	if (lst == NULL)
 		abort();
 
-	rc = bsc_nat_barr_adapt(NULL, &root, lst);
+	rc = bsc_filter_barr_adapt(NULL, &root, lst);
 	if (rc != 0)
 		abort();
 	talloc_free(lst);
 
 
 	for (node = rb_first(&root); node; node = rb_next(node)) {
-		struct bsc_nat_barr_entry *entry;
-		entry = rb_entry(node, struct bsc_nat_barr_entry, node);
+		struct bsc_filter_barr_entry *entry;
+		entry = rb_entry(node, struct bsc_filter_barr_entry, node);
 		printf("IMSI: %s CM: %d LU: %d\n", entry->imsi,
 			entry->cm_reject_cause, entry->lu_reject_cause);
 	}
 
 	/* do the look up now.. */
-	rc = bsc_nat_barr_find(&root, "12123119", &cm, &lu);
+	rc = bsc_filter_barr_find(&root, "12123119", &cm, &lu);
 	if (!rc) {
 		printf("Failed to find the IMSI.\n");
 		abort();
@@ -1480,7 +1480,7 @@
 	}
 
 	/* empty and check that it is empty */
-	bsc_nat_barr_adapt(NULL, &root, NULL);
+	bsc_filter_barr_adapt(NULL, &root, NULL);
 	if (!RB_EMPTY_ROOT(&root)) {
 		printf("Failed to empty the list.\n");
 		abort();
@@ -1493,7 +1493,7 @@
 		abort();
 	}
 
-	rc = bsc_nat_barr_adapt(NULL, &root, lst);
+	rc = bsc_filter_barr_adapt(NULL, &root, lst);
 	if (rc != -1) {
 		printf("It should have failed due dup\n");
 		abort();
@@ -1502,13 +1502,13 @@
 
 	/* dump for reference */
 	for (node = rb_first(&root); node; node = rb_next(node)) {
-		struct bsc_nat_barr_entry *entry;
-		entry = rb_entry(node, struct bsc_nat_barr_entry, node);
+		struct bsc_filter_barr_entry *entry;
+		entry = rb_entry(node, struct bsc_filter_barr_entry, node);
 		printf("IMSI: %s CM: %d LU: %d\n", entry->imsi,
 			entry->cm_reject_cause, entry->lu_reject_cause);
 
 	}
-	rc = bsc_nat_barr_adapt(NULL, &root, NULL);
+	rc = bsc_filter_barr_adapt(NULL, &root, NULL);
 }
 
 static void test_nat_extract_lac()
