2 ###############################################################################
4 # IPFire.org - A linux based firewall #
5 # Copyright (C) 2012 IPFire Network Development Team #
7 # This program is free software: you can redistribute it and/or modify #
8 # it under the terms of the GNU General Public License as published by #
9 # the Free Software Foundation, either version 3 of the License, or #
10 # (at your option) any later version. #
12 # This program is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
17 # You should have received a copy of the GNU General Public License #
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
20 ###############################################################################
22 function wpa_supplicant_config_write
() {
32 while [ $# -gt 0 ]; do
38 encryption
=${1#--encryption=}
48 assert isset encryption
52 # WPA supplicant configuration for ${device}.
58 key_mgmt=${encryption}
67 function wpa_supplicant_config_dir
() {
72 echo "${RUN_DIR}/wireless/${device}"
75 function wpa_supplicant_start
() {
79 assert device_exists
${device}
81 local config_dir
=$
(wpa_supplicant_config_dir
${device})
82 mkdir
-p ${config_dir}
84 local config_file
=${config_dir}/config
85 wpa_supplicant_config_write
${device} $@
> ${config_file}
87 wpa_supplicant
-i ${device} -D wext
-B -c ${config_file} \
91 function wpa_supplicant_stop
() {
96 local pid
=$
(wpa_supplicant_get_pid
${device})
101 warning_log
"Could not find pid file for wpa_supplicant process running for ${device}."
104 rm -rf $
(wpa_supplicant_config_dir
${device})
107 function wpa_supplicant_get_pid
() {
112 local pid_file
="$(wpa_supplicant_config_dir ${device})/pid"
114 [ -e "${pid_file}" ] ||
return ${EXIT_ERROR}
116 cat ${pid_file} 2>/dev
/null
120 function wpa_supplicant_is_running
() {
125 local pid
=$
(wpa_supplicant_get_pid
${device})
127 if isset pid
&& [ -d "/proc/${pid}" ]; then
134 function wpa_supplicant_get_pid
() {
141 function wpa_supplicant_stop
() {
145 killall wpa_supplicant