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