You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

152 lines
3.6 KiB

# --- T2-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# T2 SDE: package/.../wireless-tools/rocknet_wireless.sh
# Copyright (C) 2004 - 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# 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; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- T2-COPYRIGHT-NOTE-END ---
iwdetect_mangle_cells() {
local essid=none mode= encryption= quality=
local line=
mkdir -p $rocknet_tmp_base/$if/
iwlist $if scan | while read line; do
if [[ $line = *ESSID* ]]; then
[ -n "$essid" ] && echo -e "$essid\t$mode\t$encryption\t$quality"
essid="$( echo "$line" | sed -e 's,.*"\(.*\)",\1,g' )"
mode=
encryption=
quality=
elif [[ $line = Mode:* ]]; then
mode=${line#*:}
elif [[ $line = Encryption* ]]; then
encryption=${line#*:}
elif [[ $line = *Quality* ]]; then
quality=$( echo "$line" | sed -e 's,:\([^ ]*\),:\1\n,g' | sed -e 's,^.*:,,g' | head -n 2 | tr '\n' '\t' )
elif [ -z "$line" ]; then
[ "$essid" != "none" ] && echo -e "$essid\t$mode\t$encryption\t$quality"
fi
done > $rocknet_tmp_base/$if/detected_cells
}
iwdetect_select_cell() {
local networkfile=${1:-/etc/conf/network-nettab}
local essid= key= extra=
local line=
if [ -f $networkfile ]; then
while read -r essid key extra; do
line="$( grep -e "^$essid" $rocknet_tmp_base/$if/detected_cells )"
if [ -n "$line" ]; then
echo "'$essid' selected..."
echo "$line" | ( read -r -d '\t' essid mode encryption quality signal;
iwconfig $if essid "$essid"
case "$mode" in
Master) iwconfig $if mode Managed ;;
Ad-Hoc) iwconfig $if mode "Ad-Hoc" ;;
*) echo "WARNING: Unknown mode '$mode'." ;;
esac
)
break
fi
done < $networkfile
else
echo "INFO: to use iwdetect you need to set a $networkfile."
fi
}
public_iwdetect() {
addcode up 4 2 "ip link set $if up"
addcode up 4 3 "iwdetect_mangle_cells"
addcode up 4 4 "iwdetect_select_cell $1"
addcode down 4 5 "iwconfig $if essid any"
}
public_essid() {
addcode up 4 5 "iwconfig $if essid $*"
addcode down 4 5 "iwconfig $if essid any"
}
public_nwid() {
addcode up 4 5 "iwconfig $if nwid $*"
addcode down 4 5 "iwconfig $if nwid off"
}
public_domain() {
addcode up 4 5 "iwconfig $if domain $*"
addcode down 4 5 "iwconfig $if domain off"
}
public_freq() {
addcode up 4 5 "iwconfig $if freq $*"
}
public_channel() {
addcode up 4 5 "iwconfig $if channel $*"
}
public_sens() {
addcode up 4 5 "iwconfig $if sens $*"
}
public_mode() {
addcode up 4 4 "iwconfig $if mode $*"
addcode down 4 4 "iwconfig $if mode Auto"
}
public_ap() {
addcode up 4 5 "iwconfig $if ap $*"
addcode down 4 5 "iwconfig $if ap any"
}
public_nick() {
addcode up 4 5 "iwconfig $if nick $*"
}
public_rate() {
addcode up 4 5 "iwconfig $if rate $*"
addcode down 4 5 "iwconfig $if rate auto"
}
public_rts() {
addcode up 4 5 "iwconfig $if rts $*"
}
public_frag() {
addcode up 4 5 "iwconfig $if frag $*"
}
public_key() {
addcode up 4 5 "iwconfig $if key $*"
addcode down 4 5 "iwconfig $if key off"
}
public_enc() {
addcode up 4 5 "iwconfig $if enc $*"
addcode down 4 5 "iwconfig $if enc off"
}
public_power() {
addcode up 4 5 "iwconfig $if power $*"
}
public_txpower() {
addcode up 4 5 "iwconfig $if txpower $*"
addcode down 4 5 "iwconfig $if txpower auto"
}
public_retry() {
addcode up 4 5 "iwconfig $if retry $*"
}
public_commit() {
addcode up 4 9 "iwconfig $if commit"
}