net: gre: provide multicast mappings for ipv4 and ipv6
authorTimo Teräs <timo.teras@iki.fi>
Mon, 28 Mar 2011 22:40:53 +0000 (22:40 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Mar 2011 07:10:47 +0000 (00:10 -0700)
commit93ca3bb5df9bc8b2c60485e1cc6507c3d7c8e1fa
tree6ccf21f8d1e4431c6be79c265fb1f9a722308f63
parent1459a3cc51d90d78027c7b5c1790e5d22751c8eb
net: gre: provide multicast mappings for ipv4 and ipv6

My commit 6d55cb91a0020ac0 (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>
include/net/if_inet6.h
include/net/ip.h
net/ipv4/arp.c
net/ipv6/ndisc.c