summaryrefslogtreecommitdiffstats
path: root/src/connections
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2012-02-23 01:01:31 +0100
committerJouke Witteveen <j.witteveen@gmail.com>2012-02-23 01:01:31 +0100
commit7ba4e6face203dd9c0dcef82c9be0d2e436d571a (patch)
treeccee42d2c4ef54fd0fe62eb997ddef621bbc56e9 /src/connections
parenta7307cfcbbd117a74c555c290f012e33e74e99ba (diff)
parent2ca1000cb43de71d95061d78cb2affe01590247a (diff)
downloadnetctl-7ba4e6face203dd9c0dcef82c9be0d2e436d571a.tar.gz
netctl-7ba4e6face203dd9c0dcef82c9be0d2e436d571a.tar.xz
Merge remote-tracking branch 'brain0/working'
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: