diff --git a/tinc-down b/tinc-down new file mode 100644 index 0000000..476cc72 --- /dev/null +++ b/tinc-down @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +has() { + command -v "$1" >/dev/null 2>&1 +} + +stop_dhclient() { + local interface="$1" + local pid_file="/var/run/dhclient.${interface}.pid" + if [[ "$OSTYPE" == "linux-gnu" ]]; then + dhclient -r -x + elif [[ -f "$pid_file" ] + kill "$(< $pid_file)" + fi +} + +if has dhcpcd; then + dhcpcd -k "$INTERFACE" +elif has dhclient; then + stop_dhcpclient "$INTERFACE" +elif [[ "$OSTYPE" == "darwin"* ]]; then # TODO untested + ipconfig set "$interface" NONE +fi +exit 0 + diff --git a/tinc-up b/tinc-up index 3fe66b1..eb170fd 100755 --- a/tinc-up +++ b/tinc-up @@ -67,6 +67,7 @@ set_ip() { start_dhclient() { local interface=$1 if [[ "$OSTYPE" == "linux-gnu" ]]; then + dhclient -x dhclient -nw "$interface" elif [[ "$OSTYPE" == "freebsd"* ]]; then dhclient -b "$interface"