aboutsummaryrefslogtreecommitdiff
path: root/network/ipxnet/rc.ipxnet
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2018-08-03 05:57:19 +0700
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2018-08-04 08:17:11 +0700
commitc307650f720584677c21b0d311ff566df8b83dfc (patch)
tree378182019151f2409c0ac346b3cd520e1cb322f5 /network/ipxnet/rc.ipxnet
parentf516576ada936b719baa671f569f1a4b2ffabea9 (diff)
network/ipxnet: Added (tunnel IPX over TCP/IP).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'network/ipxnet/rc.ipxnet')
-rw-r--r--network/ipxnet/rc.ipxnet63
1 files changed, 63 insertions, 0 deletions
diff --git a/network/ipxnet/rc.ipxnet b/network/ipxnet/rc.ipxnet
new file mode 100644
index 0000000000000..22733ce0e8a3f
--- /dev/null
+++ b/network/ipxnet/rc.ipxnet
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+# "Simple" init script for SBo ipxnet, by B. Watson <yalhcru@gmail.com>. If
+# you need something fancier (multiple instances of ipxnet), feel free
+# to implement it here and send me the updated script. I'll add it to
+# the SBo build.
+
+# Note that ipxnet daemonizes itself immediately (before even checking if
+# it got the right number of command line arguments) and doesn't create a
+# PID file. Trying to capture the PID of the just-spawned ipxnet process
+# in this script is problematic, so I didn't bother with a PID file. We
+# can't even capture error messages (because it closed its stdout/stderr).
+
+# The default settings:
+IPXPORT=19900
+
+# If config file found, source it (can override IPXPORT)
+[ -e /etc/rc.d/rc.ipxnet.conf ] && source /etc/rc.d/rc.ipxnet.conf
+
+ok_fail() {
+ if [ "$?" = "0" ]; then
+ echo "OK"
+ exit 0
+ else
+ echo "FAIL"
+ exit 1
+ fi
+}
+
+# returns success if an ipxnet process is listening on our port.
+is_running() {
+ lsof +c 0 -i 4UDP:$IPXPORT | grep -q ipxnet-system
+}
+
+# ipxnet doesn't exit with error status if it fails to start. So we have
+# to check whether it started or not... we wait up to 20 sec or so, then
+# give up.
+check_start() {
+ for i in 0.2 0.5 1 3 6 10; do
+ sleep $i
+ is_running && return 0
+ done
+ return 1
+}
+
+case "${1:-start}" in
+ start)
+ echo -n "Starting ipxnet on UDP port $IPXPORT: "
+ if is_running; then
+ echo "Already running!"
+ exit 1
+ fi
+ /usr/sbin/ipxnet-system $IPXPORT
+ check_start
+ ok_fail
+ ;;
+
+ stop) echo -n "Stopping ipxnet: "; killall ipxnet-system ; ok_fail ;;
+
+ restart) $0 stop ; sleep 1; exec $0 start ;;
+
+ *) echo "Usage: $0 stop|stop|restart"
+esac