#ifndef _LINUX_NET_H
#define _LINUX_NET_H
#include <linux/stringify.h>
#include <linux/random.h>
#include <linux/wait.h>
#include <linux/fcntl.h>
#include <linux/rcupdate.h>
#include <linux/once.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/sockptr.h>
#include <uapi/linux/net.h>
struct poll_table_struct;
struct pipe_inode_info;
struct inode;
struct file;
struct net;
#define SOCKWQ_ASYNC_NOSPACE …
#define SOCKWQ_ASYNC_WAITDATA …
#define SOCK_NOSPACE …
#define SOCK_PASSCRED …
#define SOCK_PASSSEC …
#define SOCK_SUPPORT_ZC …
#define SOCK_CUSTOM_SOCKOPT …
#define SOCK_PASSPIDFD …
#ifndef ARCH_HAS_SOCKET_TYPES
enum sock_type { … };
#define SOCK_MAX …
#define SOCK_TYPE_MASK …
#define SOCK_CLOEXEC …
#ifndef SOCK_NONBLOCK
#define SOCK_NONBLOCK …
#endif
#endif
enum sock_shutdown_cmd { … };
struct socket_wq { … } ____cacheline_aligned_in_smp;
struct socket { … };
read_descriptor_t;
struct vm_area_struct;
struct page;
struct sockaddr;
struct msghdr;
struct module;
struct sk_buff;
struct proto_accept_arg;
sk_read_actor_t;
skb_read_actor_t;
struct proto_ops { … };
#define DECLARE_SOCKADDR(type, dst, src) …
struct net_proto_family { … };
struct iovec;
struct kvec;
enum { … };
int sock_wake_async(struct socket_wq *sk_wq, int how, int band);
int sock_register(const struct net_proto_family *fam);
void sock_unregister(int family);
bool sock_is_registered(int family);
int __sock_create(struct net *net, int family, int type, int proto,
struct socket **res, int kern);
int sock_create(int family, int type, int proto, struct socket **res);
int sock_create_kern(struct net *net, int family, int type, int proto, struct socket **res);
int sock_create_lite(int family, int type, int proto, struct socket **res);
struct socket *sock_alloc(void);
void sock_release(struct socket *sock);
int sock_sendmsg(struct socket *sock, struct msghdr *msg);
int sock_recvmsg(struct socket *sock, struct msghdr *msg, int flags);
struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname);
struct socket *sockfd_lookup(int fd, int *err);
struct socket *sock_from_file(struct file *file);
#define sockfd_put(sock) …
int net_ratelimit(void);
#define net_ratelimited_function(function, ...) …
#define net_emerg_ratelimited(fmt, ...) …
#define net_alert_ratelimited(fmt, ...) …
#define net_crit_ratelimited(fmt, ...) …
#define net_err_ratelimited(fmt, ...) …
#define net_notice_ratelimited(fmt, ...) …
#define net_warn_ratelimited(fmt, ...) …
#define net_info_ratelimited(fmt, ...) …
#if defined(CONFIG_DYNAMIC_DEBUG) || \
(defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE))
#define net_dbg_ratelimited(fmt, ...) …
#elif defined(DEBUG)
#define net_dbg_ratelimited …
#else
#define net_dbg_ratelimited …
#endif
#define net_get_random_once(buf, nbytes) …
static inline bool sendpage_ok(struct page *page)
{ … }
int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
size_t num, size_t len);
int kernel_sendmsg_locked(struct sock *sk, struct msghdr *msg,
struct kvec *vec, size_t num, size_t len);
int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec,
size_t num, size_t len, int flags);
int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen);
int kernel_listen(struct socket *sock, int backlog);
int kernel_accept(struct socket *sock, struct socket **newsock, int flags);
int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
int flags);
int kernel_getsockname(struct socket *sock, struct sockaddr *addr);
int kernel_getpeername(struct socket *sock, struct sockaddr *addr);
int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how);
u32 kernel_sock_ip_overhead(struct sock *sk);
#define MODULE_ALIAS_NETPROTO(proto) …
#define MODULE_ALIAS_NET_PF_PROTO(pf, proto) …
#define MODULE_ALIAS_NET_PF_PROTO_TYPE(pf, proto, type) …
#define MODULE_ALIAS_NET_PF_PROTO_NAME(pf, proto, name) …
#endif