mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2025-04-29 22:55:06 +03:00
72 lines
2 KiB
Bash
72 lines
2 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Put the mesh and meshctl binaries into /usr/local/bin
|
|
# Then copy this script into /etc/rc.d/mesh
|
|
# Finally, run:
|
|
# 1. chmod +x /etc/rc.d/mesh /usr/local/bin/{mesh,meshctl}
|
|
# 2. echo "mesh_enable=yes" >> /etc/rc.d
|
|
# 3. service mesh start
|
|
#
|
|
# PROVIDE: mesh
|
|
# REQUIRE: networking
|
|
# KEYWORD:
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="mesh"
|
|
rcvar="mesh_enable"
|
|
|
|
start_cmd="${name}_start"
|
|
stop_cmd="${name}_stop"
|
|
|
|
pidfile="/var/run/mesh/${name}.pid"
|
|
command="/usr/sbin/daemon"
|
|
command_args="-P ${pidfile} -r -f ${mesh_command}"
|
|
|
|
mesh_start()
|
|
{
|
|
test ! -x /usr/local/bin/mesh && (
|
|
logger -s -t mesh "Warning: /usr/local/bin/mesh is missing or not executable"
|
|
logger -s -t mesh "Copy the mesh binary into /usr/local/bin and then chmod +x /usr/local/bin/mesh"
|
|
return 1
|
|
)
|
|
|
|
test ! -f /etc/mesh.conf && (
|
|
logger -s -t mesh "Generating new configuration file into /etc/mesh.conf"
|
|
/usr/local/bin/mesh -genconf > /etc/mesh.conf
|
|
)
|
|
|
|
tap_path="$(cat /etc/mesh.conf | egrep -o '/dev/tap[0-9]{1,2}$')"
|
|
tap_name="$(echo -n ${tap_path} | tr -d '/dev/')"
|
|
|
|
/sbin/ifconfig ${tap_name} >/dev/null 2>&1 || (
|
|
logger -s -t mesh "Creating ${tap_name} adapter"
|
|
/sbin/ifconfig ${tap_name} create || logger -s -t mesh "Failed to create ${tap_name} adapter"
|
|
)
|
|
|
|
test ! -d /var/run/mesh && mkdir -p /var/run/mesh
|
|
|
|
logger -s -t mesh "Starting mesh"
|
|
${command} ${command_args} /usr/local/bin/mesh -useconffile /etc/mesh.conf \
|
|
1>/var/log/mesh.stdout.log \
|
|
2>/var/log/mesh.stderr.log &
|
|
}
|
|
|
|
mesh_stop()
|
|
{
|
|
logger -s -t mesh "Stopping mesh"
|
|
test -f /var/run/mesh/${name}.pid && kill -TERM $(cat /var/run/mesh/${name}.pid)
|
|
|
|
tap_path="$(cat /etc/mesh.conf | grep /dev/tap | egrep -o '/dev/.*$')"
|
|
tap_name="$(echo -n ${tap_path} | tr -d '/dev/')"
|
|
|
|
/sbin/ifconfig ${tap_name} >/dev/null 2>&1 && (
|
|
logger -s -t mesh "Destroying ${tap_name} adapter"
|
|
/sbin/ifconfig ${tap_name} destroy || logger -s -t mesh "Failed to destroy ${tap_name} adapter"
|
|
)
|
|
}
|
|
|
|
load_rc_config $name
|
|
: ${mesh_enable:=no}
|
|
|
|
run_rc_command "$1"
|