]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | set -e | |
3 | ||
4 | WAIT_ONLINE_METHOD="ifup" | |
5 | WAIT_ONLINE_IFACE="" | |
6 | WAIT_ONLINE_ADDRESS="" | |
7 | WAIT_ONLINE_TIMEOUT=300 | |
8 | ||
9 | [ -f /etc/default/networking ] && . /etc/default/networking | |
10 | ||
11 | case "$WAIT_ONLINE_METHOD" in | |
12 | route) | |
13 | [ -n "$WAIT_ONLINE_ADDRESS" ] || WAIT_ONLINE_ADDRESS=default | |
14 | (/usr/bin/timeout "$WAIT_ONLINE_TIMEOUT" /sbin/ip mon r & /sbin/ip -4 r s; /sbin/ip -6 r s) | /bin/grep -q "^$WAIT_ONLINE_ADDRESS\>" | |
15 | ;; | |
16 | ||
17 | ping) | |
18 | if [ -z "$WAIT_ONLINE_ADDRESS" ]; then | |
19 | echo "No WAIT_ONLINE_ADDRESS specified" >&2 | |
20 | exit 1 | |
21 | fi | |
22 | /usr/bin/timeout "$WAIT_ONLINE_TIMEOUT" /bin/sh -c 'while ! /bin/ping -q -c 1 -W 1 "'$WAIT_ONLINE_ADDRESS'" >/dev/null; do sleep 1; done' | |
23 | ;; | |
24 | ||
25 | ping6) | |
26 | if [ -z "$WAIT_ONLINE_ADDRESS" ]; then | |
27 | echo "No WAIT_ONLINE_ADDRESS specified" >&2 | |
28 | exit 1 | |
29 | fi | |
30 | /usr/bin/timeout "$WAIT_ONLINE_TIMEOUT" /bin/sh -c 'while ! /bin/ping6 -q -c 1 -W 1 "'$WAIT_ONLINE_ADDRESS'" >/dev/null; do sleep 1; done' | |
31 | ;; | |
32 | ||
33 | ifup|iface|interface) | |
34 | up=false | |
35 | if [ -z "$WAIT_ONLINE_IFACE" ]; then | |
36 | auto_list="$(/sbin/ifquery -X lo --list)" | |
37 | hotplug_list="$(/sbin/ifquery -X lo --allow=hotplug --list)" | |
38 | if [ -n "$auto_list" ]; then | |
39 | for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do | |
40 | up=true | |
41 | for iface in $auto_list; do | |
42 | if ! /sbin/ifquery --state $iface >/dev/null; then | |
43 | up=false | |
44 | break | |
45 | fi | |
46 | done | |
47 | if [ $up = true ]; then | |
48 | break | |
49 | fi | |
50 | sleep 1 | |
51 | done | |
52 | elif [ -n "$hotplug_list" ]; then | |
53 | for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do | |
54 | if [ -n "$(/sbin/ifquery --state $hotplug_list)" ]; then | |
55 | up=true | |
56 | break | |
57 | fi | |
58 | sleep 1 | |
59 | done | |
60 | else | |
61 | exit 0 | |
62 | fi | |
63 | else | |
64 | for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do | |
65 | if [ -n "$(/sbin/ifquery --state $WAIT_ONLINE_IFACE)" ]; then | |
66 | up=true | |
67 | break | |
68 | fi | |
69 | sleep 1 | |
70 | done | |
71 | fi | |
72 | [ $up = true ] || exit 1 | |
73 | ;; | |
74 | ||
75 | no|none) | |
76 | exit 0 | |
77 | ;; | |
78 | ||
79 | *) | |
80 | echo "Unknown wait method $WAIT_ONLINE_METHOD" >&2 | |
81 | exit 1 | |
82 | ;; | |
83 | esac |