Page MenuHomeFreeBSD

D29434.diff
No OneTemporary

D29434.diff

diff --git a/sys/compat/linuxkpi/common/include/linux/inetdevice.h b/sys/compat/linuxkpi/common/include/linux/inetdevice.h
--- a/sys/compat/linuxkpi/common/include/linux/inetdevice.h
+++ b/sys/compat/linuxkpi/common/include/linux/inetdevice.h
@@ -1,93 +1,6 @@
-/*-
- * Copyright (c) 2010 Isilon Systems, Inc.
- * Copyright (c) 2010 iX Systems, Inc.
- * Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013-2017 Mellanox Technologies, Ltd.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice unmodified, this list of conditions, and the following
- * disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
#ifndef _LINUX_INETDEVICE_H_
#define _LINUX_INETDEVICE_H_
#include <linux/netdevice.h>
-static inline struct net_device *
-ip_dev_find(struct vnet *vnet, uint32_t addr)
-{
- struct sockaddr_in sin;
- struct epoch_tracker et;
- struct ifaddr *ifa;
- struct ifnet *ifp;
-
- memset(&sin, 0, sizeof(sin));
- sin.sin_addr.s_addr = addr;
- sin.sin_len = sizeof(sin);
- sin.sin_family = AF_INET;
- NET_EPOCH_ENTER(et);
- CURVNET_SET_QUIET(vnet);
- ifa = ifa_ifwithaddr((struct sockaddr *)&sin);
- CURVNET_RESTORE();
- if (ifa) {
- ifp = ifa->ifa_ifp;
- if_ref(ifp);
- } else {
- ifp = NULL;
- }
- NET_EPOCH_EXIT(et);
- return (ifp);
-}
-
-static inline struct net_device *
-ip6_dev_find(struct vnet *vnet, struct in6_addr addr, uint16_t scope_id)
-{
- struct sockaddr_in6 sin6;
- struct epoch_tracker et;
- struct ifaddr *ifa;
- struct ifnet *ifp;
-
- memset(&sin6, 0, sizeof(sin6));
- sin6.sin6_addr = addr;
- sin6.sin6_len = sizeof(sin6);
- sin6.sin6_family = AF_INET6;
- if (IN6_IS_SCOPE_LINKLOCAL(&addr) ||
- IN6_IS_ADDR_MC_INTFACELOCAL(&addr)) {
- /* embed the IPv6 scope ID */
- sin6.sin6_addr.s6_addr16[1] = htons(scope_id);
- }
- NET_EPOCH_ENTER(et);
- CURVNET_SET_QUIET(vnet);
- ifa = ifa_ifwithaddr((struct sockaddr *)&sin6);
- CURVNET_RESTORE();
- if (ifa != NULL) {
- ifp = ifa->ifa_ifp;
- if_ref(ifp);
- } else {
- ifp = NULL;
- }
- NET_EPOCH_EXIT(et);
- return (ifp);
-}
-
#endif /* _LINUX_INETDEVICE_H_ */
diff --git a/sys/ofed/drivers/infiniband/core/ib_addr.c b/sys/ofed/drivers/infiniband/core/ib_addr.c
--- a/sys/ofed/drivers/infiniband/core/ib_addr.c
+++ b/sys/ofed/drivers/infiniband/core/ib_addr.c
@@ -39,7 +39,6 @@
__FBSDID("$FreeBSD$");
#include <linux/mutex.h>
-#include <linux/inetdevice.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
#include <linux/module.h>
@@ -47,6 +46,7 @@
#include <net/route/nhop.h>
#include <net/netevent.h>
#include <rdma/ib_addr.h>
+#include <rdma/ib_addr_freebsd.h>
#include <rdma/ib.h>
#include <netinet/in_fib.h>
@@ -181,13 +181,13 @@
} else switch (addr->sa_family) {
#ifdef 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);
break;
#endif
#ifdef 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);
break;
#endif
@@ -325,7 +325,7 @@
if (addr->bound_dev_if != 0) {
ifp = dev_get_by_index(addr->net, addr->bound_dev_if);
} 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 */
@@ -516,7 +516,7 @@
if (addr->bound_dev_if != 0) {
ifp = dev_get_by_index(addr->net, addr->bound_dev_if);
} 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 */
diff --git a/sys/ofed/drivers/infiniband/core/ib_cma.c b/sys/ofed/drivers/infiniband/core/ib_cma.c
--- a/sys/ofed/drivers/infiniband/core/ib_cma.c
+++ b/sys/ofed/drivers/infiniband/core/ib_cma.c
@@ -46,7 +46,6 @@
#include <linux/mutex.h>
#include <linux/random.h>
#include <linux/idr.h>
-#include <linux/inetdevice.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <net/route.h>
@@ -66,6 +65,7 @@
#include <rdma/rdma_sdp.h>
#include <rdma/ib.h>
#include <rdma/ib_addr.h>
+#include <rdma/ib_addr_freebsd.h>
#include <rdma/ib_cache.h>
#include <rdma/ib_cm.h>
#include <rdma/ib_sa.h>
@@ -1364,7 +1364,7 @@
ipv4_is_loopback(saddr))
return false;
- dst_dev = ip_dev_find(net_dev->if_vnet, daddr);
+ dst_dev = ip_ifp_find(net_dev->if_vnet, daddr);
if (dst_dev != net_dev) {
if (dst_dev != NULL)
dev_put(dst_dev);
@@ -1402,7 +1402,7 @@
struct nhop_object *nh;
bool ret;
- dst_dev = ip6_dev_find(net_dev->if_vnet, dst_tmp.sin6_addr,
+ dst_dev = ip6_ifp_find(net_dev->if_vnet, dst_tmp.sin6_addr,
net_dev->if_index);
if (dst_dev != net_dev) {
if (dst_dev != NULL)
diff --git a/sys/ofed/include/rdma/ib_addr.h b/sys/ofed/include/rdma/ib_addr.h
--- a/sys/ofed/include/rdma/ib_addr.h
+++ b/sys/ofed/include/rdma/ib_addr.h
@@ -42,7 +42,6 @@
#include <linux/in6.h>
#include <linux/if_arp.h>
#include <linux/netdevice.h>
-#include <linux/inetdevice.h>
#include <linux/socket.h>
#include <linux/if_vlan.h>
#include <net/ipv6.h>
diff --git a/sys/compat/linuxkpi/common/include/linux/inetdevice.h b/sys/ofed/include/rdma/ib_addr_freebsd.h
copy from sys/compat/linuxkpi/common/include/linux/inetdevice.h
copy to sys/ofed/include/rdma/ib_addr_freebsd.h
--- a/sys/compat/linuxkpi/common/include/linux/inetdevice.h
+++ b/sys/ofed/include/rdma/ib_addr_freebsd.h
@@ -28,13 +28,12 @@
*
* $FreeBSD$
*/
-#ifndef _LINUX_INETDEVICE_H_
-#define _LINUX_INETDEVICE_H_
+#ifndef _RDMA_IB_ADDR_FREEBSD_H
+#define _RDMA_IB_ADDR_FREEBSD_H
-#include <linux/netdevice.h>
-
-static inline struct net_device *
-ip_dev_find(struct vnet *vnet, uint32_t addr)
+#ifdef INET
+static inline struct ifnet *
+ip_ifp_find(struct vnet *vnet, uint32_t addr)
{
struct sockaddr_in sin;
struct epoch_tracker et;
@@ -58,9 +57,11 @@
NET_EPOCH_EXIT(et);
return (ifp);
}
+#endif
-static inline struct net_device *
-ip6_dev_find(struct vnet *vnet, struct in6_addr addr, uint16_t scope_id)
+#ifdef INET6
+static inline struct ifnet *
+ip6_ifp_find(struct vnet *vnet, struct in6_addr addr, uint16_t scope_id)
{
struct sockaddr_in6 sin6;
struct epoch_tracker et;
@@ -89,5 +90,6 @@
NET_EPOCH_EXIT(et);
return (ifp);
}
+#endif
-#endif /* _LINUX_INETDEVICE_H_ */
+#endif /* _RDMA_IB_ADDR_FREEBSD_H */

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 1, 9:38 PM (22 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13281474
Default Alt Text
D29434.diff (7 KB)

Event Timeline