0001
0002
0003 #include <linux/net.h>
0004 #include <linux/uio.h>
0005
0006 #include "alloc_cache.h"
0007
0008 #if defined(CONFIG_NET)
0009 struct io_async_msghdr {
0010 union {
0011 struct iovec fast_iov[UIO_FASTIOV];
0012 struct {
0013 struct iovec fast_iov_one;
0014 __kernel_size_t controllen;
0015 int namelen;
0016 __kernel_size_t payloadlen;
0017 };
0018 struct io_cache_entry cache;
0019 };
0020
0021 struct iovec *free_iov;
0022 struct sockaddr __user *uaddr;
0023 struct msghdr msg;
0024 struct sockaddr_storage addr;
0025 };
0026
0027 struct io_async_connect {
0028 struct sockaddr_storage address;
0029 };
0030
0031 int io_shutdown_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0032 int io_shutdown(struct io_kiocb *req, unsigned int issue_flags);
0033
0034 int io_sendzc_prep_async(struct io_kiocb *req);
0035 int io_sendmsg_prep_async(struct io_kiocb *req);
0036 void io_sendmsg_recvmsg_cleanup(struct io_kiocb *req);
0037 int io_sendmsg_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0038 int io_sendmsg(struct io_kiocb *req, unsigned int issue_flags);
0039 int io_send(struct io_kiocb *req, unsigned int issue_flags);
0040
0041 int io_recvmsg_prep_async(struct io_kiocb *req);
0042 int io_recvmsg_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0043 int io_recvmsg(struct io_kiocb *req, unsigned int issue_flags);
0044 int io_recv(struct io_kiocb *req, unsigned int issue_flags);
0045
0046 int io_accept_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0047 int io_accept(struct io_kiocb *req, unsigned int issue_flags);
0048
0049 int io_socket_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0050 int io_socket(struct io_kiocb *req, unsigned int issue_flags);
0051
0052 int io_connect_prep_async(struct io_kiocb *req);
0053 int io_connect_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0054 int io_connect(struct io_kiocb *req, unsigned int issue_flags);
0055
0056 int io_sendzc(struct io_kiocb *req, unsigned int issue_flags);
0057 int io_sendzc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe);
0058 void io_sendzc_cleanup(struct io_kiocb *req);
0059
0060 void io_netmsg_cache_free(struct io_cache_entry *entry);
0061 #else
0062 static inline void io_netmsg_cache_free(struct io_cache_entry *entry)
0063 {
0064 }
0065 #endif