|
@@ -731,7 +731,9 @@ static bool __udp_v6_is_mcast_sock(struct net *net, struct sock *sk,
|
|
(inet->inet_dport && inet->inet_dport != rmt_port) ||
|
|
(inet->inet_dport && inet->inet_dport != rmt_port) ||
|
|
(!ipv6_addr_any(&sk->sk_v6_daddr) &&
|
|
(!ipv6_addr_any(&sk->sk_v6_daddr) &&
|
|
!ipv6_addr_equal(&sk->sk_v6_daddr, rmt_addr)) ||
|
|
!ipv6_addr_equal(&sk->sk_v6_daddr, rmt_addr)) ||
|
|
- (sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif))
|
|
|
|
|
|
+ (sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif) ||
|
|
|
|
+ (!ipv6_addr_any(&sk->sk_v6_rcv_saddr) &&
|
|
|
|
+ !ipv6_addr_equal(&sk->sk_v6_rcv_saddr, loc_addr)))
|
|
return false;
|
|
return false;
|
|
if (!inet6_mc_check(sk, loc_addr, rmt_addr))
|
|
if (!inet6_mc_check(sk, loc_addr, rmt_addr))
|
|
return false;
|
|
return false;
|