blob: bb144c39d99bc049a0340b40266895a5a5694754 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#! /bin/bash
. /usr/lib/network/network
. $SUBR_DIR/8021x
. $SUBR_DIR/rfkill
. /etc/rc.conf
. /etc/conf.d/netcfg
AUTOWIFI="/usr/sbin/wpa_actiond -p /run/wpa_supplicant"
ACTION_SCRIPT="/usr/bin/netcfg-wpa_actiond-action"
case $1 in
help)
echo "netcfg-wpa_actiond <interface>"
echo "netcfg-wpa_actiond stop <interface>"
exit
;;
stop)
[[ -z $2 ]] && echo "Please specify an interface to stop" && exit 1
interface=$2
[[ -f "$IFACE_DIR/$interface" ]] && source "$IFACE_DIR/$interface"
netcfg -i "$interface"
stop_wpa "$interface"
kill $(cat "/run/wpa_actiond_${2}.pid")
# only try to disable software rfkill switches (FS#25514)
if [[ "$RFKILL" == "soft" ]]; then
set_rf_state "$interface" disabled $RFKILL_NAME || exit $?
fi
exit
;;
*)
interface=$1; shift
PIDFILE="/run/wpa_actiond_${interface}.pid"
EXTRA_AUTOWIFI_OPTIONS="$*"
;;
esac
if [[ -z $interface ]]; then
echo "No interface specified"
exit 1
fi
# Load interface specific config
[[ -f "$IFACE_DIR/$interface" ]] && source "$IFACE_DIR/$interface"
if [[ -f "$CONN_DIR/interfaces/$interface" ]]; then
netcfg -i $interface
fi
if [[ -n "$RFKILL" ]]; then # Enable radio if necessary
enable_rf $interface $RFKILL $RFKILL_NAME || exit $?
fi
WPA_CONF="$(make_wpa_config_file $interface)"
if [[ -n "${AUTO_PROFILES}" ]]; then
for prof in ${AUTO_PROFILES}; do echo $prof; done
else
list_profiles
fi | while read profile; do
echo "$profile"
(
load_profile "$profile"
[[ $CONNECTION != "wireless" ]] && exit 1
[[ $INTERFACE != $interface ]] && exit 1
# Exclude wpa-config, the wpa_conf is 'complete' and doesn't fit in this scheme
[[ -z "$SECURITY" ]] && SECURITY="none"
[[ $SECURITY == "wpa-config" ]] && exit 1
config=$(make_wpa_config)
echo -e "network={ \n$config \nid_str=\"$profile\" \n}" >> $WPA_CONF
)
done
[[ -z $WPA_DRIVER ]] && WPA_DRIVER="nl80211,wext"
WPA_OPTS="-W $WPA_OPTS"
# Kill any existing wpa_supplicant on this interface
stop_wpa "$interface"
if start_wpa $interface $WPA_CONF $WPA_DRIVER $WPA_OPTS; then
if $AUTOWIFI -i ${interface} -P ${PIDFILE} -a ${ACTION_SCRIPT} ${EXTRA_AUTOWIFI_OPTIONS}; then
exit 0
fi
fi
exit 1
|