Author: rpaulo
Date: Wed Jun 26 04:00:52 2013
New Revision: 252230
URL: http://svnweb.freebsd.org/changeset/base/252230

Log:
  Implement ifconfig_wlanX="HOSTAP".
  
  Not only this is a bit cleaner, it allows multiple instances of hostapd to be
  running on the system host, useful for simultaneous dual-band WiFi.
  This is similar to ifconfig_wlanX="WPA" but it uses /etc/hostapd-wlanX.conf.
  Compatibility with hostapd_enable=YES/NO was kept.
  
  Reviewed by:  adrian

Modified:
  head/etc/network.subr
  head/etc/rc.d/hostapd

Modified: head/etc/network.subr
==============================================================================
--- head/etc/network.subr       Wed Jun 26 02:56:54 2013        (r252229)
+++ head/etc/network.subr       Wed Jun 26 04:00:52 2013        (r252230)
@@ -171,6 +171,9 @@ ifconfig_up()
        if wpaif $1; then
                /etc/rc.d/wpa_supplicant start $1
                _cfg=0          # XXX: not sure this should count
+       elif hostapif $1; then
+               /etc/rc.d/hostapd start $1
+               _cfg=0
        fi
 
        if dhcpif $1; then
@@ -198,6 +201,9 @@ ifconfig_down()
        if wpaif $1; then
                /etc/rc.d/wpa_supplicant stop $1
                _cfg=0
+       elif hostapif $1; then
+               /etc/rc.d/hostapd stop $1
+               _cfg=0
        fi
 
        if dhcpif $1; then
@@ -276,6 +282,7 @@ ifconfig_getargs()
                [Nn][Oo][Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp]) ;;
                [Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp]) ;;
                [Ww][Pp][Aa]) ;;
+               [Hh][Oo][Ss][Tt][Aa][Pp]) ;;
                *)
                        _args="$_args $_arg"
                        ;;
@@ -376,6 +383,24 @@ wpaif()
        return 1
 }
 
+# hostapif if
+#      Returns 0 if the interface is a HOSTAP interface and 1 otherwise.
+hostapif()
+{
+       local _tmpargs _arg
+       _tmpargs=`_ifconfig_getargs $1`
+
+       for _arg in $_tmpargs; do
+               case $_arg in
+               [Hh][Oo][Ss][Tt][Aa][Pp])
+                       return 0
+                       ;;
+               esac
+       done
+
+       return 1
+}
+
 # afexists af
 #      Returns 0 if the address family is enabled in the kernel
 #      1 otherwise.

Modified: head/etc/rc.d/hostapd
==============================================================================
--- head/etc/rc.d/hostapd       Wed Jun 26 02:56:54 2013        (r252229)
+++ head/etc/rc.d/hostapd       Wed Jun 26 04:00:52 2013        (r252230)
@@ -10,11 +10,18 @@
 . /etc/rc.subr
 
 name="hostapd"
-rcvar="hostapd_enable"
 command="/usr/sbin/${name}"
 
-conf_file="/etc/${name}.conf"
-pidfile="/var/run/${name}.pid"
+ifn="$2"
+if [ -z "$ifn" ]; then
+       rcvar="hostapd_enable"
+       conf_file="/etc/${name}.conf"
+       pidfile="/var/run/${name}.pid"
+else
+       rcvar=
+       conf_file="/etc/${name}-${ifn}.conf"
+       pidfile="/var/run/${name}-${ifn}.pid"
+fi
 
 command_args="-P ${pidfile} -B ${conf_file}"
 required_files="${conf_file}"
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to