xref: /linux/io_uring/net.h (revision 90d32e92011eaae8e70a9169b4e7acf4ca8f9d3a)
1 // SPDX-License-Identifier: GPL-2.0
2 
3 #include <linux/net.h>
4 #include <linux/uio.h>
5 
6 struct io_async_msghdr {
7 #if defined(CONFIG_NET)
8 	struct iovec			fast_iov;
9 	/* points to an allocated iov, if NULL we use fast_iov instead */
10 	struct iovec			*free_iov;
11 	int				free_iov_nr;
12 	int				namelen;
13 	__kernel_size_t			controllen;
14 	__kernel_size_t			payloadlen;
15 	struct sockaddr __user		*uaddr;
16 	struct msghdr			msg;
17 	struct sockaddr_storage		addr;
18 #endif
19 };
20 
21 #if defined(CONFIG_NET)
22 
23 int io_shutdown_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
24 int io_shutdown(struct io_kiocb *req, unsigned int issue_flags);
25 
26 void io_sendmsg_recvmsg_cleanup(struct io_kiocb *req);
27 int io_sendmsg_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
28 int io_sendmsg(struct io_kiocb *req, unsigned int issue_flags);
29 
30 int io_send(struct io_kiocb *req, unsigned int issue_flags);
31 
32 int io_recvmsg_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
33 int io_recvmsg(struct io_kiocb *req, unsigned int issue_flags);
34 int io_recv(struct io_kiocb *req, unsigned int issue_flags);
35 
36 void io_sendrecv_fail(struct io_kiocb *req);
37 
38 int io_accept_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
39 int io_accept(struct io_kiocb *req, unsigned int issue_flags);
40 
41 int io_socket_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
42 int io_socket(struct io_kiocb *req, unsigned int issue_flags);
43 
44 int io_connect_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
45 int io_connect(struct io_kiocb *req, unsigned int issue_flags);
46 
47 int io_send_zc(struct io_kiocb *req, unsigned int issue_flags);
48 int io_sendmsg_zc(struct io_kiocb *req, unsigned int issue_flags);
49 int io_send_zc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
50 void io_send_zc_cleanup(struct io_kiocb *req);
51 
52 void io_netmsg_cache_free(const void *entry);
53 #else
54 static inline void io_netmsg_cache_free(const void *entry)
55 {
56 }
57 #endif
58