aboutsummaryrefslogtreecommitdiff
path: root/examples/var_service/zcip_if/zcip_handler
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2015-10-24 05:30:58 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2015-10-24 05:30:58 +0200
commitd32a1a4054444d8193736ee4c5f515fa90dbb24f (patch)
tree4c0864109b27817fdfa78198c529f941555b5b23 /examples/var_service/zcip_if/zcip_handler
parent9a512176686d5f1548dc1e1c610af440a3ee0d73 (diff)
downloadbusybox-d32a1a4054444d8193736ee4c5f515fa90dbb24f.tar.gz
New example of a service: examples/var_service/zcip_if
Zeroconf for IPv4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'examples/var_service/zcip_if/zcip_handler')
-rwxr-xr-xexamples/var_service/zcip_if/zcip_handler46
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/var_service/zcip_if/zcip_handler b/examples/var_service/zcip_if/zcip_handler
new file mode 100755
index 000000000..13010db27
--- /dev/null
+++ b/examples/var_service/zcip_if/zcip_handler
@@ -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