git: 94f671fb0ef2 - main - security/tailscale: Robustify rc.d script

From: Ashish SHUKLA <ashish_at_FreeBSD.org>
Date: Fri, 13 May 2022 04:12:27 UTC
The branch main has been updated by ashish:

URL: https://cgit.FreeBSD.org/ports/commit/?id=94f671fb0ef24b2b94a4b6d66228028a82e23b5d

commit 94f671fb0ef24b2b94a4b6d66228028a82e23b5d
Author:     Ashish SHUKLA <ashish@FreeBSD.org>
AuthorDate: 2022-05-11 04:37:09 +0000
Commit:     Ashish SHUKLA <ashish@FreeBSD.org>
CommitDate: 2022-05-13 04:11:09 +0000

    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
---
 security/tailscale/Makefile            | 1 +
 security/tailscale/files/tailscaled.in | 6 ++++++
 2 files changed, 7 insertions(+)

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}
 }