net: ipv4: route: Fix sending IGMP messages with link address
In setups with a global scope address on an interface, and a lesser scope address on an interface sending IGMP reports, the reports can be sent using the other interfaces global scope address rather than the local interface address. RFC 2236 suggests: Ignore the Report if you cannot identify the source address of the packet as belonging to a subnet assigned to the interface on which the packet was received. since such reports could be forged. Look at the protocol when deciding if a RT_SCOPE_LINK address should be used for the packet. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
087c1a601a
Коммит
6a21165480
|
@ -2091,7 +2091,8 @@ struct rtable *__ip_route_output_key(struct net *net, struct flowi4 *fl4)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (ipv4_is_local_multicast(fl4->daddr) ||
|
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)
|
if (!fl4->saddr)
|
||||||
fl4->saddr = inet_select_addr(dev_out, 0,
|
fl4->saddr = inet_select_addr(dev_out, 0,
|
||||||
RT_SCOPE_LINK);
|
RT_SCOPE_LINK);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче