Lines 347-353
Link Here
|
347 |
# so we can fail gracefully without even trying to connect |
347 |
# so we can fail gracefully without even trying to connect |
348 |
iwconfig_associate() { |
348 |
iwconfig_associate() { |
349 |
local iface="$1" mode="${2:-managed}" |
349 |
local iface="$1" mode="${2:-managed}" |
350 |
local mac="$3" wep_required="$4" freq="$5" w="(WEP Disabled)" |
350 |
local mac="$3" wep_required="$4" freq="$5" chan="$6" w="(WEP Disabled)" |
351 |
local dessid="${ESSID//\\\\/\\\\}" key= |
351 |
local dessid="${ESSID//\\\\/\\\\}" key= |
352 |
|
352 |
|
353 |
iwconfig_set_mode "${iface}" "${mode}" |
353 |
iwconfig_set_mode "${iface}" "${mode}" |
Lines 378-384
Link Here
|
378 |
[[ ${key} != "off" ]] && w=$(iwconfig_get_wep_status "${iface}") |
378 |
[[ ${key} != "off" ]] && w=$(iwconfig_get_wep_status "${iface}") |
379 |
fi |
379 |
fi |
380 |
|
380 |
|
381 |
[[ -n ${freq} ]] && iwconfig "${iface}" freq "${freq}" |
381 |
# Only use channel or frequency |
|
|
382 |
if [[ -n ${chan} ]] ; then |
383 |
iwconfig "${iface}" channel "${chan}" |
384 |
elif [[ -n ${freq} ]] ; then |
385 |
iwconfig "${iface}" freq "${freq}" |
386 |
fi |
382 |
[[ -n ${mac} ]] && iwconfig "${iface}" ap "${mac}" |
387 |
[[ -n ${mac} ]] && iwconfig "${iface}" ap "${mac}" |
383 |
|
388 |
|
384 |
if ! iwconfig "${iface}" essid "${ESSID}" ; then |
389 |
if ! iwconfig "${iface}" essid "${ESSID}" ; then |
Lines 453-459
Link Here
|
453 |
[[ -z ${!x} || ${!x} -gt 0 ]] && sleep "${!x:-1}" |
458 |
[[ -z ${!x} || ${!x} -gt 0 ]] && sleep "${!x:-1}" |
454 |
|
459 |
|
455 |
local error=true i=-1 line= |
460 |
local error=true i=-1 line= |
456 |
local -a mac=() essid=() enc=() qual=() mode=() |
461 |
local -a mac=() essid=() enc=() qual=() mode=() freq=() chan=() |
457 |
|
462 |
|
458 |
while read line; do |
463 |
while read line; do |
459 |
error=false |
464 |
error=false |
Lines 476-482
Link Here
|
476 |
;; |
481 |
;; |
477 |
*Frequency:*) |
482 |
*Frequency:*) |
478 |
freq[i]="${line#*:}" |
483 |
freq[i]="${line#*:}" |
|
|
484 |
freq[i]="${freq[i]%% *}" |
479 |
;; |
485 |
;; |
|
|
486 |
*Channel:*) |
487 |
chan[i]="${line#*:}" |
488 |
chan[i]="${chan[i]%% *}" |
489 |
;; |
480 |
*Quality*) |
490 |
*Quality*) |
481 |
qual[i]="${line#*:}" |
491 |
qual[i]="${line#*:}" |
482 |
qual[i]="${qual[i]%/*}" |
492 |
qual[i]="${qual[i]%/*}" |
Lines 533-538
Link Here
|
533 |
unset mode[y] |
543 |
unset mode[y] |
534 |
unset enc[y] |
544 |
unset enc[y] |
535 |
unset freq[y] |
545 |
unset freq[y] |
|
|
546 |
unset chan[y] |
536 |
fi |
547 |
fi |
537 |
done |
548 |
done |
538 |
done |
549 |
done |
Lines 542-547
Link Here
|
542 |
mode=( "${mode[@]}" ) |
553 |
mode=( "${mode[@]}" ) |
543 |
enc=( "${enc[@]}" ) |
554 |
enc=( "${enc[@]}" ) |
544 |
freq=( "${freq[@]}" ) |
555 |
freq=( "${freq[@]}" ) |
|
|
556 |
chan=( "${chan[@]}" ) |
545 |
|
557 |
|
546 |
for (( i=0; i<${#mac[@]}; i++ )); do |
558 |
for (( i=0; i<${#mac[@]}; i++ )); do |
547 |
# Don't like ad-hoc nodes by default |
559 |
# Don't like ad-hoc nodes by default |
Lines 557-562
Link Here
|
557 |
mode_APs[i]="${mode[${sortline[x]}]}" |
569 |
mode_APs[i]="${mode[${sortline[x]}]}" |
558 |
enc_APs[i]="${enc[${sortline[x]}]}" |
570 |
enc_APs[i]="${enc[${sortline[x]}]}" |
559 |
freq_APs[i]="${freq[${sortline[x]}]}" |
571 |
freq_APs[i]="${freq[${sortline[x]}]}" |
|
|
572 |
chan_APs[i]="${chan[${sortline[x]}]}" |
560 |
done |
573 |
done |
561 |
|
574 |
|
562 |
return 0 |
575 |
return 0 |
Lines 629-634
Link Here
|
629 |
unset mac_APs[i] |
642 |
unset mac_APs[i] |
630 |
unset enc_APs[i] |
643 |
unset enc_APs[i] |
631 |
unset freq_APs[i] |
644 |
unset freq_APs[i] |
|
|
645 |
unset chan_APs[i] |
632 |
done |
646 |
done |
633 |
|
647 |
|
634 |
# We need to squash our arrays so indexes work again |
648 |
# We need to squash our arrays so indexes work again |
Lines 637-642
Link Here
|
637 |
mac_APs=( "${mac_APs[@]}" ) |
651 |
mac_APs=( "${mac_APs[@]}" ) |
638 |
enc_APs=( "${enc_APs[@]}" ) |
652 |
enc_APs=( "${enc_APs[@]}" ) |
639 |
freq_APs=( "${freq_APs[@]}" ) |
653 |
freq_APs=( "${freq_APs[@]}" ) |
|
|
654 |
chan_APs=( "${chan_APs[@]}" ) |
640 |
} |
655 |
} |
641 |
|
656 |
|
642 |
# bool iwconfig_force_preferred(char *iface) |
657 |
# bool iwconfig_force_preferred(char *iface) |
Lines 679-685
Link Here
|
679 |
if [[ ${essid} == "${essid_APs[i]}" ]]; then |
694 |
if [[ ${essid} == "${essid_APs[i]}" ]]; then |
680 |
ESSID="${essid}" |
695 |
ESSID="${essid}" |
681 |
iwconfig_associate "${iface}" "${mode_APs[i]}" "${mac_APs[i]}" \ |
696 |
iwconfig_associate "${iface}" "${mode_APs[i]}" "${mac_APs[i]}" \ |
682 |
"${enc_APs[i]}" "${freq_APs[i]}" && return 0 |
697 |
"${enc_APs[i]}" "${freq_APs[i]}" "${chan_APs[i]}" && return 0 |
683 |
break |
698 |
break |
684 |
fi |
699 |
fi |
685 |
done |
700 |
done |
Lines 706-712
Link Here
|
706 |
if ! ${has_preferred} ; then |
721 |
if ! ${has_preferred} ; then |
707 |
ESSID="${essid_APs[i]}" |
722 |
ESSID="${essid_APs[i]}" |
708 |
iwconfig_associate "${iface}" "${mode_APs[i]}" "${mac_APs[i]}" \ |
723 |
iwconfig_associate "${iface}" "${mode_APs[i]}" "${mac_APs[i]}" \ |
709 |
"${enc_APs[i]}" "${freq_APs[i]}" && return 0 |
724 |
"${enc_APs[i]}" "${freq_APs[i]}" "${chan_APs[i]}" && return 0 |
710 |
fi |
725 |
fi |
711 |
done |
726 |
done |
712 |
|
727 |
|
Lines 751-762
Link Here
|
751 |
unset mac_APs[j] |
766 |
unset mac_APs[j] |
752 |
unset enc_APs[j] |
767 |
unset enc_APs[j] |
753 |
unset freq_APs[j] |
768 |
unset freq_APs[j] |
|
|
769 |
unset chan_APs[j] |
754 |
# We need to squash our arrays so that indexes work |
770 |
# We need to squash our arrays so that indexes work |
755 |
essid_APs=( "${essid_APs[@]}" ) |
771 |
essid_APs=( "${essid_APs[@]}" ) |
756 |
mode_APs=( "${mode_APs[@]}" ) |
772 |
mode_APs=( "${mode_APs[@]}" ) |
757 |
mac_APs=( "${mac_APs[@]}" ) |
773 |
mac_APs=( "${mac_APs[@]}" ) |
758 |
enc_APs=( "${enc_APs[@]}" ) |
774 |
enc_APs=( "${enc_APs[@]}" ) |
759 |
freq_APs=( "${freq_APs[@]}" ) |
775 |
freq_APs=( "${freq_APs[@]}" ) |
|
|
776 |
chan_APs=( "${chan_APs[@]}" ) |
760 |
break |
777 |
break |
761 |
fi |
778 |
fi |
762 |
done |
779 |
done |
Lines 780-786
Link Here
|
780 |
# variables for the ESSID |
797 |
# variables for the ESSID |
781 |
iwconfig_configure() { |
798 |
iwconfig_configure() { |
782 |
local iface="$1" e= x= ifvar=$(bash_variable "$1") |
799 |
local iface="$1" e= x= ifvar=$(bash_variable "$1") |
783 |
local -a essid_APs=() mac_APs=() mode_APs=() enc_APs=() freq_APs=() |
800 |
local -a essid_APs=() mac_APs=() mode_APs=() |
|
|
801 |
local -a enc_APs=() freq_APs=() chan_APs=() |
784 |
|
802 |
|
785 |
ESSID="essid_${ifvar}" |
803 |
ESSID="essid_${ifvar}" |
786 |
ESSID="${!ESSID}" |
804 |
ESSID="${!ESSID}" |