Date: Wed, 16 Feb 2011 11:20:28 -0500 From: John Nielsen <lists@jnielsen.net> To: freebsd-rc@freebsd.org Subject: [patch] rc support for multiple hostapd instances Message-ID: <D55ECF60-8BB5-4458-9BCC-495C39F50A78@jnielsen.net>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
I've been tinkering with various wireless setups recently, one of which required running WPA on two hostap virtual access points. I was surprised to see that support for this is not already present in our rc infrastructure. Running multiple instances of hostapd works just fine, so I hacked together the following. It add support for a new rc variable hostapd_conf_files, which defaults to only "/etc/hostapd.conf" but may contain a list of files. An instance of hostapd is started for each file in the list. For testing I have used
hostapd_conf_files="/etc/hostapd.conf /etc/hostapd2.conf"
in /etc/rc.conf.
Any suggestions or concerns? I would love to see this or something like it committed. I have not yet written a patch for rc.conf.5 but would be happy to.
JN
[-- Attachment #2 --]
--- defaults/rc.conf.orig 2011-02-16 10:27:51.000000000 -0500
+++ defaults/rc.conf 2011-02-16 10:30:13.000000000 -0500
@@ -256,7 +256,8 @@
# profile3 uses default ppp_mode and ppp_nat
### Network daemon (miscellaneous) ###
-hostapd_enable="NO" # Run hostap daemon.
+hostapd_enable="NO" # Run hostap daemon(s).
+hostapd_conf_files="/etc/hostapd.conf" # List of config files to start a daemon with.
syslogd_enable="YES" # Run syslog daemon (or NO).
syslogd_program="/usr/sbin/syslogd" # path to syslogd, if you want a different one.
syslogd_flags="-s" # Flags to syslogd (if enabled).
--- rc.d.norun/hostapd 2011-01-04 20:19:40.000000000 -0500
+++ rc.d/hostapd 2011-02-16 10:24:28.000000000 -0500
@@ -12,14 +12,17 @@
name="hostapd"
command="/usr/sbin/${name}"
rcvar=`set_rcvar`
+load_rc_config ${name}
-conf_file="/etc/${name}.conf"
-pidfile="/var/run/${name}.pid"
-
-command_args="-P ${pidfile} -B ${conf_file}"
-required_files="${conf_file}"
required_modules="wlan_xauth wlan_wep wlan_tkip wlan_ccmp"
extra_commands="reload"
-load_rc_config ${name}
-run_rc_command "$1"
+for conf_file in ${hostapd_conf_files}; do
+ #conf_file="/etc/${name}.conf"
+ pidfile="/var/run/hostapd`echo ${conf_file} | sed -e "s/\//_/g"`.pid"
+
+ command_args="-P ${pidfile} -B ${conf_file}"
+ required_files="${conf_file}"
+
+ run_rc_command "$1"
+done
[-- Attachment #3 --]
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D55ECF60-8BB5-4458-9BCC-495C39F50A78>
