diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 7cad0bf1c71cbc763cffe72edd9c8f84a242fcc3..9e15f5ca4495df8a59b22f91dc399b45284015d5 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -2091,7 +2091,8 @@ struct rtable *__ip_route_output_key(struct net *net, struct flowi4 *fl4) goto out; } if (ipv4_is_local_multicast(fl4->daddr) || - ipv4_is_lbcast(fl4->daddr)) { + ipv4_is_lbcast(fl4->daddr) || + fl4->flowi4_proto == IPPROTO_IGMP) { if (!fl4->saddr) fl4->saddr = inet_select_addr(dev_out, 0, RT_SCOPE_LINK);