]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/functions.network
Working version of calcprefix().
[projects/rc-scripts.git] / sysconfig / network-scripts / functions.network
CommitLineData
356d834b 1#!/bin/sh - keep it for file(1) to get bourne shell script result
b0443108 2#
ec8b15cb 3# $Id$
dd8b6525 4#
7e04fe0e 5# This is not a shell script; it provides functions to network scripts
6# that source it.
7
8source_config ()
9{
e9e86175 10DEVNAME=$(basename "$CONFIG" | awk ' { gsub(/^ifcfg-/,NIL); print $0; } ')
111f7a0d 11
cdab3b96 12if echo "$CONFIG"|egrep "^/" >/dev/null 2>&1 ; then
74a7f2e4 13 if [ -f "$CONFIG" ] ; then
14 . "$CONFIG"
15 fi
cdab3b96 16elif [ -f "/etc/sysconfig/interfaces/$CONFIG" ] ; then
74a7f2e4 17 . "/etc/sysconfig/interfaces/$CONFIG"
cdab3b96 18fi
fa8aca70 19if [ -n "${PREFIX}" ] && ! $(echo $IPADDR | grep "/" 2>&1 >/dev/null) ; then
74a7f2e4 20 IPADDR="$IPADDR/$PREFIX"
fa8aca70 21fi
7e04fe0e 22}
23
24do_netreport ()
25{
cdab3b96 26# Notify programs that have requested notification
27( cd /var/run/netreport || exit
28for i in * ; do
74a7f2e4 29 [ -f $i ] && \
30 kill -SIGIO $i >/dev/null 2>&1 || \
31 rm -f $i >/dev/null 2>&1
cdab3b96 32done
33)
7e04fe0e 34}
35
36need_hostname()
37{
cdab3b96 38if [ "`hostname`" = "(none)" -o "`hostname`" = "localhost" -o \
74a7f2e4 39 "`hostname`" = "localhost.localdomain" ]; then
40 NEEDHOSTNAME=yes
cdab3b96 41else
74a7f2e4 42 unset NEEDHOSTNAME
cdab3b96 43fi
7e04fe0e 44}
45
46set_hostname()
47{
da1fc19d 48typeset hostname domain
e9e86175
AM
49hostname=$(echo $1 | awk ' { gsub(/\..*$/,NIL); print $0; } ')
50domain=$(echo $1 | awk ' { sub(/^[^\.]*\./,NIL); print $0; } ')
c159d0a7
JK
51
52if [ -n "$hostname" ] ; then
74a7f2e4 53 echo "$hostname" > /etc/HOSTNAME
54 hostname $hostname
c159d0a7
JK
55fi
56
57if [ -n "$domain" ] ; then
74a7f2e4 58 >/etc/resolv.conf.new
59 if ! grep -q "search $domain" /etc/resolv.conf ; then
60 echo "search $domain" >> /etc/resolv.conf.new
61 fi
62 echo "domain $domain" >> /etc/resolv.conf.new
63 grep -v "^domain " /etc/resolv.conf >> /etc/resolv.conf.new
64 mv -f /etc/resolv.conf.new /etc/resolv.conf
cdab3b96 65fi
7e04fe0e 66}
67
767c8707
AM
68# Setup Network Address Translation (NAT)
69setup_nat()
70{
fa8aca70 71typeset src via dst
cdab3b96 72if [ -r /etc/sysconfig/static-nat ]; then
74a7f2e4 73 if [ "$1" = "on" ]; then
74 grep "^[0-9]" /etc/sysconfig/static-nat | while read src via dst; do
75 /sbin/ip route add nat $dst via $src
76 /sbin/ip rule add from $src nat $dst
77 done
78 elif [ "$1" = "off" ]; then
79 /sbin/ip route show table all | egrep "^nat[[:blank:]]" | while read nat dst via src args; do
80 /sbin/ip rule del from $src nat $dst
81 /sbin/ip route del nat $dst via $src
82 done
83 fi
cdab3b96 84fi
767c8707
AM
85}
86
fa8aca70
JR
87# Setup static ARP
88static_arp()
7e04fe0e 89{
fa8aca70
JR
90typeset rc arpdev host hwaddr flags neflags
91if is_yes "$STATIC_ARP" && [ -r /etc/ethers ]; then
74a7f2e4 92 if [ -x /sbin/arp ]; then
93 run_cmd "Setting static ARP entries" /sbin/arp -f /etc/ethers
94 else
95 show "Setting static ARP entries"; busy
96 rc=0
97 arpdev=$(ip link show | awk -F':' '(/UP/) && ! (/NOARP/) && ! (/lo:/) && ! (/NONE:/) { print $2; exit }')
98 if [ -z "$arpdev" ]; then
99 rc=1
fa8aca70 100 else
74a7f2e4 101 # ip supports only ip addresses
102 grep "^[0-9]" /etc/ethers | \
103 while read host hwaddr flags; do
104 case "$flags" in
105 *temp*)
106 neflags="nud stale"
107 ;;
108 *)
109 neflags="nud permanent"
110 ;;
111 esac
112 if ! /sbin/ip neigh add $host lladdr $hwaddr $neflags dev $arpdev; then
113 rc=1
0a6161f2 114 fi
74a7f2e4 115 done
116 fi
117 if [ "$rc" -gt 0 ]; then
118 fail
cdab3b96 119 fi
74a7f2e4 120 fi
ea822d66 121fi
7e04fe0e 122}
123
fa8aca70 124static_rarp()
7e04fe0e 125{
fa8aca70 126if is_yes "$STATIC_RARP"; then
74a7f2e4 127 if [ ! -e /proc/net/rarp ]; then
128 _modprobe single -k rarp
129 fi
130 if [ -r /etc/ethers -a -x /sbin/rarp ]; then
131 run_cmd "Setting static RARP entries" /sbin/rarp -f /etc/ethers
132 fi
7e04fe0e 133fi
e9e86175
AM
134}
135
fa8aca70 136vlan_setup()
e9e86175 137{
d4b86031 138if [ -x /sbin/vconfig -a -e /proc/net/vlan/config ] && `echo $DEVICE | grep -q ^eth`; then
74a7f2e4 139 /sbin/vconfig set_name_type DEV_PLUS_VID_NO_PAD 2>&1 > /dev/null
140 ETH_VLANS="yes"
fa8aca70 141else
74a7f2e4 142 ETH_VLANS="no"
0a6161f2 143fi
de1fc6ce
JR
144}
145
fa8aca70
JR
146# Set up all IP && IP parameter variables
147setup_ip_param ()
38198f50 148{
fa8aca70 149# detect network device type (ie. dummy, eth for dummy0, eth0 ..)
90d6f40f 150if [ -z "$DEVICETYPE" ]; then
74a7f2e4 151 DEVICETYPE=$(echo $DEVICE | awk ' { gsub(/[0-9]*\.?[0-9]*$/,NUL); print $0 } ')
90d6f40f
SZ
152fi
153
a6c22d3d
AM
154# Setup DEVICETYPE for special cases.
155if (echo ${DEVICE} | LC_ALL=C egrep -q '^[a-z0-9]+\.[0-9]+$'); then
156 DEVICETYPE=vlan
157fi
158
fa8aca70
JR
159# real name of device (ie. is eth0 for eth0,eth0:1,eth0:alias)
160DEVICE=$(echo $DEVICE | awk ' { gsub(/:.*$/,NUL); print $0 } ')
161
162eval IP4ADDR="\$IPADDR${IP4_PRIM_IF:-}"
aff75369 163if echo "${IP4ADDR}" | grep -q ":" ; then
74a7f2e4 164 IP6ADDR=${IP4ADDR}
165 IP4ADDR=""
aff75369 166else
74a7f2e4 167 eval IP4ADDROPT="\$IP_AOPTS${IP4_PRIM_IF:-}"
168 eval IP4ROUTEOPT="\$IP_ROPTS${IP4_PRIM_IF:-}"
aff75369 169fi
fa8aca70 170if [ -n "${IP6_PRIM_IF}" ] ; then
74a7f2e4 171 eval IP6ADDR="\$IPADDR${IP6_PRIM_IF:-}"
172 eval IP6ADDROPT="\$IPV6_AOPTS${IP6_PRIM_IF:-}"
fa8aca70
JR
173fi
174if [ -n "${IP4_SRC_IF}" ] ; then
74a7f2e4 175 eval IP4SRCADDR="\$IPADDR${IP4_SRC_IF}"
176 IP4SRCADDR=$(echo ${IP4SRCADDR} | awk ' { gsub(/\/.*/,NIL); print "src " $0; } ')
fa8aca70
JR
177fi
178if [ -n "${IP6_SRC_IF}" ] ; then
74a7f2e4 179 eval IP6SRCADDR="\$IPADDR${IP6_SRC_IF}"
180 IP6SRCADDR=$(echo ${IP6SRCADDR} | awk ' { gsub(/\/.*/,NIL); print "src " $0; } ')
fa8aca70
JR
181fi
182
fa8aca70
JR
183# new rc-scripts 0.4.x option
184if [ -z "$HANDLING" ]; then
74a7f2e4 185 HANDLING=0
fa8aca70
JR
186fi
187
188# set handling for bridge
189case "$DEVICETYPE" in
74a7f2e4 190 br|atm|lec|irda|vlan)
191 HANDLING=1
192 ;;
fa8aca70
JR
193esac
194
195# Multicast ready devices
196if is_yes "$MULTICAST"; then
74a7f2e4 197 MULTICAST="on"
fa8aca70 198else
74a7f2e4 199 case "$DEVICETYPE" in
200 eth|br)
201 MULTICAST="on"
202 ;;
203 *)
204 MULTICAST="off"
205 ;;
206 esac
fa8aca70
JR
207fi
208
209# ARP ready devices
3d121e27 210if [ -n "$ARP" ] ; then
74a7f2e4 211 if is_yes "$ARP"; then
212 ARP="arp on"
213 else
214 ARP="arp off"
215 fi
fa8aca70 216fi
74a7f2e4 217
38198f50
AM
218}
219
fa8aca70 220check_device_down ()
38198f50 221{
74a7f2e4 222 if (ip link show dev ${DEVICE} 2> /dev/null | grep -q UP); then
223 return 1
224 else
225 return 0
226 fi
38198f50
AM
227}
228
fa8aca70 229setup_ip_gw_ro ()
38198f50 230{
fa8aca70
JR
231# IPv4 gateway
232if is_yes "$IPV4_NETWORKING"; then
74a7f2e4 233 if [ -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${DEVICE}" ]; then
234 # set up default gateway
235 if [ -n "${GATEWAY}" ]; then
236 ip -4 route add default via ${GATEWAY} dev ${DEVICE} ${IP4SRCADDR} onlink
237 DEFGW=${GATEWAY}
238 elif [ "${GATEWAYDEV}" = "${DEVICE}" ]; then
239 ip -4 route add default dev ${DEVICE} ${IP4SRCADDR}
0a6161f2 240 fi
74a7f2e4 241 fi
0a6161f2 242fi
fa8aca70
JR
243
244# IPv6 gateway && IPv6 globalroute
245if is_yes "$IPV6_NETWORKING"; then
74a7f2e4 246 if [ -z "${GATEWAY6DEV}" -o "${GATEWAY6DEV}" = "${DEVICE}" ]; then
247 # set up default gateway
248 if [ -n "${GATEWAY6}" ]; then
249 ip -6 route add default via ${GATEWAY6} dev ${DEVICE} ${IP6SRCADDR} onlink
250 DEFGW6=${GATEWAY6}
251 elif [ "${GATEWAY6DEV}" = "${DEVICE}" ]; then
252 ip -6 route add default dev ${DEVICE} ${IP6SRCADDR}
820d3792 253 fi
74a7f2e4 254 fi
255 if [ -z "${IPV6_GLOBALROUTEDEV}" -o "${IPV6_GLOBALROUTEDEV}" = "${DEVICE}" ]; then
256 # set up default route
257 if [ -n "${IPV6_GLOBALROUTEGW}" ]; then
258 ip -6 route add 2000::/3 via ${IPV6_GLOBALROUTEGW} dev ${DEVICE} ${IP6SRCADDR} onlink
259 elif [ "${IPV6_GLOBALROUTEDEV}" = "${DEVICE}" ]; then
260 ip -6 route add 2000::/3 dev ${DEVICE} ${IP6SRCADDR}
261 fi
262 fi
fa8aca70 263fi
0a6161f2 264}
265
fa8aca70
JR
266#
267# following function sets up routes not associated to any device
268# eg. unreachable or blackhole routes
ec8b15cb 269# (c) 1999 Jacek Konieczny <jajcus@pld-linux.org>
fa8aca70
JR
270#
271setup_routes()
0a6161f2 272{
fa8aca70
JR
273typeset args
274if [ -f /etc/sysconfig/static-routes ]; then
74a7f2e4 275 if [ "$1" = "on" -o "$1" = "yes" ] ; then
276 egrep "^(none|any)[[:blank:]]" /etc/sysconfig/static-routes | while read device args; do
277 /sbin/ip route add $args
278 done
279 else
280 egrep "^(none|any)[[:blank:]]" /etc/sysconfig/static-routes | while read device args; do
281 /sbin/ip route del $args 2>/dev/null
282 done
283 fi
38198f50 284fi
0a6161f2 285}
38198f50 286
fa8aca70
JR
287# Add ONLY IPv4 address (IPv6 address is added automaticly)
288set_up_loopback()
0a6161f2 289{
fa8aca70 290if is_yes "$IPV4_NETWORKING"; then
74a7f2e4 291 ip addr add 127.0.0.1/8 dev lo
0a6161f2 292fi
3d121e27 293ip link set dev lo up
fa8aca70
JR
294}
295
296set_down_loopback()
297{
298ip addr flush dev lo 2>&1 | grep -v "Nothing to flush"
299ip link set dev lo down
0a6161f2 300}
301
302modprobe_net()
303{
fa8aca70 304if is_yes "$IPV6_NETWORKING" && is_module "ipv6"; then
74a7f2e4 305 _modprobe single -k ipv6
fa8aca70
JR
306fi
307
308if is_yes "$IPX" && is_module "ipx"; then
74a7f2e4 309 _modprobe single -k ipx
cdab3b96 310fi
e016cdae 311}
7e04fe0e 312
490f6163 313#
314# folowing function calculates network prefix from given network mask
490f6163 315# (c) 1999 Grzegorz Stanislawski <stangrze@open.net.pl>
316#
fa8aca70
JR
317calcprefix()
318{
da1fc19d 319typeset OISF len olen bad prefix
85ebccea 320prefix=0
321olen=8
322bad=0
b54a1de8 323
aa745eb2 324for i in 1 2 3 4; do
74a7f2e4 325 len=0
aa745eb2
AM
326 j=$(echo "$1" | awk -F"." "{ print \$${i} }")
327 case "$j" in
85ebccea 328 255) len=8 ;;
329 254) len=7 ;;
330 252) len=6 ;;
331 248) len=5 ;;
332 240) len=4 ;;
333 224) len=3 ;;
334 192) len=2 ;;
335 128) len=1 ;;
336 0) len=0 ;;
337 *) len=300 ;;
74a7f2e4 338 esac
85ebccea 339
74a7f2e4 340 [ "$len" -gt "$olen" ] && bad=1
341 prefix=$(($prefix + $len))
342 olen=$len
85ebccea 343done
344
830949ca 345if [ "$bad" = "0" ]; then
74a7f2e4 346 echo "$prefix"
85ebccea 347else
74a7f2e4 348 echo "32"
85ebccea 349fi
350return
490f6163 351}
85ebccea 352
5379c9d4 353#
354# folowing function calculates network mask from given prefix
355# (c) 1999 Grzegorz Stanislawski <stangrze@open.net.pl>
356#
fa8aca70
JR
357calcnetmask()
358{
da1fc19d 359typeset prefix a MASK
bd69a65a 360MASK=""
830949ca 361if [ "`echo "${1}" | grep "^[0-9]"`" = "" ]; then
74a7f2e4 362 prefix=32
4ac87c24 363else
74a7f2e4 364 typeset -i prefix=$1
4ac87c24 365fi
b54a1de8 366for i in 1 2 3 4; do
74a7f2e4 367 case $prefix in
85ebccea 368 7) a=254 ;;
369 6) a=252 ;;
370 5) a=248 ;;
371 4) a=240 ;;
372 3) a=224 ;;
373 2) a=192 ;;
374 1) a=128 ;;
375 *)
74a7f2e4 376 [ $prefix -ge 8 ] && a=255
377 [ $prefix -le 0 ] && a=0
378 ;;
379 esac
380
381 prefix="$(( $prefix - 8))"
382 if [ -z "$MASK" ]; then
383 MASK=$a
384 else
385 MASK=$MASK.$a
386 fi
85ebccea 387done
388
5379c9d4 389echo $MASK
390return
391}
47dbf68e 392
dd8b6525
JK
393# Retrievies PPPD PID and real interface name from /var/run/ppp-*.pid
394get_ppp_device_and_pid () {
395
fb51ba82 396if [ -f "/var/run/ppp-$DEVNAME.pid" ] ; then
74a7f2e4 397 eval `{
398 read PID ; echo "PID='$PID'"
399 read REALDEVICE ; echo "REALDEVICE=$REALDEVICE"
400 } < "/var/run/ppp-$DEVNAME.pid"`
fa8aca70 401fi
c3bd5d9f 402
fa8aca70
JR
403if [ -z "$REALDEVICE" ] ; then
404 REALDEVICE=$DEVICE
405fi
dd8b6525 406}
c3bd5d9f 407
e686ef49 408# following function setups advanced routing rules
ec8b15cb 409# Olgierd Pieczul <wojrus@pld-linux.org>
e686ef49 410setup_ip_rules () {
492f0ebc 411typeset args prio from src
9d1264e0 412if [ -f /etc/sysconfig/static-routes ] ; then
74a7f2e4 413 if is_yes "$1"; then
414 egrep "^(from|to|iif|tos|fwmark|dev|pref|priority|prio)[[:blank:]]" /etc/sysconfig/static-routes | while read args; do
415 /sbin/ip rule add $args
416 done
417 elif is_no "$1"; then
418 /sbin/ip rule show | egrep -v -e "from all lookup (main|default|local) \$" -e " map-to " | while read prio from src args; do
419 [ "$src" == "all" ] && ip rule delete $args || ip rule delete $from $src $args
420 done
421 fi
e686ef49 422fi
423}
6d145c04 424
a6c22d3d
AM
425#
426
427is_wireless_device () {
428 if [ -x /sbin/iwconfig ]; then
429 LC_ALL=C iwconfig "${1}" 2>&1 | grep -q "no wireless extensions" || return 0
430 fi
431 return 1
432}
433
2ae29436
AM
434wireless_param () {
435
436 device="$1"
437 if [ "$2" = "br" ]; then
438 prefix="${device}_"
439 else
440 prefix=""
441 fi
442
443 if [ -z "$(eval echo \$${prefix}WLAN_NICKNAME)" ]; then
444 WLAN_NICKNAME="$(hostname -f)"
445 else
446 WLAN_NICKANME="$(eval echo \$${prefix}WLAN_NICKNAME)"
447 fi
448
449 # wlan mode needs to be first
74a7f2e4 450 [ -n "$(eval echo \$${prefix}WLAN_MODE)" ] && \
451 iwconfig ${device} mode "$(eval echo \$${prefix}WLAN_MODE)"
02fb1c17 452 iwconfig ${device} nickname ${WLAN_NICKNAME}
74a7f2e4 453 [ -n "$(eval echo \$${prefix}WLAN_ESSID)" ] && \
454 iwconfig ${device} essid "$(eval echo \$${prefix}WLAN_ESSID)"
455 [ -n "$(eval echo \$${prefix}WLAN_NWID)" ] && \
456 iwconfig ${device} nwid "$(eval echo \$${prefix}WLAN_NWID)"
2ae29436
AM
457 if [ -n "$(eval echo \$${prefix}WLAN_FREQ)" -a "$(eval echo \$${prefix}${WLAN_MODE})" != "Managed" ] ; then
458 iwconfig ${device} freq "$(eval echo \$${prefix}WLAN_FREQ)"
459 elif [ -n "$(eval echo \$${prefix}WLAN_CHANNEL)" -a "$(eval echo \$${prefix}${WLAN_MODE})" != "Managed" ]; then
74a7f2e4 460 iwconfig ${device} channel "$(eval echo \$${prefix}WLAN_CHANNEL)"
2ae29436 461 fi
74a7f2e4 462 [ -n "$(eval echo \$${prefix}WLAN_SENS)" ] && \
463 iwconfig ${device} sens "$(eval echo \$${prefix}WLAN_SENS)"
464 [ -n "$(eval echo \$${prefix}WLAN_AP)" ] && \
465 iwconfig ${device} ap "$(eval echo \$${prefix}WLAN_AP)"
2ae29436 466 [ -n "$(eval echo \$${prefix}WLAN_BITRATE)" ] && \
74a7f2e4 467 iwconfig ${device} rate "$(eval echo \$${prefix}WLAN_BITRATE)"
2ae29436 468 [ -n "$(eval echo \$${prefix}WLAN_RTS_THRESHOLD)" ] && \
74a7f2e4 469 iwconfig ${device} rts "$(eval echo \$${prefix}WLAN_RTS_THRESHOLD)"
2ae29436 470 [ -n "$(eval echo \$${prefix}WLAN_FRAGMENTATION_THRESHOLD)" ] && \
74a7f2e4 471 iwconfig ${device} frag "$(eval echo \$${prefix}WLAN_FRAGMENTATION_THRESHOLD)"
2ae29436
AM
472 if [ -n "$(eval echo \$${prefix}WLAN_KEY)" ]; then
473 iwconfig ${device} key "$(eval echo \$${prefix}WLAN_KEY)"
474 [ -n "$(eval echo \$${prefix}WLAN_ENCRYPTION)" ] && \
74a7f2e4 475 iwconfig ${device} key "$(eval echo \$${prefix}WLAN_ENCRYPTION)"
2ae29436
AM
476 fi
477 if is_no "$(eval echo \$${prefix}WLAN_ENCRYPTION)"; then
478 iwconfig ${device} key off
479 fi
480 [ -n "$(eval echo \$${prefix}WLAN_POWER)" ] && \
74a7f2e4 481 iwconfig ${device} "$(eval echo \$${prefix}WLAN_POWER)"
2ae29436 482 [ -n "$(eval echo \$${prefix}WLAN_TXPOWER)" ] && \
74a7f2e4 483 iwconfig ${device} "$(eval echo \$${prefix}WLAN_TXPOWER)"
2ae29436 484 [ -n "$(eval echo \$${prefix}WLAN_RETRY)" ] && \
74a7f2e4 485 iwconfig ${device} "$(eval echo \$${prefix}WLAN_RETRY)"
2ae29436
AM
486 if is_yes "$(eval echo \$${prefix}WLAN_COMMIT)"; then
487 iwconfig ${device} commit
488 fi
489 [ -n "$(eval echo \$${prefix}WLAN_NWID)" ] && iwconfig ${device} \
74a7f2e4 490 nwid "$(eval echo \$${prefix}WLAN_NWID)"
2ae29436
AM
491
492 #essid should be last due to netowork rescanning by wlan devices
493 [ -n "$(eval echo \$${prefix}WLAN_ESSID)" ] && iwconfig ${device} \
74a7f2e4 494 essid "$(eval echo \$${prefix}WLAN_ESSID)"
2ae29436
AM
495
496}
497
0336ea13
AM
498check_mii_tool ()
499{
74a7f2e4 500 [ -x /sbin/mii-tool ] || return 2
501 output=$(LC_ALL=C mii-tool $1 2>&1)
502 echo $output | LC_ALL=C grep -q "link ok" && return 1
503 echo $output | LC_ALL=C grep -q "no link" && return 0 || return 2
0336ea13
AM
504}
505
506check_ethtool ()
507{
74a7f2e4 508 [ -x /sbin/ethtool ] || return 2
509 output=$(LC_ALL=C ethtool $1 2>&1)
510 echo $output | LC_ALL=C grep -q "Link detected: yes" && return 1
511 echo $output | LC_ALL=C grep -q "Link detected: no" && return 0 || return 2
0336ea13
AM
512}
513
514
515check_link_down ()
516{
517 if [ -x /sbin/mii-tool -o -x /sbin/ethtool ]; then
74a7f2e4 518 if ! LC_ALL=C ip link show dev $1 2>/dev/null| grep -q UP ; then
519 ip link set dev $1 up >/dev/null 2>&1
520 timeout=0
521 while [ $timeout -le 10 ]; do
522 check_mii_tool $1
523 m=$?
524 check_ethtool $1
525 e=$?
526 if [ $m -eq 1 ] || [ $e -eq 1 ] ; then
527 return 1
528 fi
529 if [ $m -eq 2 ] && [ $e -eq 2 ] ; then
530 return 1
531 fi
532 usleep 500000
533 timeout=$((timeout+1))
534 done
535 return 0
536 fi
0336ea13
AM
537 fi
538 return 1
539}
2ae29436 540
e9e86175 541# This must be last line !
31abb21f 542# vi:syntax=sh:ts=8:sw=4
This page took 0.15232 seconds and 4 git commands to generate.