Changeset View
Changeset View
Standalone View
Standalone View
sys/ofed/drivers/infiniband/core/ib_addr.c
Show All 33 Lines | |||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
* SOFTWARE. | * SOFTWARE. | ||||
*/ | */ | ||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <linux/mutex.h> | #include <linux/mutex.h> | ||||
#include <linux/inetdevice.h> | |||||
#include <linux/slab.h> | #include <linux/slab.h> | ||||
#include <linux/workqueue.h> | #include <linux/workqueue.h> | ||||
#include <linux/module.h> | #include <linux/module.h> | ||||
#include <net/route.h> | #include <net/route.h> | ||||
#include <net/route/nhop.h> | #include <net/route/nhop.h> | ||||
#include <net/netevent.h> | #include <net/netevent.h> | ||||
#include <rdma/ib_addr.h> | #include <rdma/ib_addr.h> | ||||
#include <rdma/ib_addr_freebsd.h> | |||||
#include <rdma/ib.h> | #include <rdma/ib.h> | ||||
#include <netinet/in_fib.h> | #include <netinet/in_fib.h> | ||||
#include <netinet/if_ether.h> | #include <netinet/if_ether.h> | ||||
#include <netinet/ip_var.h> | #include <netinet/ip_var.h> | ||||
#include <netinet6/scope6_var.h> | #include <netinet6/scope6_var.h> | ||||
#include <netinet6/in6_pcb.h> | #include <netinet6/in6_pcb.h> | ||||
#include <netinet6/in6_fib.h> | #include <netinet6/in6_fib.h> | ||||
▲ Show 20 Lines • Show All 118 Lines • ▼ Show 20 Lines | int rdma_translate_ip(const struct sockaddr *addr, | ||||
struct net_device *dev; | struct net_device *dev; | ||||
int ret; | int ret; | ||||
if (dev_addr->bound_dev_if) { | if (dev_addr->bound_dev_if) { | ||||
dev = dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); | dev = dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); | ||||
} else switch (addr->sa_family) { | } else switch (addr->sa_family) { | ||||
#ifdef INET | #ifdef INET | ||||
case AF_INET: | case AF_INET: | ||||
dev = ip_dev_find(dev_addr->net, | dev = ip_ifp_find(dev_addr->net, | ||||
((const struct sockaddr_in *)addr)->sin_addr.s_addr); | ((const struct sockaddr_in *)addr)->sin_addr.s_addr); | ||||
break; | break; | ||||
#endif | #endif | ||||
#ifdef INET6 | #ifdef INET6 | ||||
case AF_INET6: | case AF_INET6: | ||||
dev = ip6_dev_find(dev_addr->net, | dev = ip6_ifp_find(dev_addr->net, | ||||
((const struct sockaddr_in6 *)addr)->sin6_addr, 0); | ((const struct sockaddr_in6 *)addr)->sin6_addr, 0); | ||||
break; | break; | ||||
#endif | #endif | ||||
default: | default: | ||||
dev = NULL; | dev = NULL; | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 121 Lines • ▼ Show 20 Lines | static int addr4_resolve(struct sockaddr_in *src_in, | ||||
/* Step 2 - find outgoing network interface */ | /* Step 2 - find outgoing network interface */ | ||||
switch (type) { | switch (type) { | ||||
case ADDR_VALID: | case ADDR_VALID: | ||||
/* get source interface */ | /* get source interface */ | ||||
if (addr->bound_dev_if != 0) { | if (addr->bound_dev_if != 0) { | ||||
ifp = dev_get_by_index(addr->net, addr->bound_dev_if); | ifp = dev_get_by_index(addr->net, addr->bound_dev_if); | ||||
} else { | } else { | ||||
ifp = ip_dev_find(addr->net, src_in->sin_addr.s_addr); | ifp = ip_ifp_find(addr->net, src_in->sin_addr.s_addr); | ||||
} | } | ||||
/* check source interface */ | /* check source interface */ | ||||
if (ifp == NULL) { | if (ifp == NULL) { | ||||
error = ENETUNREACH; | error = ENETUNREACH; | ||||
goto done; | goto done; | ||||
} else if (ifp->if_flags & IFF_LOOPBACK) { | } else if (ifp->if_flags & IFF_LOOPBACK) { | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 174 Lines • ▼ Show 20 Lines | static int addr6_resolve(struct sockaddr_in6 *src_in, | ||||
/* Step 2 - find outgoing network interface */ | /* Step 2 - find outgoing network interface */ | ||||
switch (type) { | switch (type) { | ||||
case ADDR_VALID: | case ADDR_VALID: | ||||
/* get source interface */ | /* get source interface */ | ||||
if (addr->bound_dev_if != 0) { | if (addr->bound_dev_if != 0) { | ||||
ifp = dev_get_by_index(addr->net, addr->bound_dev_if); | ifp = dev_get_by_index(addr->net, addr->bound_dev_if); | ||||
} else { | } else { | ||||
ifp = ip6_dev_find(addr->net, src_in->sin6_addr, 0); | ifp = ip6_ifp_find(addr->net, src_in->sin6_addr, 0); | ||||
} | } | ||||
/* check source interface */ | /* check source interface */ | ||||
if (ifp == NULL) { | if (ifp == NULL) { | ||||
error = ENETUNREACH; | error = ENETUNREACH; | ||||
goto done; | goto done; | ||||
} else if (ifp->if_flags & IFF_LOOPBACK) { | } else if (ifp->if_flags & IFF_LOOPBACK) { | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 381 Lines • Show Last 20 Lines |