HomeFreeBSD

Multiple fixes for using IPv6 link-local addresses with RDMA in ibcore.

Description

Multiple fixes for using IPv6 link-local addresses with RDMA in ibcore.

  1. Fail to resolve RDMA address if rtalloc1() returns the loopback

device, lo0, as the gateway interface. Currently RDMA loopback is
not supported.

  1. Use ip_dev_find() and ip6_dev_find() to lookup network interfaces

with matching IPv4 and IPv6 addresses, respectivly.

  1. In addr_resolve() make sure the "ifa" pointer is always set, also when

the "ifp" is NULL. Else a NULL pointer access might happen trying to
read from the "ifa" pointer later on.

  1. In rdma_addr_find_dmac_by_grh() make sure the "bound_dev_if" field

gets set properly instead of passing the scope ID through the IPv6
socket address structure. This is more in line with upstream OFED
in Linux.

  1. In rdma_addr_find_smac_by_sgid() there is no need to pass the

scope ID for IPv6. Either it is stored in the "bound_dev_if" field
or ip6_dev_find() will find the correct network device regardless
of the scope ID.

Sponsored by: Mellanox Technologies
MFC after: 1 week

Details

Provenance
hselaskyAuthored on
Parents
rS325613: MFC r325278:
Branches
Unknown
Tags
Unknown