hostapd: correctly handle macfile uci option
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 17 Jun 2013 11:59:29 +0000 (11:59 +0000)
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 17 Jun 2013 11:59:29 +0000 (11:59 +0000)
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 <antonio@open-mesh.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36944 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/network/services/hostapd/files/hostapd.sh

index 00c6a09..8d6f305 100644 (file)
@@ -215,10 +215,31 @@ hostapd_set_bss_options() {
                esac
        fi
 
                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"
        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
                        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() {
 }
 
 hostapd_set_log_options() {