net/ipv6: Create a neigh_lookup for FIB entries
The router discovery code has a FIB entry and wants to validate the gateway has a neighbor entry. Refactor the existing dst_neigh_lookup for IPv6 and create a new function that takes the gateway and device and returns a neighbor entry. Use the new function in ndisc_router_discovery to validate the gateway. Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
3b6761d18b
commit
f8a1b43b70
@@ -1276,7 +1276,9 @@ static void ndisc_router_discovery(struct sk_buff *skb)
|
||||
rt = rt6_get_dflt_router(net, &ipv6_hdr(skb)->saddr, skb->dev);
|
||||
|
||||
if (rt) {
|
||||
neigh = dst_neigh_lookup(&rt->dst, &ipv6_hdr(skb)->saddr);
|
||||
neigh = ip6_neigh_lookup(&rt->fib6_nh.nh_gw,
|
||||
rt->fib6_nh.nh_dev, NULL,
|
||||
&ipv6_hdr(skb)->saddr);
|
||||
if (!neigh) {
|
||||
ND_PRINTK(0, err,
|
||||
"RA: %s got default router without neighbour\n",
|
||||
@@ -1304,7 +1306,9 @@ static void ndisc_router_discovery(struct sk_buff *skb)
|
||||
return;
|
||||
}
|
||||
|
||||
neigh = dst_neigh_lookup(&rt->dst, &ipv6_hdr(skb)->saddr);
|
||||
neigh = ip6_neigh_lookup(&rt->fib6_nh.nh_gw,
|
||||
rt->fib6_nh.nh_dev, NULL,
|
||||
&ipv6_hdr(skb)->saddr);
|
||||
if (!neigh) {
|
||||
ND_PRINTK(0, err,
|
||||
"RA: %s got default router without neighbour\n",
|
||||
|
Reference in New Issue
Block a user