* [gentoo-user] Bug in net.eth0?
@ 2005-11-17 23:01 Hareesh Nagarajan
2005-11-17 23:49 ` Neil Bothwick
0 siblings, 1 reply; 2+ messages in thread
From: Hareesh Nagarajan @ 2005-11-17 23:01 UTC (permalink / raw
To: gentoo-user
Hi,
Some verison info:
Version: # $Header:
/home/cvsroot/gentoo-src/rc-scripts/init.d/net.eth0,v 1.41 2004/05/10
14:16:35 agriffis Exp $
Some background info:
I have my ethernet driver compiled into my kernel.
hareesh: hareesh/ $ lspci | grep Ethernet
0000:00:12.0 Ethernet controller: National Semiconductor Corporation
DP83815 (MacPhyter) Ethernet Controller
The problem:
After I shutdown my eth0 interface I see an UP in the ifconfig output.
hareesh: hareesh/ $ s ifconfig eth0 down
hareesh: hareesh/ $ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0F:20:C7:25:5C
UP BROADCAST NOTRAILERS MULTICAST MTU:1500 Metric:1
RX packets:28225 errors:0 dropped:0 overruns:0 frame:0
TX packets:24421 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22196299 (21.1 Mb) TX bytes:4732287 (4.5 Mb)
Interrupt:11
The /etc/init.d/net.eth0 script does the following check:
<script>
status_IFACE="$(ifconfig ${1} 2>${devnull} | gawk '$1 == "UP" {print "up"}')"
[...]
if [[ ${status_IFACE} == up ]]; then
einfo "Keeping kernel configuration for ${IFACE}"
else
ebegin "Bringing ${IFACE} up via DHCP"
/sbin/dhcpcd ${dhcpcd_IFACE} ${IFACE}
</script>
So when I do the following, I get:
# /etc/init.d/net.eth0 start
* Keeping kernel configuration for eth0
So as we can see, the script hasn't given my interface an IP.
Obviously, when I do this, I get:
hareesh: hareesh/ $ wget www.google.com
--14:09:55-- http://www.google.com/
=> `index.html'
Resolving www.google.com... failed: Temporary failure in name resolution.
So then, I do:
# /etc/init.d/net.eth0 stop
* Bringing eth0 down...
So I guess, if you have the ethernet driver compiled in, ifconfig
<interface> still seems to show UP, no idea why. So I think, the
script needs to be modified to test if, ifconfig spits a line with
'inet', to truly test if the interface is up.
More importantly, UP just says that the device is functioning
correctly and does not say that interface actually has an IP address
assigned to it. So we need something more to rely on, to actually test
if the interface is up and running with an IP address assigned to it.
My modifications are as follows. This script, is just a hack, so all
you bash gurus please forgive me. Maybe there is a better way of doing
all this with the help of the /proc interface:
<patch>
--- /etc/init.d/net.eth0.1 2005-11-17 12:55:47.000000000 -0800
+++ /etc/init.d/net.eth0 2005-11-17 14:09:33.000000000 -0800
@@ -50,8 +50,13 @@
# ifconfig_fallback_IFACE (fallback ifconfig if dhcp fails)
setup_vars() {
local i iface="${1//\./_}"
-
- status_IFACE="$(ifconfig ${1} 2>${devnull} | gawk '$1 == "UP"
{print "up"}')"
+ #status_IFACE="$(ifconfig ${1} 2>${devnull} | gawk '$1 == "UP"
{print "up"}')"
+ temp_IFACE="$(ifconfig ${1} | gawk '{print $1}' | head -n 2 |
tr '\n' '_')"
+ if [[ ${temp_IFACE} == "${1}_inet_" ]]; then
+ status_IFACE=up
+ else
+ status_IFACE=
+ fi
eval vlans_IFACE=\"\$\{iface_${iface}_vlans\}\"
eval ifconfig_IFACE=( \"\$\{ifconfig_$iface\[@\]\}\" )
eval dhcpcd_IFACE=\"\$\{dhcpcd_$iface\}\"
</patch>
Now, when I execute the script, I get the following:
# s /etc/init.d/net.eth0 start
* Bringing eth0 up via DHCP...[ ok ]
* eth0 received address 140.221.222.55
So is this a bug in net.eth0 or am I missing something obvious?
Thanks,
./hareesh
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-11-18 0:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-17 23:01 [gentoo-user] Bug in net.eth0? Hareesh Nagarajan
2005-11-17 23:49 ` Neil Bothwick
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox