#!/bin/bash
###############################################################################
# #
# IPFire.org - A linux based firewall #
# Copyright (C) 2012 IPFire Network Development Team #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see . #
# #
###############################################################################
function wireless_create() {
local device=${1}
local phy=$(phy_get ${2})
local type=${3}
local mac=${4}
assert isset device
assert isset phy
assert isset type
isset mac || mac=$(mac_generate)
assert phy_exists ${phy}
assert isoneof type managed __ap
iw phy ${phy} interface add ${device} type ${type}
if device_exists ${device}; then
device_set_address ${device} ${mac}
fi
device_set_up ${device}
}
function wireless_remove() {
local device=${1}
assert device_exists ${device}
device_set_down ${device}
iw dev ${device} del
}
function wireless_set_channel() {
local device=${1}
local channel=${2}
assert isset device
assert device_exists ${device}
assert isset channel
iw dev ${device} set channel ${channel} $@
}
function wpa_supplicant_config_write() {
local device=${1}
shift
assert isset device
local ssid
local encryption
local key
while [ $# -gt 0 ]; do
case "${1}" in
--ssid=*)
ssid=${1#--ssid=}
;;
--encryption=*)
encryption=${1#--encryption=}
;;
--key=*)
key=${1#--key=}
;;
esac
shift
done
assert isset ssid
assert isset encryption
assert isset key
cat < ${config_file}
wpa_supplicant -i ${device} -D wext -B -c ${config_file} \
-P ${config_dir}/pid
}
function wpa_supplicant_stop() {
local device=${1}
assert isset device
local pid=$(wpa_supplicant_get_pid ${device})
if isset pid; then
process_kill ${pid}
else
warning_log "Could not find pid file for wpa_supplicant process running for ${device}."
fi
rm -rf $(wpa_supplicant_config_dir ${device})
}
function wpa_supplicant_get_pid() {
local device=${1}
assert isset device
local pid_file="$(wpa_supplicant_config_dir ${device})/pid"
[ -e "${pid_file}" ] || return ${EXIT_ERROR}
cat ${pid_file} 2>/dev/null
return ${EXIT_OK}
}
function wpa_supplicant_is_running() {
local device=${1}
assert isset device
local pid=$(wpa_supplicant_get_pid ${device})
if isset pid && [ -d "/proc/${pid}" ]; then
return ${EXIT_OK}
fi
return ${EXIT_ERROR}
}
function wpa_supplicant_get_pid() {
local zone=${1}
shift
}
function wpa_supplicant_stop() {
local zone=${1}
shift
killall wpa_supplicant
}