aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshish SHUKLA <ashish@FreeBSD.org>2022-05-11 04:37:09 +0000
committerAshish SHUKLA <ashish@FreeBSD.org>2022-05-13 04:11:09 +0000
commit94f671fb0ef24b2b94a4b6d66228028a82e23b5d (patch)
tree60f723e25c6b55e707399d4b9637c8696a4ede74
parent1430dabdb37f6c6aea8c089b78f8282a2c7b0ca5 (diff)
downloadports-94f671fb0ef24b2b94a4b6d66228028a82e23b5d.tar.gz
ports-94f671fb0ef24b2b94a4b6d66228028a82e23b5d.zip
security/tailscale: Robustify rc.d script
Check for orphaned network interface at the time of start, and if such an interface exists then destroy it before starting tailscaled. When tailscaled terminates unexpectedly it fails to cleanup, leaving the orphaned interface behind. This results in it failing to start until the interface is cleaned up, making it unsuitable for being monitored by a service monitoring software (e.g. monit) Reported by: ler
-rw-r--r--security/tailscale/Makefile1
-rw-r--r--security/tailscale/files/tailscaled.in6
2 files changed, 7 insertions, 0 deletions
diff --git a/security/tailscale/Makefile b/security/tailscale/Makefile
index 0a336ea028c9..93a2c9db290a 100644
--- a/security/tailscale/Makefile
+++ b/security/tailscale/Makefile
@@ -1,5 +1,6 @@
PORTNAME= tailscale
PORTVERSION= 1.24.2
+PORTREVISION= 1
DISTVERSIONPREFIX= v
CATEGORIES= security
diff --git a/security/tailscale/files/tailscaled.in b/security/tailscale/files/tailscaled.in
index b1cb480b92bc..9300e901357c 100644
--- a/security/tailscale/files/tailscaled.in
+++ b/security/tailscale/files/tailscaled.in
@@ -65,6 +65,12 @@ stop_postcmd="${name}_poststop"
tailscaled_start()
{
+ # Check for orphaned tailscale network interface
+ # And if it exists, then destroy it
+ /sbin/ifconfig ${tailscale_tap_dev} >/dev/null 2>&1 && (
+ /sbin/ifconfig ${tailscale_tap_dev} | fgrep -qw PID ||
+ /sbin/ifconfig ${tailscale_tap_dev} destroy
+ )
env CACHE_DIRECTORY=/var/db/tailscale /usr/sbin/daemon -f ${tailscaled_syslog_output_flags} -p ${pidfile} ${procname} --port ${tailscaled_port}
}