]> git.proxmox.com Git - ifupdown-pve.git/blame - wait-online.sh
Squashed 'src/' content from commit c732260
[ifupdown-pve.git] / wait-online.sh
CommitLineData
6f248ce1
TL
1#!/bin/sh
2set -e
3
4WAIT_ONLINE_METHOD="ifup"
5WAIT_ONLINE_IFACE=""
6WAIT_ONLINE_ADDRESS=""
7WAIT_ONLINE_TIMEOUT=300
8
9[ -f /etc/default/networking ] && . /etc/default/networking
10
11case "$WAIT_ONLINE_METHOD" in
12route)
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
17ping)
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
25ping6)
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
33ifup|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
75no|none)
76 exit 0
77 ;;
78
79*)
80 echo "Unknown wait method $WAIT_ONLINE_METHOD" >&2
81 exit 1
82 ;;
83esac