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 wireless_create
() {
24 local phy
=$
(phy_get
${2})
32 isset mac || mac
=$
(mac_generate
)
34 assert phy_exists
${phy}
35 assert isoneof
type managed __ap
37 iw phy
${phy} interface add ${device} type ${type}
39 if device_exists
${device}; then
40 device_set_address
${device} ${mac}
43 device_set_up
${device}
46 function wireless_remove
() {
49 assert device_exists
${device}
51 device_set_down
${device}
56 function wireless_set_channel
() {
61 assert device_exists
${device}
64 iw dev
${device} set channel
${channel} $@
67 function wpa_supplicant_config_write
() {
77 while [ $# -gt 0 ]; do
83 encryption
=${1#--encryption=}
93 assert isset encryption
97 # WPA supplicant configuration for ${device}.
103 key_mgmt=${encryption}
112 function wpa_supplicant_config_dir
() {
117 echo "${RUN_DIR}/wireless/${device}"
120 function wpa_supplicant_start
() {
124 assert device_exists
${device}
126 local config_dir
=$
(wpa_supplicant_config_dir
${device})
127 mkdir
-p ${config_dir}
129 local config_file
=${config_dir}/config
130 wpa_supplicant_config_write
${device} $@
> ${config_file}
132 wpa_supplicant
-i ${device} -D wext
-B -c ${config_file} \
136 function wpa_supplicant_stop
() {
141 local pid
=$
(wpa_supplicant_get_pid
${device})
146 warning_log
"Could not find pid file for wpa_supplicant process running for ${device}."
149 rm -rf $
(wpa_supplicant_config_dir
${device})
152 function wpa_supplicant_get_pid
() {
157 local pid_file
="$(wpa_supplicant_config_dir ${device})/pid"
159 [ -e "${pid_file}" ] ||
return ${EXIT_ERROR}
161 cat ${pid_file} 2>/dev
/null
165 function wpa_supplicant_is_running
() {
170 local pid
=$
(wpa_supplicant_get_pid
${device})
172 if isset pid
&& [ -d "/proc/${pid}" ]; then
179 function wpa_supplicant_get_pid
() {
186 function wpa_supplicant_stop
() {
190 killall wpa_supplicant