Browse Source

improved the rc

added routing fixes and destroy interface (during start and stop) in case cjdns doesn't
Rany 4 years ago
parent
commit
529b3c9366
1 changed files with 32 additions and 0 deletions
  1. 32 0
      contrib/rcinit/cjdroute

+ 32 - 0
contrib/rcinit/cjdroute

@@ -1,6 +1,7 @@
 #! /bin/sh
 
 # PROVIDE: cjdroute
+# REQUIRE: networking
 # KEYWORD: shutdown
 
 # Add the following line to /etc/rc.conf to enable cjdroute:
@@ -18,4 +19,35 @@ load_rc_config $name
 command="/usr/local/bin/cjdroute"
 command_args=" < ${cjdroute_config}"
 
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+
+test ! -d /var/run/cjdroute/ && mkdir /var/run/cjdroute/
+
+if_cjd="$(cat /usr/local/etc/cjdroute.conf | egrep -o '"tunDevice": "t[a,u][p,n][0-9]{1,2}"' | egrep -o 't[a,u][p,n][0-9]{1,2}')"
+
+cjdroute_start() {
+ test ! -f /usr/local/etc/cjdroute.conf && (
+  logger -s -t cjdroute "Generate a configuration in /usr/local/etc/cjdroute.conf"
+  exit 1
+ )
+ if [ "$if_cjd" = "" ]; then logger -s -t cjdroute "Tunnel adapter not found. Specify adapter name in cjdroute.conf."; exit 1; fi
+ /sbin/ifconfig $if_cjd >/dev/null 2>&1
+ if [ "$?" = 0 ] ; then ifconfig $if_cjd destroy; fi
+ /sbin/ifconfig $if_cjd create || logger -s -t cjdroute "Failed to create ${if_cjd} adapter"
+ /usr/local/bin/cjdroute < /usr/local/etc/cjdroute.conf &
+ /sbin/route -6 add fc00::/8 -iface $if_cjd
+} 
+
+cjdroute_stop() {
+ logger -s -t cjdroute "Stopping cjdroute"
+ if [ "$rc_pid" != "" ]; then
+ kill -TERM $rc_pid ; fi
+ /sbin/ifconfig $if_cjd >/dev/null 1>/dev/null 2>dev/null
+ if [ "$?" = 0 ]; then /sbin/ifconfig $if_cjd destroy ||  logger -s -t cjdroute "Failed to destroy $if_cjd adapter"; fi
+}
+
+load_rc_config $name
+: ${cjdroute_enable:=no}
+
 run_rc_command "$1"