From: David Ahern <d...@cumulusnetworks.com> Date: Thu, 29 Dec 2016 15:39:37 -0800
> IP_MULTICAST_IF fails if sk_bound_dev_if is already set and the new index > does not match it. e.g., > > ntpd[15381]: setsockopt IP_MULTICAST_IF 192.168.1.23 fails: Invalid > argument > > Relax the check in setsockopt to allow setting mc_index to an L3 slave if > sk_bound_dev_if points to an L3 master. > > Make a similar change for IPv6. In this case change the device lookup to > take the rcu_read_lock avoiding a refcnt. The rcu lock is also needed for > the lookup of a potential L3 master device. > > This really only silences a setsockopt failure since uses of mc_index are > secondary to sk_bound_dev_if if it is set. In both cases, if either index > is an L3 slave or master, lookups are directed to the same FIB table so > relaxing the check at setsockopt time causes no harm. > > Patch is based on a suggested change by Darwin for a problem noted in > their code base. > > Suggested-by: Darwin Dingel <darwin.din...@alliedtelesis.co.nz> > Signed-off-by: David Ahern <d...@cumulusnetworks.com> This seems ok, applied, thanks.