aboutsummaryrefslogtreecommitdiff
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
parent9a512176686d5f1548dc1e1c610af440a3ee0d73 (diff)
downloadbusybox-w32-d32a1a4054444d8193736ee4c5f515fa90dbb24f.tar.gz
busybox-w32-d32a1a4054444d8193736ee4c5f515fa90dbb24f.tar.bz2
busybox-w32-d32a1a4054444d8193736ee4c5f515fa90dbb24f.zip
New example of a service: examples/var_service/zcip_if
Zeroconf for IPv4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--examples/var_service/zcip_if/README5
-rwxr-xr-xexamples/var_service/zcip_if/convert2ipconf22
-rwxr-xr-xexamples/var_service/zcip_if/log/run21
-rwxr-xr-xexamples/var_service/zcip_if/p_log4
-rwxr-xr-xexamples/var_service/zcip_if/run20
-rwxr-xr-xexamples/var_service/zcip_if/w_log4
-rwxr-xr-xexamples/var_service/zcip_if/zcip_handler46
7 files changed, 122 insertions, 0 deletions
diff --git a/examples/var_service/zcip_if/README b/examples/var_service/zcip_if/README
new file mode 100644
index 000000000..4ddccb22d
--- /dev/null
+++ b/examples/var_service/zcip_if/README
@@ -0,0 +1,5 @@
1The real README file is one directory up.
2
3This directory's run script can have useful comments.
4If it doesn't but you feel it should, please send a patch
5to busybox's mailing list.
diff --git a/examples/var_service/zcip_if/convert2ipconf b/examples/var_service/zcip_if/convert2ipconf
new file mode 100755
index 000000000..aa133d815
--- /dev/null
+++ b/examples/var_service/zcip_if/convert2ipconf
@@ -0,0 +1,22 @@
1#!/bin/sh
2# convert:
3
4#interface=eth1
5#ip=169.254.x.y
6
7#let cfg=cfg+1
8#if[$cfg]=...; ip[$cfg]=...; ipmask[$cfg]=.../...; gw[$cfg]=...; net[$cfg]=... dns[$cfg]=...
9
10exec >/dev/null
11#exec >"$0.out" # debug
12exec 2>&1
13
14test "$interface" || exit 1
15test "$ip" || exit 1
16
17{
18echo "let cfg=cfg+1"
19test "$interface" && echo "if[\$cfg]='$interface'"
20test "$ip" && echo "ip[\$cfg]='$ip'"
21test "$ip" && echo "ipmask[\$cfg]='$ip/16'"
22} >"$1"
diff --git a/examples/var_service/zcip_if/log/run b/examples/var_service/zcip_if/log/run
new file mode 100755
index 000000000..560d1b19f
--- /dev/null
+++ b/examples/var_service/zcip_if/log/run
@@ -0,0 +1,21 @@
1#!/bin/sh
2
3user=logger
4
5logdir="/var/log/service/`(cd ..;basename $PWD)`"
6mkdir -p "$logdir" 2>/dev/null
7chown -R "$user": "$logdir"
8chmod -R go-rwxst,u+rwX "$logdir"
9rm logdir
10ln -s "$logdir" logdir
11
12# make this dir accessible to logger
13chmod a+rX .
14
15exec >/dev/null
16exec 2>&1
17exec \
18env - PATH="$PATH" \
19softlimit \
20setuidgid "$user" \
21svlogd -tt "$logdir"
diff --git a/examples/var_service/zcip_if/p_log b/examples/var_service/zcip_if/p_log
new file mode 100755
index 000000000..a2521be05
--- /dev/null
+++ b/examples/var_service/zcip_if/p_log
@@ -0,0 +1,4 @@
1#!/bin/sh
2
3cd log/logdir || exit 1
4cat @* current | $PAGER
diff --git a/examples/var_service/zcip_if/run b/examples/var_service/zcip_if/run
new file mode 100755
index 000000000..94a875465
--- /dev/null
+++ b/examples/var_service/zcip_if/run
@@ -0,0 +1,20 @@
1#!/bin/sh
2
3exec 2>&1
4exec </dev/null
5
6pwd="$PWD"
7
8if="${PWD##*/zcip_}"
9
10echo "* Upping iface $if"
11ip link set dev "$if" up
12
13echo "* Starting zcip"
14exec \
15env - PATH="$PATH" \
16softlimit \
17setuidgid root \
18zcip -fvv \
19 "$if" \
20 "$pwd/zcip_handler"
diff --git a/examples/var_service/zcip_if/w_log b/examples/var_service/zcip_if/w_log
new file mode 100755
index 000000000..aa36ef13b
--- /dev/null
+++ b/examples/var_service/zcip_if/w_log
@@ -0,0 +1,4 @@
1#!/bin/sh
2
3cd log/logdir || exit 1
4watch -n2 'w=`ttysize w`; h=`ttysize h`; tail -$((h-3)) current 2>&1 | cut -b1-$((w-2))'
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 @@
1#!/bin/sh
2# executed by zcip
3# parameters: $1 and environment
4# $1 is:
5#
6# init: zcip starts. Environment:
7# interface=eth0
8#
9# config: Address is obtained.
10# interface=eth0
11# ip=169.254.a.b
12#
13# deconfig: Conflict or link went down.
14# interface=eth0
15
16service=${PWD##*/}
17file_ipconf="$service.ipconf"
18dir_ipconf="/var/run/service/fw"
19
20exec >/dev/null
21#exec >>"$0.out" #debug
22exec 2>&1
23
24echo "`date`: Params: $*"
25
26if test x"$1" != x"config"; then
27 # Reconfigure network with this interface disabled
28 echo "Deconfiguring"
29 rm "$file_ipconf"
30 rm "$dir_ipconf/$file_ipconf"
31 sv u /var/service/fw
32 exit
33fi
34
35# "config": we've got the address
36#env # debug
37
38./convert2ipconf "$file_ipconf"
39# Reconfigure routing and firewall if needed
40diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1
41if test $? != 0; then
42 echo "Reconfiguring fw"
43 mkdir -p "$dir_ipconf" 2>/dev/null
44 cp "$file_ipconf" "$dir_ipconf/$file_ipconf"
45 sv u /var/service/fw
46fi