Re: [Bugme-new] [Bug 9440] New: Problem in joinning a socket to ipv6 multicast address in specific scenario

2007-11-30 Thread Evgeniy Polyakov
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

2007-11-30 Thread Herbert Xu
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

2007-11-30 Thread Herbert Xu
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

2007-11-28 Thread Evgeniy Polyakov
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

2007-11-23 Thread Evgeniy Polyakov
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

2007-11-22 Thread Andrew Morton
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