Browse Source

hostapd: correctly handle macfile uci option

Make hostapd.sh correctly handle the macfile uci option.

Such option specifies the macfile name to pass into the
hostapd configuration file. Moreover, if a maclist option
has been specified, copy the macfile before appending new
entries.

Signed-off-by: Antonio Quartulli <[email protected]>

SVN-Revision: 36944
Jo-Philipp Wich 12 years ago
parent
commit
541fbfbb9e
1 changed files with 24 additions and 9 deletions
  1. 24 9
      package/network/services/hostapd/files/hostapd.sh

+ 24 - 9
package/network/services/hostapd/files/hostapd.sh

@@ -215,10 +215,31 @@ hostapd_set_bss_options() {
 		esac
 	fi
 
-	config_get macfilter "$vif" macfilter
-	macfile="/var/run/hostapd-$ifname.maclist"
-	[ -e "$macfile" ] && rm -f "$macfile"
+	config_get macfile "$vif" macfile
+	config_get maclist "$vif" maclist
+	if [ -z "$macfile" ]
+	then
+		# if no macfile has been specified, fallback to the default name
+		macfile="/var/run/hostapd-$ifname.maclist"
+	else
+		if [ -n "$maclist" ]
+		then
+			# to avoid to overwrite the original file, make a copy
+			# before appending the entries specified by the maclist
+			# option
+			cp $macfile $macfile.maclist
+			macfile=$macfile.maclist
+		fi
+	fi
+
+	if [ -n "$maclist" ]
+	then
+		for mac in $maclist; do
+			echo "$mac" >> $macfile
+		done
+	fi
 
+	config_get macfilter "$vif" macfilter
 	case "$macfilter" in
 		allow)
 			append "$var" "macaddr_acl=1" "$N"
@@ -229,12 +250,6 @@ hostapd_set_bss_options() {
 			append "$var" "deny_mac_file=$macfile" "$N"
 			;;
 	esac
-	config_get maclist "$vif" maclist
-	[ -n "$maclist" ] && {
-		for mac in $maclist; do
-			echo "$mac" >> $macfile
-		done
-	}
 }
 
 hostapd_set_log_options() {