Viewing: tcp.h

/* SPDX-License-Identifier: GPL-2.0 */

#ifndef __LIBCFS_NET_TCP_H__
#define __LIBCFS_NET_TCP_H__

#include <net/tcp.h>

#ifdef HAVE_KERNEL_SETSOCKOPT

#if !defined(HAVE_TCP_SOCK_SET_QUICKACK)
static inline void tcp_sock_set_quickack(struct sock *sk, int opt)
{
	struct socket *sock = sk->sk_socket;

	kernel_setsockopt(sock, SOL_TCP, TCP_QUICKACK,
			  (char *)&opt, sizeof(opt));
}
#endif /* HAVE_TCP_SOCK_SET_QUICKACK */

#if !defined(HAVE_TCP_SOCK_SET_KEEPINTVL)
static inline int tcp_sock_set_keepintvl(struct sock *sk, int opt)
{
	struct socket *sock = sk->sk_socket;

	return kernel_setsockopt(sock, SOL_TCP, TCP_KEEPINTVL,
				 (char *)&opt, sizeof(opt));
}
#endif /* HAVE_TCP_SOCK_SET_KEEPINTVL */

#if !defined(HAVE_TCP_SOCK_SET_KEEPCNT)
static inline int tcp_sock_set_keepcnt(struct sock *sk, int opt)
{
	struct socket *sock = sk->sk_socket;

	return kernel_setsockopt(sock, SOL_TCP, TCP_KEEPCNT,
				 (char *)&opt, sizeof(opt));
}
#endif /* HAVE_TCP_SOCK_SET_KEEPCNT */

#if !defined(HAVE_IP6_SET_PREF)
static inline void ip6_sock_set_addr_preferences(struct sock *sk,
						 unsigned int pref)
{
	kernel_setsockopt(sk->sk_socket, SOL_IPV6, IPV6_ADDR_PREFERENCES,
			  (char *)&pref, sizeof(pref));
}
#endif /* HAVE_IP6_SET_PREF */

#if !defined(HAVE_IP_SET_TOS)
static inline void ip_sock_set_tos(struct sock *sk, int val)
{
	kernel_setsockopt(sk->sk_socket, IPPROTO_IP, IP_TOS,
			  (char *)&val, sizeof(val));
}
#endif /* HAVE_IP_SET_TOS */
#endif /* HAVE_KERNEL_SETSOCKOPT */

#endif /* __LIBCFS_NET_TCP_H__ */