summaryrefslogtreecommitdiffstats
path: root/src/connections
diff options
context:
space:
mode:
authorThomas Bächler <thomas@archlinux.org>2011-12-08 23:22:59 +0100
committerThomas Bächler <thomas@archlinux.org>2011-12-08 23:25:14 +0100
commit2ca1000cb43de71d95061d78cb2affe01590247a (patch)
treea6a8a5f03a74a08ff517d865019d4c873ca36ef8 /src/connections
parent8dec3ca378062e538dd97eba1712338bbebc8f33 (diff)
downloadnetctl-2ca1000cb43de71d95061d78cb2affe01590247a.tar.gz
netctl-2ca1000cb43de71d95061d78cb2affe01590247a.tar.xz
Add PPPoE connection support
Diffstat (limited to 'src/connections')
-rw-r--r--src/connections/pppoe75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/connections/pppoe b/src/connections/pppoe
new file mode 100644
index 0000000..07eb9ae
--- /dev/null
+++ b/src/connections/pppoe
@@ -0,0 +1,75 @@
+#! /bin/bash
+. /usr/lib/network/network
+
+_quotestring() {
+ echo "\"${1/\"/\\\"}\""
+}
+
+pppoe_up() {
+ local cfg
+ load_profile "$1"
+
+ mkdir -p "$STATE_DIR"/pppoe.eth0."$1"/
+ chmod 700 "$STATE_DIR"/pppoe.eth0."$1"/
+ cfg="$STATE_DIR"/pppoe.eth0."$1"/options
+ : > "${cfg}"
+ chmod 600 "${cfg}"
+
+ echo "plugin rp-pppoe.so" >> "${cfg}"
+ echo "nic-${INTERFACE}" >> "${cfg}"
+ if checkyesno ${DEFAULTROUTE:-1}; then
+ echo "defaultroute" >> "${cfg}"
+ else
+ echo "nodefaultroute" >> "${cfg}"
+ fi
+ if checkyesno ${USEPEERDNS:-1}; then
+ echo "usepeerdns" >> "${cfg}"
+ fi
+ echo "linkname $(_quotestring "$1")" >> "${cfg}"
+ echo "maxfail 5" >> "${cfg}"
+ echo "updetach" >> "${cfg}"
+ if [[ ${CONNECTION_MODE} == demand ]]; then
+ echo "demand" >> "${cfg}"
+ echo "idle ${IDLE_TIMEOUT}" >> "${cfg}"
+ else
+ echo "persist" >> "${cfg}"
+ fi
+ echo "user $(_quotestring "${USER}")" >> "${cfg}"
+ echo "password $(_quotestring "${PASSWORD}")" >> "${cfg}"
+ [[ -n ${LCP_ECHO_INTERVAL} ]] && echo "lcp-echo-interval ${LCP_ECHO_INTERVAL}" >> "${cfg}"
+ [[ -n ${LCP_ECHO_FAILURE} ]] && echo "lcp-echo-failure ${LCP_ECHO_FAILURE}" >> "${cfg}"
+ [[ -n ${PPPOE_SERVICE} ]] && echo "rp_pppoe_service $(_quotestring "${PPPOE_SERVICE}")" >> "${cfg}"
+ [[ -n ${PPPOE_AC} ]] && echo "rp_pppoe_ac $(_quotestring "${PPPOE_AC}")" >> "${cfg}"
+ [[ -n ${PPPOE_SESSION} ]] && echo "rp_pppoe_sess $(_quotestring "${PPPOE_SESSION}")" >> "${cfg}"
+ [[ -n ${PPPOE_MAC} ]] && echo "pppoe-mac $(_quotestring "${PPPOE_MAC}")" >> "${cfg}"
+
+ /sbin/ip link set dev ${INTERFACE} up
+ /usr/sbin/pppd file "${cfg}"
+
+ if [[ $? -ne 0 ]]; then
+ rm "${cfg}"
+ rmdir "$STATE_DIR"/pppoe.eth0."$1"/
+ report_fail "Couldn't make pppd connection."
+ return 1
+ fi
+}
+
+pppoe_down() {
+ load_profile "$1"
+ local cfg
+ cfg="$STATE_DIR"/pppoe.eth0."$1"/options
+ PIDFILE="/var/run/ppp-$1.pid"
+
+ if [[ -e $PIDFILE ]]; then
+ PID=$(cat "$PIDFILE")
+ [[ -n "$PID" ]] && kill "$PID"
+ fi
+
+ rm "${cfg}"
+ rmdir "$STATE_DIR"/pppoe.eth0."$1"/
+}
+
+pppoe_$1 "$2"
+exit $?
+
+# vim: ft=sh ts=4 et sw=4: