net: gre: provide multicast mappings for ipv4 and ipv6
My commit 6d55cb91a0
(gre: fix hard header destination
address checking) broke multicast.
The reason is that ip_gre used to get ipgre_header() calls with
zero destination if we have NOARP or multicast destination. Instead
the actual target was decided at ipgre_tunnel_xmit() time based on
per-protocol dissection.
Instead of allowing the "abuse" of ->header() calls with invalid
destination, this creates multicast mappings for ip_gre. This also
fixes "ip neigh show nud noarp" to display the proper multicast
mappings used by the gre device.
Reported-by: Doug Kehn <rdkehn@yahoo.com>
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Acked-by: Doug Kehn <rdkehn@yahoo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1459a3cc51
commit
93ca3bb5df
@ -341,6 +341,8 @@ int ndisc_mc_map(struct in6_addr *addr, char *buf, struct net_device *dev, int d
|
||||
case ARPHRD_INFINIBAND:
|
||||
ipv6_ib_mc_map(addr, dev->broadcast, buf);
|
||||
return 0;
|
||||
case ARPHRD_IPGRE:
|
||||
return ipv6_ipgre_mc_map(addr, dev->broadcast, buf);
|
||||
default:
|
||||
if (dir) {
|
||||
memcpy(buf, dev->broadcast, dev->addr_len);
|
||||
|
Reference in New Issue
Block a user