diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-04-02 20:22:53 -0400 |
---|---|---|
committer | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2008-04-05 09:33:38 -0400 |
commit | 7bc570c8b4f75ddb3fd5dbeb38127cdc4acbcc9c (patch) | |
tree | b688b728c3ea08479f75986d1e9f590fca1f8715 /net/ipv6/ipv6_sockglue.c | |
parent | 80a9492a33dd7d852465625022d56ff76d62174d (diff) |
[IPV6] MROUTE: Support multicast forwarding.
Based on ancient patch by Mickael Hoerdt
<hoerdt@clarinet.u-strasbg.fr>, which is available at
<http://www-r2.u-strasbg.fr/~hoerdt/dev/linux_ipv6_mforwarding/patch-linux-ipv6-mforwarding-0.1a>.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Diffstat (limited to 'net/ipv6/ipv6_sockglue.c')
-rw-r--r-- | net/ipv6/ipv6_sockglue.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 4195ac92345e..99624109c010 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/sockios.h> | 33 | #include <linux/sockios.h> |
34 | #include <linux/net.h> | 34 | #include <linux/net.h> |
35 | #include <linux/in6.h> | 35 | #include <linux/in6.h> |
36 | #include <linux/mroute6.h> | ||
36 | #include <linux/netdevice.h> | 37 | #include <linux/netdevice.h> |
37 | #include <linux/if_arp.h> | 38 | #include <linux/if_arp.h> |
38 | #include <linux/init.h> | 39 | #include <linux/init.h> |
@@ -118,6 +119,9 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, | |||
118 | 119 | ||
119 | valbool = (val!=0); | 120 | valbool = (val!=0); |
120 | 121 | ||
122 | if (ip6_mroute_opt(optname)) | ||
123 | return ip6_mroute_setsockopt(sk, optname, optval, optlen); | ||
124 | |||
121 | lock_sock(sk); | 125 | lock_sock(sk); |
122 | 126 | ||
123 | switch (optname) { | 127 | switch (optname) { |
@@ -790,6 +794,9 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, | |||
790 | int len; | 794 | int len; |
791 | int val; | 795 | int val; |
792 | 796 | ||
797 | if (ip6_mroute_opt(optname)) | ||
798 | return ip6_mroute_getsockopt(sk, optname, optval, optlen); | ||
799 | |||
793 | if (get_user(len, optlen)) | 800 | if (get_user(len, optlen)) |
794 | return -EFAULT; | 801 | return -EFAULT; |
795 | switch (optname) { | 802 | switch (optname) { |