-static inline int lnet_is_route_alive(struct lnet_route *route)
-{
- if (!route->lr_gateway->lpni_alive)
- return 0; /* gateway is down */
- if ((route->lr_gateway->lpni_ping_feats &
- LNET_PING_FEAT_NI_STATUS) == 0)
- return 1; /* no NI status, assume it's alive */
- /* has NI status, check # down NIs */
- return route->lr_downis == 0;
-}
+#ifdef HAVE_KERN_SOCK_GETNAME_2ARGS
+#define lnet_kernel_getpeername(sock, addr, addrlen) \
+ kernel_getpeername(sock, addr)
+#define lnet_kernel_getsockname(sock, addr, addrlen) \
+ kernel_getsockname(sock, addr)
+#else
+#define lnet_kernel_getpeername(sock, addr, addrlen) \
+ kernel_getpeername(sock, addr, addrlen)
+#define lnet_kernel_getsockname(sock, addr, addrlen) \
+ kernel_getsockname(sock, addr, addrlen)
+#endif
+
+/*
+ * kernel 5.3: commit ef11db3310e272d3d8dbe8739e0770820dd20e52
+ * kernel 4.18.0-193.el8:
+ * added in_dev_for_each_ifa_rtnl and in_dev_for_each_ifa_rcu
+ * and removed for_ifa and endfor_ifa.
+ * Use the _rntl variant as the current locking is rtnl.
+ */
+#ifdef HAVE_IN_DEV_FOR_EACH_IFA_RTNL
+#define DECLARE_CONST_IN_IFADDR(ifa) const struct in_ifaddr *ifa
+#define endfor_ifa(in_dev)
+#else
+#define DECLARE_CONST_IN_IFADDR(ifa)
+#define in_dev_for_each_ifa_rtnl(ifa, in_dev) for_ifa((in_dev))
+#define in_dev_for_each_ifa_rcu(ifa, in_dev) for_ifa((in_dev))
+#endif
+
+int choose_ipv4_src(__u32 *ret,
+ int interface, __u32 dst_ipaddr, struct net *ns);
+
+bool lnet_is_route_alive(struct lnet_route *route);
+bool lnet_is_gateway_alive(struct lnet_peer *gw);