Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario
On Fri, Nov 30, 2007 at 11:02:19PM +1100, Herbert Xu ([EMAIL PROTECTED]) wrote: OK, this looks like a good change. However, we should also change NETDEV_UP as well to recreate idev if it isn't there and the MTU is big enough. Ok, added netdev_up too. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 567664e..e8c3475 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2293,6 +2293,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, break; } + if (!idev dev-mtu = IPV6_MIN_MTU) + idev = ipv6_add_dev(dev); + if (idev) idev-if_flags |= IF_READY; } else { @@ -2357,12 +2360,18 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, break; case NETDEV_CHANGEMTU: - if ( idev dev-mtu = IPV6_MIN_MTU) { + if (idev dev-mtu = IPV6_MIN_MTU) { rt6_mtu_change(dev, dev-mtu); idev-cnf.mtu6 = dev-mtu; break; } + if (!idev dev-mtu = IPV6_MIN_MTU) { + idev = ipv6_add_dev(dev); + if (idev) + break; + } + /* MTU falled under IPV6_MIN_MTU. Stop IPv6 on this interface. */ case NETDEV_DOWN: -- Evgeniy Polyakov - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario
On Wed, Nov 28, 2007 at 02:18:14PM +0300, Evgeniy Polyakov wrote: Hi. Avaid provided test application, so bug got fixed. IPv6 addrconf removes ipv6 inner device from netdev each time cmu changes and new value is less than IPV6_MIN_MTU (1280 bytes). When mtu is changed and new value is greater than IPV6_MIN_MTU, it does not add ipv6 addresses and inner device bac. This patch fixes that. Tested with Avaid's application, which works ok now. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] OK, this looks like a good change. However, we should also change NETDEV_UP as well to recreate idev if it isn't there and the MTU is big enough. Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario
On Fri, Nov 30, 2007 at 03:25:16PM +0300, Evgeniy Polyakov wrote: Ok, added netdev_up too. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] Applied to net-2.6. Thanks Evgeniy! -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario
Hi. Avaid provided test application, so bug got fixed. IPv6 addrconf removes ipv6 inner device from netdev each time cmu changes and new value is less than IPV6_MIN_MTU (1280 bytes). When mtu is changed and new value is greater than IPV6_MIN_MTU, it does not add ipv6 addresses and inner device bac. This patch fixes that. Tested with Avaid's application, which works ok now. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 567664e..4f7e46c 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2357,12 +2358,18 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, break; case NETDEV_CHANGEMTU: - if ( idev dev-mtu = IPV6_MIN_MTU) { + if (idev dev-mtu = IPV6_MIN_MTU) { rt6_mtu_change(dev, dev-mtu); idev-cnf.mtu6 = dev-mtu; break; } + if (!idev dev-mtu = IPV6_MIN_MTU) { + idev = ipv6_add_dev(dev); + if (idev) + break; + } + /* MTU falled under IPV6_MIN_MTU. Stop IPv6 on this interface. */ case NETDEV_DOWN: -- Evgeniy Polyakov - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario
On Thu, Nov 22, 2007 at 05:23:42PM -0800, Andrew Morton ([EMAIL PROTECTED]) wrote: 3. Now i am running a program i wrote in c that opens a dgram socket (sock_fd[i] = socket(test_data-protocol, SOCK_DGRAM, 0);) and join it to multicast ipv6 address. if i am running this program after steps 1+2 i get the following error: Resource temporarily unavailable when trying to join the socket to the multicast ipv6 address by the system call : Could you provide a test application? Given it is small and can be ran without external dependencies, it will be fixed way much faster. Thanks. -- Evgeniy Polyakov - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario
On Thu, 22 Nov 2007 11:02:04 -0800 (PST) [EMAIL PROTECTED] wrote: http://bugzilla.kernel.org/show_bug.cgi?id=9440 Summary: Problem in joinning a socket to ipv6 multicast address in specific scenario Product: Networking Version: 2.5 KernelVersion: 2.6 Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: high Priority: P1 Component: IPV6 AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Hi, I have a problem in joinning a socket to multicast address in the following scenario (maybe kernel bug): 1. I am changing the mtu size of the eth device to a small size - ifconfig eth1 mtu 100 2. After that i am resizing the mtu for it's orginal size - ifconfig eth1 mtu 1500 3. Now i am running a program i wrote in c that opens a dgram socket (sock_fd[i] = socket(test_data-protocol, SOCK_DGRAM, 0);) and join it to multicast ipv6 address. if i am running this program after steps 1+2 i get the following error: Resource temporarily unavailable when trying to join the socket to the multicast ipv6 address by the system call : struct ipv6_mreq maddr6_group; ... setsockopt(sock_fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, (char *)maddr6_group, sizeof(maddr6_group)); but if i am running my program after reset of the driver (before steps 1+2) it is working fine. if i am trying to run the program and join a socket to ipv4 multicast address (instead of ipv6) i get no errors - this doesn't work only when trying to join to ipv6 multicast address. I got this error in broadcom device (Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 21)) but i don't think this is a bug in broadcom driver, because i tried it on differnt devices, in some devices i got the following error instead: Invalid argument with the same multicast address. As i said before if i am trying to join a socket to multicast ipv6 address before resizing the mtu size it is working fine, all the problems are after step 1+2. All my tries were OS: 1. SLES10.0 - 2.6.16.21-0.8-smp 2. REDHAT5.0 - 2.6.18-8.el5 #1 SMP. I am waiting for an answer, thanks a lot, Aviad Yehezkel. -- Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email --- You are receiving this mail because: --- You are on the CC list for the bug, or are watching someone who is. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html