Re: [PATCH] link-local address fix for rdma_resolve_addr

David J. Wilder
2009-10-16T18:54:39Z

On Thu, 2009-10-15 at 15:32 -0600, Jason Gunthorpe wrote:

>
> The actual fixing to the code is not hard, remove rdma_translate_ip,
> addr_resolve_local, split addr_resolve_remote into a part to resolve
> the route and a part that does the arp/nd. Make the route resolve part
> work almost exactly like addr4_resolve_remote (noting that the v6
> version is wrong, since is doesn't respect unset source addres,
> another bug). Call rdma_copy_addr based on the rt->idev->dev (or
> should it be odev??). Do the ARP.
>
> The pain is in retesting everything :|
>
> Jason

There is the wrinkle in this plan. If you pass ip6_route_output() your
own link-local address (scoped or not) it returns a neighbor entry bound
to the loop back device.

$ ip route get fe80::202:c903:1:28ed oif ib0
local fe80::202:c903:1:28ed from :: via :: dev lo table local proto
none src fe80::202:c903:1:28ed metric 0 mtu 16436 advmss 16376
hoplimit 4294967295

Thats not going to work as lo has no RDMA support. I suspect this is
why addr_resolve_local() was added in the first place :)

I will post a patch with our first solution and include the fix to
addr_resolve_local().

Dave.