New example of a service: examples/var_service/zcip_if
[oweals/busybox.git] / examples / var_service / zcip_if / zcip_handler
diff --git a/examples/var_service/zcip_if/zcip_handler b/examples/var_service/zcip_if/zcip_handler
new file mode 100755 (executable)
index 0000000..13010db
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+# executed by zcip
+# parameters: $1 and environment
+# $1 is:
+#
+# init: zcip starts. Environment:
+# interface=eth0
+#
+# config: Address is obtained.
+# interface=eth0
+# ip=169.254.a.b
+#
+# deconfig: Conflict or link went down.
+# interface=eth0
+
+service=${PWD##*/}
+file_ipconf="$service.ipconf"
+dir_ipconf="/var/run/service/fw"
+
+exec >/dev/null
+#exec >>"$0.out"  #debug
+exec 2>&1
+
+echo "`date`: Params: $*"
+
+if test x"$1" != x"config"; then
+       # Reconfigure network with this interface disabled
+       echo "Deconfiguring"
+       rm "$file_ipconf"
+       rm "$dir_ipconf/$file_ipconf"
+       sv u /var/service/fw
+       exit
+fi
+
+# "config": we've got the address
+#env # debug
+
+./convert2ipconf "$file_ipconf"
+# Reconfigure routing and firewall if needed
+diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1
+if test $? != 0; then
+       echo "Reconfiguring fw"
+       mkdir -p "$dir_ipconf" 2>/dev/null
+       cp "$file_ipconf" "$dir_ipconf/$file_ipconf"
+       sv u /var/service/fw
+fi