diff --git a/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
index 97f2c92feb20e569b7207db784b434410adff152..c238cc1657c549ece445ac42a38f26fcc03c7d1c 100644
--- a/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
+++ b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
@@ -80,6 +80,16 @@ configure() {
 
 	config_load gateway
 	config_foreach add_babelpeer babelpeer
+
+
+	# configure babeld filters for custom ipv6 addresses
+	## remove old filters
+	babel_remove_custom_redistribute_filters
+
+	## add new filters set for client interface in gatewayconfig
+	for prefix in $(uci -q get gateway.@client[0].ip6addr); do
+		babel_add_redistribute_filter "$prefix"
+	done
 }
 
 apply() {
diff --git a/src/packages/fff/fff-babeld/files/lib/functions/fff/babel b/src/packages/fff/fff-babeld/files/lib/functions/fff/babel
index 0d19cef55b381837129dbdfecd58b328a6fbd67e..5eb679b8e45e791cebb55000a6f94f623f32b2ea 100644
--- a/src/packages/fff/fff-babeld/files/lib/functions/fff/babel
+++ b/src/packages/fff/fff-babeld/files/lib/functions/fff/babel
@@ -86,3 +86,36 @@ babel_delete_interface() {
 
 	return 0
 }
+
+babel_add_redistribute_filter() {
+	[ "$#" -ne "1" ] && return 1
+
+	local prefix="$1"
+
+	config=$(uci add babeld filter)
+	uci set babeld.$config.type='redistribute'
+	uci set babeld.$config.ip="$prefix"
+	uci set babeld.$config.addedbyautoconfig='true'
+
+	return 0
+}
+
+babel_remove_custom_redistribute_filters() {
+	[ "$#" -ne "0" ] && return 1
+
+	remove_filters() {
+		local name="$1"
+
+		# check if filter was added by configuregateway
+		if ! [ "$(uci -q get babeld.$name.addedbyautoconfig)" = 'true' ]; then
+			return
+		fi
+
+		uci -q del babeld.$name
+	}
+
+	config_load babeld
+	config_foreach remove_filters filter
+
+	return 0
+}