diff options
Diffstat (limited to 'net/pump.sh')
-rw-r--r-- | net/pump.sh | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/net/pump.sh b/net/pump.sh new file mode 100644 index 00000000..4ab79293 --- /dev/null +++ b/net/pump.sh @@ -0,0 +1,59 @@ +# Copyright 2007-2008 Roy Marples <roy@marples.name> +# All rights reserved. Released under the 2-clause BSD license. + +pump_depend() +{ + program /sbin/pump + after interface + provide dhcp +} + +_config_vars="$_config_vars dhcp pump" + +pump_start() +{ + local args= opt= opts= + + # 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>&1; then + return 0 + fi + + # Pump always releases the lease + ebegin "Stopping pump on ${IFACE}" + pump --release --interface "${IFACE}" + eend $? "Failed to stop pump" +} |