---
name: "io_uring_prep_cmd_getsockname"
section: "3"
platform: "linux"
package: "liburing"
version: "2.15-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/io_uring_prep_cmd_getsockname"
---

# io\_uring\_prep\_cmd\_getsockname(3)

prepare a getsockname or getpeername request

## NAME

io\_uring\_prep\_cmd\_getsockname - prepare a getsockname or getpeername request

## SYNOPSIS

```
#include <sys/socket.h>
#include <liburing.h>
```

**void io\_uring\_prep\_cmd\_getsockname(struct io\_uring\_sqe \****sqe***,**                                    **int** *fd***,**                                    **struct sockaddr \****sockaddr***,**                                    **socklen\_t \****sockaddr\_len***,**                                    **int** *peer***);**

## DESCRIPTION

The [**io\_uring\_prep\_cmd\_getsockname**(3)](/io_uring_prep_cmd_getsockname/3.md) function prepares a getsockname/getpeername request. The submission queue entry *sqe* is setup to fetch the locally bound address or peer address of the socket file descriptor pointed by *sockfd*. The parameter *sockaddr* points to a region of size *sockaddr\_len* where the output is written. *sockaddr\_len* is modified by the kernel on return  to indicate how many bytes were written. The output address is the locally bound address if *peer* is set to **0** or the peer address if *peer* is set to **1**.

This function prepares an async [**getsockname**(2)](/getsockname/2.md) or [**getpeername**(2)](/getpeername/2.md) request. See those man pages for details.

## RETURN VALUE

None

## ERRORS

The CQE *res* field will contain the result of the operation. See the related man page for details on possible values. Note that where synchronous system calls will return **-1** on failure and set *errno* to the actual error value, io\_uring never uses *errno*. Instead it returns the negated *errno* directly in the CQE *res* field. Differently from the equivalent system calls, if the user attempts to use this operation on a non-socket file descriptor, the CQE error result is *ENOTSUP* instead of *ENOSOCK.*

## SEE ALSO

[**io\_uring\_get\_sqe**(3)](/io_uring_get_sqe/3.md), [**io\_uring\_submit**(3)](/io_uring_submit/3.md), [**getsockname**(2)](/getsockname/2.md), [**getpeername**(2)](/getpeername/2.md)
