diff options
author | Jouke Witteveen <j.witteveen@gmail.com> | 2012-12-28 02:38:58 +0100 |
---|---|---|
committer | Jouke Witteveen <j.witteveen@gmail.com> | 2012-12-28 02:38:58 +0100 |
commit | 4e457e0efd0e5fd5df24c7e9ed63b02d0196ea8d (patch) | |
tree | 09580c92ca78e8b9b54d7ed8d6b79d7fcd6fd9ff /src/netctl-auto | |
parent | 6737a37e5666837a8f51a2f74bdebdd756151394 (diff) | |
download | netctl-4e457e0efd0e5fd5df24c7e9ed63b02d0196ea8d.tar.gz netctl-4e457e0efd0e5fd5df24c7e9ed63b02d0196ea8d.tar.xz |
Forking netcfg to netctl (1/2)
This commit contains the moving of files.
Diffstat (limited to 'src/netctl-auto')
-rwxr-xr-x | src/netctl-auto | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/netctl-auto b/src/netctl-auto new file mode 100755 index 0000000..c6aaf67 --- /dev/null +++ b/src/netctl-auto @@ -0,0 +1,87 @@ +#! /bin/bash +. /usr/lib/network/network +. "$SUBR_DIR/8021x" +. "$SUBR_DIR/rfkill" +. /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 + PIDFILE="/run/wpa_actiond_${interface}.pid" + [[ -f "$IFACE_DIR/$interface" ]] && source "$IFACE_DIR/$interface" + netcfg -D "$interface" + timeout_wait 1 '[[ ! -f "$PIDFILE" ]]' || kill "$(< "$PIDFILE")" + # 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 -D "$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 + + printf "%s\n" "network={" "$(make_wpa_config)" "id_str=\"$profile\"" "}" >> "$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" &> /dev/null + +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 + |