aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/zerotier/Makefile8
-rw-r--r--net/zerotier/files/zerotier.in32
-rw-r--r--net/zerotier/pkg-message10
3 files changed, 44 insertions, 6 deletions
diff --git a/net/zerotier/Makefile b/net/zerotier/Makefile
index 386f491ae618..c91b9427d1e8 100644
--- a/net/zerotier/Makefile
+++ b/net/zerotier/Makefile
@@ -3,7 +3,7 @@
PORTNAME= zerotier
DISTVERSION= 1.2.12
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= net
MAINTAINER= dch@FreeBSD.org
@@ -37,6 +37,12 @@ SUB_LIST+= ZEROTIER_SYSLOG="-s debug -T zerotier"
.else
SUB_LIST+= ZEROTIER_SYSLOG=""
.endif
+# after r347241 tun(4) and tap(4) have been merged to tuntap(4)
+.if (${OSVERSION} >= 1300028)
+SUB_LIST+= ZEROTIER_IF_TAP="if_tuntap"
+.else
+SUB_LIST+= ZEROTIER_IF_TAP="if_tap"
+.endif
.endif
do-install:
diff --git a/net/zerotier/files/zerotier.in b/net/zerotier/files/zerotier.in
index 87b66e7b3eef..0c2a12a7416d 100644
--- a/net/zerotier/files/zerotier.in
+++ b/net/zerotier/files/zerotier.in
@@ -12,29 +12,51 @@
#
# zerotier_enable (bool): Set to NO by default.
# Set it to YES to enable zerotier.
+# zerotier_wait_for_net (bool): Set to NO by default. Use for DHCP interfaces only
+# Set it to YES to require zerotier to wait until online
. /etc/rc.subr
name=zerotier
rcvar=zerotier_enable
+desc="peer-to-peer software-defined networking"
load_rc_config $name
-: ${zerotier_enable:="NO"}
+: ${zerotier_enable:=NO}
+: ${zerotier_wait_for_net:=NO}
-required_modules="if_tap"
+required_modules=%%ZEROTIER_IF_TAP%%
pidfile="/var/run/${name}.pid"
start_precmd="install -o root /dev/null ${pidfile}"
-command="/usr/sbin/daemon"
+command=/usr/sbin/daemon
command_args=" \
-c \
-t ${name} \
-r \
-P ${pidfile} \
%%ZEROTIER_SYSLOG%% \
- /usr/local/sbin/${name}-one"
+ %%PREFIX%%/sbin/${name}-one /var/db/${name}-one/"
+
+start_postcmd=start_postcmd
+
+start_postcmd()
+{ if checkyesno zerotier_wait_for_net; then
+ zerotier_count=5
+ until %%PREFIX%%/bin/zerotier-cli status |egrep -o ONLINE\$; do
+ warn ${name} is waiting for ONLINE status
+ sleep 2
+ zerotier_count=$((zerotier_count-1))
+ test $zerotier_count -le 0 && break
+ done
+ if test $zerotier_count -le 0; then
+ warn ${name} still not ONLINE, stopped blocking
+ else
+ warn ${name} is ONLINE
+ fi
+ fi
+}
run_rc_command "$1"
-
diff --git a/net/zerotier/pkg-message b/net/zerotier/pkg-message
index c0eade13a949..de5cd07c177d 100644
--- a/net/zerotier/pkg-message
+++ b/net/zerotier/pkg-message
@@ -17,4 +17,14 @@ net.link.tap.up_on_open=1
This avoids a race condition where zerotier interfaces are created, but
not up, prior to firewalls and services trying to use them.
+You can place optional configuration in /var/db/zerotier-one/local.conf
+as required, see documentation at https://www.zerotier.com/manual.shtml
+
+If your system boots from DHCP (such as a laptop), there is a new rc.conf
+flag that will require that system startup will wait until the zerotier
+network is established before proceeding. Note that this flag *does not*
+work for systems confgured with statically assigned IP addresses, and
+these will hang indefinitely due to an irreducible loop in rc(8) startup
+files. This flag is disabled by default.
+
#################################