[IPv6] Update setsockopt(IPV6_MULTICAST_IF) to support RFC 3493, try2

2007-10-11 Thread Brian Haley

Hi,

From RFC 3493, Section 5.2:

  IPV6_MULTICAST_IF

 Set the interface to use for outgoing multicast packets.  The
 argument is the index of the interface to use.  If the
 interface index is specified as zero, the system selects the
 interface (for example, by looking up the address in a routing
 table and using the resulting interface).

This patch adds support for (index == 0) to reset the value to it's 
original state, allowing the system to choose the best interface.  IPv4 
already behaves this way.


-Brian


Signed-off-by: Brian Haley [EMAIL PROTECTED]
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index 532425d..1334fc1 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -539,12 +539,15 @@ done:
 	case IPV6_MULTICAST_IF:
 		if (sk-sk_type == SOCK_STREAM)
 			goto e_inval;
-		if (sk-sk_bound_dev_if  sk-sk_bound_dev_if != val)
-			goto e_inval;
 
-		if (__dev_get_by_index(init_net, val) == NULL) {
-			retv = -ENODEV;
-			break;
+		if (val) {
+			if (sk-sk_bound_dev_if  sk-sk_bound_dev_if != val)
+goto e_inval;
+
+			if (__dev_get_by_index(init_net, val) == NULL) {
+retv = -ENODEV;
+break;
+			}
 		}
 		np-mcast_oif = val;
 		retv = 0;


Re: [IPv6] Update setsockopt(IPV6_MULTICAST_IF) to support RFC 3493, try2

2007-10-11 Thread David Stevens
Acked-by: David L Stevens [EMAIL PROTECTED]

 
 Signed-off-by: Brian Haley [EMAIL PROTECTED]
 diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
 index 532425d..1334fc1 100644
 --- a/net/ipv6/ipv6_sockglue.c
 +++ b/net/ipv6/ipv6_sockglue.c
 @@ -539,12 +539,15 @@ done:
 case IPV6_MULTICAST_IF:
if (sk-sk_type == SOCK_STREAM)
   goto e_inval;
 -  if (sk-sk_bound_dev_if  sk-sk_bound_dev_if != val)
 - goto e_inval;
 
 -  if (__dev_get_by_index(init_net, val) == NULL) {
 - retv = -ENODEV;
 - break;
 +  if (val) {
 + if (sk-sk_bound_dev_if  sk-sk_bound_dev_if != val)
 +goto e_inval;
 +
 + if (__dev_get_by_index(init_net, val) == NULL) {
 +retv = -ENODEV;
 +break;
 + }
}
np-mcast_oif = val;
retv = 0;

-
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: [IPv6] Update setsockopt(IPV6_MULTICAST_IF) to support RFC 3493, try2

2007-10-11 Thread David Miller
From: David Stevens [EMAIL PROTECTED]
Date: Thu, 11 Oct 2007 10:49:14 -0700

 Acked-by: David L Stevens [EMAIL PROTECTED]

Applied, thanks everyone!
-
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