|
@@ -674,6 +674,13 @@ done:
|
|
retv = ipv6_sock_ac_drop(sk, mreq.ipv6mr_ifindex, &mreq.ipv6mr_acaddr);
|
|
retv = ipv6_sock_ac_drop(sk, mreq.ipv6mr_ifindex, &mreq.ipv6mr_acaddr);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+ case IPV6_MULTICAST_ALL:
|
|
|
|
+ if (optlen < sizeof(int))
|
|
|
|
+ goto e_inval;
|
|
|
|
+ np->mc_all = valbool;
|
|
|
|
+ retv = 0;
|
|
|
|
+ break;
|
|
|
|
+
|
|
case MCAST_JOIN_GROUP:
|
|
case MCAST_JOIN_GROUP:
|
|
case MCAST_LEAVE_GROUP:
|
|
case MCAST_LEAVE_GROUP:
|
|
{
|
|
{
|
|
@@ -1266,6 +1273,10 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
|
|
val = np->mcast_oif;
|
|
val = np->mcast_oif;
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case IPV6_MULTICAST_ALL:
|
|
|
|
+ val = np->mc_all;
|
|
|
|
+ break;
|
|
|
|
+
|
|
case IPV6_UNICAST_IF:
|
|
case IPV6_UNICAST_IF:
|
|
val = (__force int)htonl((__u32) np->ucast_oif);
|
|
val = (__force int)htonl((__u32) np->ucast_oif);
|
|
break;
|
|
break;
|