liburing: Introduce getsockname operation
This implements the functionality of getsockname(2) and getpeername(2)
under a single operation.
Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/src/include/liburing.h b/src/include/liburing.h
index 83819eb..1626f3b 100644
--- a/src/include/liburing.h
+++ b/src/include/liburing.h
@@ -1572,6 +1572,19 @@
sqe->level = level;
}
+IOURINGINLINE void io_uring_prep_cmd_getsockname(struct io_uring_sqe *sqe,
+ int fd, struct sockaddr *sockaddr,
+ socklen_t *sockaddr_len,
+ int peer)
+ LIBURING_NOEXCEPT
+{
+ io_uring_prep_uring_cmd(sqe, SOCKET_URING_OP_GETSOCKNAME, fd);
+
+ sqe->addr = (uintptr_t) sockaddr;
+ sqe->addr3 = (unsigned long) (uintptr_t) sockaddr_len;
+ sqe->optlen = peer;
+}
+
IOURINGINLINE void io_uring_prep_waitid(struct io_uring_sqe *sqe,
idtype_t idtype,
id_t id,
diff --git a/src/include/liburing/io_uring.h b/src/include/liburing/io_uring.h
index a54e5b4..8e8b8e6 100644
--- a/src/include/liburing/io_uring.h
+++ b/src/include/liburing/io_uring.h
@@ -966,6 +966,7 @@
SOCKET_URING_OP_GETSOCKOPT,
SOCKET_URING_OP_SETSOCKOPT,
SOCKET_URING_OP_TX_TIMESTAMP,
+ SOCKET_URING_OP_GETSOCKNAME,
};
/*