From cfdfc8c05b6116b6d315a5ff9b535ca936573733 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Wed, 26 Jan 2011 11:33:54 +0000
Subject: [PATCH] mac80211: Add mac address filter configuration for hostapd

Add support of mac address filter. Now 'macfilter' and 'maclist' options
can be used with mac80211.

Patch from: kentarou matsuyama <matsuyama@thinktube.com>

SVN-Revision: 25105
---
 package/mac80211/files/lib/wifi/mac80211.sh | 23 ++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh
index b20785cf67..251c2f13d8 100644
--- a/package/mac80211/files/lib/wifi/mac80211.sh
+++ b/package/mac80211/files/lib/wifi/mac80211.sh
@@ -6,6 +6,9 @@ mac80211_hostapd_setup_base() {
 	local ifname="$2"
 
 	cfgfile="/var/run/hostapd-$phy.conf"
+	macfile="/var/run/hostapd-$phy.maclist"
+	[ -e "$macfile" ] && rm -f "$macfile"
+
 	config_get device "$vif" device
 	config_get country "$device" country
 	config_get hwmode "$device" hwmode
@@ -30,7 +33,25 @@ mac80211_hostapd_setup_base() {
 			[ -n "$ht_capab" ] && append base_cfg "ht_capab=$ht_capab" "$N"
 		}
 	}
-	cat > "$cfgfile" <<EOF
+
+	config_get macfilter "$vif" macfilter
+	case "$macfilter" in
+		allow)
+			append base_cfg "macaddr_acl=1" "$N"
+			append base_cfg "accept_mac_file=$macfile" "$N"
+			;;
+		deny)
+			append base_cfg "macaddr_acl=0" "$N"
+			append base_cfg "deny_mac_file=$macfile" "$N"
+			;;
+	esac
+	config_get maclist "$vif" maclist
+	[ -n "$maclist" ] && {
+		for mac in $maclist; do
+			echo "$mac" >> $macfile
+		done
+	}
+	cat >> "$cfgfile" <<EOF
 ctrl_interface=/var/run/hostapd-$phy
 driver=nl80211
 wmm_ac_bk_cwmin=4
-- 
2.25.1