lkml.org 
[lkml]   [1998]   [Sep]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Linux 2.0.36pre7 (bug+fix)
> Consider this your last chance to scream about 2.0.36 bugs
>
> Alan

I had to put it aside and forgot about it, but since you asked, here
is one, fix just finished:

mbone (sdr in particular) fails on dickless machines running 2.0.35
whereas it works perfectly fine on non-nfs rooted machines with the
same software. Annoying.

Apparently, IFF_MULTICAST remains unset by fs/nfs/nfsroot.c when
needed in net/ipv4/igmp.c, line 602, even if applicable, defined by
CONFIG_IP_MULTICAST. This causes the trace attached at the end of this
email. Usually, IFF_MULTICAST is set in drivers/net/net_init.c:212,
which wrongly doesn't check for CONFIG_IP_MULTICAST which is
responable for the wrong MULTICAST showing up in ifconfig's output in
non-multicasting kernels.

This trivial patch clears the problem for nfsroot. The other one is
pretty much the same.

Roman.
Computer Center University of Freiburg, Germany.
"The whole world is about three drinks behind." (Humphrey Bogart)


--- linux-2.0.35+_fixme/fs/nfs/nfsroot.c Mon Jul 13 22:47:35 1998
+++ linux/fs/nfs/nfsroot.c Tue Sep 1 06:52:59 1998
@@ -16,6 +16,7 @@
*
* Changes:
*
+ * R. Drahtmueller : Set IFF_MULTICAST in dev->flags if applicable.
* Alan Cox : Removed get_address name clash with FPU.
* Alan Cox : Reformatted a bit.
* Gero Kuhlmann : Code cleanup
@@ -179,7 +180,11 @@
(!user_dev_name[0] || !strcmp(dev->name, user_dev_name))) {
/* First up the interface */
old_flags = dev->flags;
+#ifdef CONFIG_IP_MULTICAST
+ dev->flags = IFF_UP | IFF_BROADCAST | IFF_RUNNING | IFF_MULTICAST;
+#else
dev->flags = IFF_UP | IFF_BROADCAST | IFF_RUNNING;
+#endif
if (!(old_flags & IFF_UP) && dev_open(dev)) {
dev->flags = old_flags;
continue;






trace (sdr) demonstrating the problem:
...
time(NULL) = 904613429
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
setsockopt(5, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
fcntl(5, F_SETFD, FD_CLOEXEC) = 0
bind(5, {sin_family=AF_INET, sin_port=htons(9859), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(5, IPPROTO_IP35, [-8453664], 8) = -1 EADDRNOTAVAIL (Cannot assign requested address)
write(2, "setsockopt - IP_ADD_MEMBERSHIP: "..., 64) = 64
getpid() = 1181
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 6
connect(6, {sin_family=AF_INET, sin_port=htons(9859), sin_addr=inet_addr("224.1.127.255")}, 16) = 0
setsockopt(6, IPPROTO_IP33, [-653312], 1) = 0
send(6, "LCB/1.0\nsdr instance 1181 draht"..., 61, 0) = 61
close(6) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 6
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(6, {sin_family=AF_INET, sin_port=htons(9875), sin_addr=inet_addr("224.2.127.254")}, 16) = 0
setsockopt(6, IPPROTO_IP35, [-25230624], 8) = -1 EADDRNOTAVAIL (Cannot assign requested address)
write(2, "setsockopt - IP_ADD_MEMBERSHIP: "..., 64) = 64
_exit(1) = ?
Identical setsockopt() (the last one) doesn't fail on the disk-root
machine.

routes of course include
Destination Gateway Genmask Flags Metric Ref Use Iface
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 2 eth0



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html

\
 
 \ /
  Last update: 2005-03-22 13:44    [W:0.077 / U:0.572 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site