summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-scripts/net.modules.d/adsl.sh')
-rw-r--r--net-scripts/net.modules.d/adsl.sh93
1 files changed, 93 insertions, 0 deletions
diff --git a/net-scripts/net.modules.d/adsl.sh b/net-scripts/net.modules.d/adsl.sh
new file mode 100644
index 0000000..0dcc677
--- /dev/null
+++ b/net-scripts/net.modules.d/adsl.sh
@@ -0,0 +1,93 @@
+# Copyright (c) 2004-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Contributed by Roy Marples (uberlord@gentoo.org)
+
+# void adsl_depend(void)
+#
+# Sets up the dependancies for the module
+adsl_depend() {
+ before dhcp
+}
+
+# bool adsl_check_installed(void)
+#
+# Returns 1 if rp-pppoe is installed, otherwise 0
+adsl_check_installed() {
+ [[ -x /usr/sbin/adsl-start || -x /usr/sbin/pppoe-start ]] && return 0
+ ${1:-false} && eerror "For ADSL support, emerge net-dialup/rp-pppoe"
+ return 1
+}
+
+# bool adsl_setup_vars(char *iface)
+#
+# Checks to see if the ADSL script has been created or not
+adsl_setup_vars() {
+ local iface="$1" startstop="$2" cfgexe
+
+ if [[ -x /usr/sbin/pppoe-start ]]; then
+ exe="/usr/sbin/pppoe-${startstop}"
+ cfgexe=pppoe-setup
+ else
+ exe="/usr/sbin/adsl-${startstop}"
+ cfgexe=adsl-setup
+ fi
+
+ # Decide which configuration to use. Hopefully there is an
+ # interface-specific one
+ cfgfile="/etc/ppp/pppoe-${iface}.conf"
+ [[ -f ${cfgfile} ]] || cfgfile="/etc/ppp/pppoe.conf"
+
+ if [[ ! -f ${cfgfile} ]]; then
+ eerror "no pppoe.conf file found!"
+ eerror "Please run ${cfgexe} to create one"
+ return 1
+ fi
+
+ return 0
+}
+
+# bool adsl_start(char *iface)
+#
+# Start ADSL on an interface by calling adsl-start
+#
+# Returns 0 (true) when successful, non-zero otherwise
+adsl_start() {
+ local iface="$1" exe cfgfile user ifvar="$(bash_variable "$1")"
+
+ adsl_setup_vars "${iface}" start || return 1
+
+ # Might or might not be set in conf.d/net
+ user="adsl_user_${ifvar}"
+
+ # Start ADSL with the cfgfile, but override ETH and PIDFILE
+ einfo "Starting ADSL for ${iface}"
+ ${exe} <(cat "${cfgfile}"; \
+ echo "ETH=${iface}"; \
+ echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
+ [[ -n ${!user} ]] && echo "USER=${!user}") \
+ >/dev/null
+ eend $?
+}
+
+# bool adsl_stop(char *iface)
+#
+# Returns 0 when there is no ADSL to stop or we stop ADSL successfully
+# Otherwise 1
+adsl_stop() {
+ local iface="$1" exe cfgfile
+
+ adsl_check_installed || return 1
+ [[ ! -f "/var/run/rp-pppoe-${iface}.pid" ]] && return 0
+
+ adsl_setup_vars "${iface}" stop || return 1
+
+ einfo "Stopping ADSL for ${iface}"
+ ${exe} <(cat "${cfgfile}"; \
+ echo "ETH=${iface}"; echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid") \
+ >/dev/null
+ eend $?
+
+ return 0
+}
+
+# vim: set ft=sh ts=4 :