diff options
Diffstat (limited to 'net.Linux/pump.sh')
-rw-r--r-- | net.Linux/pump.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/net.Linux/pump.sh b/net.Linux/pump.sh new file mode 100644 index 00000000..fd57fcda --- /dev/null +++ b/net.Linux/pump.sh @@ -0,0 +1,60 @@ +# Copyright 2004-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +pump_depend() { + program /sbin/pump + after interface + provide dhcp +} + +_config_vars="$_config_vars dhcp pump" + +pump_start() { + local args= opt= opts= + + _wait_for_carrier || return 1 + + # Get our options + eval opts=\$dhcp_${IFVAR} + [ -z "${opts}" ] && opts=${dhcp} + + # Map some generic options to dhcpcd + for opt in ${opts} ; do + case "${opt}" in + nodns) args="${args} --no-dns" ;; + nontp) args="${args} --no-ntp" ;; + nogateway) args="${args} --no-gateway" ;; + esac + done + + # Add our route metric + [ "${metric:-0}" != "0" ] && args="${args} --route-metric ${metric}" + + args="${args} --win-client-ident" + args="${args} --keep-up --interface ${IFACE}" + + ebegin "Running pump" + eval pump "${args}" + eend $? || return 1 + + _show_address + return 0 +} + +pump_stop() { + # We check for a pump process first as querying for status + # causes pump to spawn a process + start-stop-daemon --quiet --test --stop --exec /sbin/pump || return 0 + + # Check that pump is running on the interface + if ! pump --status --interface "${IFACE}" >/dev/null 2>/dev/null ; then + return 0 + fi + + # Pump always releases the lease + ebegin "Stopping pump on ${IFACE}" + pump --release --interface "${IFACE}" + eend $? "Failed to stop pump" +} + +# vim: set ts=4 : |