summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Rayner <james@archlinux.org>2009-08-10 10:02:31 +0200
committerJames Rayner <james@archlinux.org>2009-08-10 10:02:31 +0200
commit6a019f77f23fc9d214d1a1679f90606a31396184 (patch)
tree70fd698bc264131e0b814ea27bf69edf2f92ceab /src
parentf7168ae05837a24060b41511be6e4626cb26828a (diff)
downloadnetctl-6a019f77f23fc9d214d1a1679f90606a31396184.tar.gz
netctl-6a019f77f23fc9d214d1a1679f90606a31396184.tar.xz
Added basic rfkill support; prototype connection query support
Diffstat (limited to 'src')
-rw-r--r--src/connections/ethernet7
-rw-r--r--src/connections/ethernet-iproute7
-rw-r--r--src/connections/wireless45
3 files changed, 58 insertions, 1 deletions
diff --git a/src/connections/ethernet b/src/connections/ethernet
index e24e9f5..38b341c 100644
--- a/src/connections/ethernet
+++ b/src/connections/ethernet
@@ -124,6 +124,13 @@ ethernet_down() {
esac
}
+# Returns status of profile - is it still functional?
+ethernet_status() {
+ if ! ip link show dev ra0|grep -q "state UP"; then
+ return 1
+ fi
+}
+
ethernet_$1 $2
exit $?
# vim: set ts=4 et sw=4:
diff --git a/src/connections/ethernet-iproute b/src/connections/ethernet-iproute
index 1a4a6e4..a6c4804 100644
--- a/src/connections/ethernet-iproute
+++ b/src/connections/ethernet-iproute
@@ -112,6 +112,13 @@ ethernet_down() {
}
+# Returns status of profile - is it still functional?
+ethernet_status() {
+ if ! ip link show dev ra0|grep -q "state UP"; then
+ return 1
+ fi
+}
+
ethernet_$1 $2
exit $?
# vim: set ts=4 et sw=4:
diff --git a/src/connections/wireless b/src/connections/wireless
index 8b43ed1..7394a20 100644
--- a/src/connections/wireless
+++ b/src/connections/wireless
@@ -1,12 +1,34 @@
#! /bin/bash
. /usr/lib/network/network
+
+rfkill_from_name() {
+ local name=$1
+ for rfkill in /sys/class/rfkill/*; do
+ if [[ "$(cat $rfkill/name)" == $name ]]; then
+ echo $rfkill
+ return 0
+ fi
+ done
+ echo "none"
+ return 1
+}
+
wireless_up() {
load_profile $1
. ${SUBR_DIR}/8021x
. ${SUBR_DIR}/wireless
+ # If rfkill is specified, enable device.
+ if [[ -n "$RFKILL_NAME" ]]; then
+ path=$(rfkill_from_name $RFKILL_NAME)
+ if [[ $? -ne 0 ]]; then
+ err_append "no rfkill switch with the name $RFKILL_NAME";
+ fi
+ echo 1 > ${path}/state
+ fi
+
# Check if interface exists
if [[ ! -e /sys/class/net/"$INTERFACE" ]]; then
if ! echo "$INTERFACE"|grep ":"; then
@@ -17,7 +39,7 @@ wireless_up() {
# Kill any lingering wpa_supplicants.
stop_wpa $INTERFACE
-
+
# Most drivers (mac80211) need mode set before device is brought up
# Drivers generally default to managed, but set this to be sure.
if [[ "$(iwgetid -sm $INTERFACE)" -ne "Managed" ]]; then
@@ -117,6 +139,27 @@ wireless_down() {
[[ "$SECURITY" == "wpa" ]] && rm -f "/tmp/wpa.${1// /}" # remove wpa config
iwconfig $INTERFACE essid off key off &> /dev/null
ifconfig $INTERFACE down
+
+ # If rfkill is specified, disable device.
+ if [[ -n "$RFKILL_NAME" ]]; then
+ path=$(rfkill_from_name $RFKILL_NAME)
+ if [[ $? -ne 0 ]]; then
+ err_append "no rfkill switch with the name $RFKILL_NAME";
+ fi
+ echo 0 > ${path}/state
+ fi
+
+}
+
+# Returns status of profile - is it still functional?
+wireless_status() {
+ load_profile $1
+ if [[ "$(iwgetid -r)" -ne $ESSID ]]; then
+ return 1
+ elif ! ip link show dev ra0|grep -q "state UP"; then
+ return 1
+ fi
+
}
wireless_$1 $2