Messages in this thread Patch in this message | | | Date | Tue, 1 Sep 1998 07:26:07 +0200 (MEST) | From | Roman Drahtmueller <> | Subject | Re: 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
| |