---
name: "io_uring_register_ifq"
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_register_ifq"
---

# io\_uring\_register\_ifq(3)

register a zero-copy receive interface queue

## NAME

io\_uring\_register\_ifq - register a zero-copy receive interface queue

## SYNOPSIS

```
#include <liburing.h>
```

**int io\_uring\_register\_ifq(struct io\_uring \****ring***,**                           **struct io\_uring\_zcrx\_ifq\_reg \****reg***);**

## DESCRIPTION

The [**io\_uring\_register\_ifq**(3)](/io_uring_register_ifq/3.md) function registers a zero-copy receive interface queue with the io\_uring instance specified by *ring*. Zero-copy receive allows the kernel to place incoming network data directly into application-provided memory without copying.

The *reg* argument is a pointer to a *struct io\_uring\_zcrx\_ifq\_reg* that describes the interface queue to register. See [**io\_uring\_register**(2)](/io_uring_register/2.md) for a description of the **IORING\_REGISTER\_ZCRX\_IFQ** operation and the structure fields.

The io\_uring ring must have been created with **IORING\_SETUP\_DEFER\_TASKRUN** and either **IORING\_SETUP\_CQE32** or **IORING\_SETUP\_CQE\_MIXED** flags set. The caller must have the **CAP\_NET\_ADMIN** capability.

## RETURN VALUE

Returns 0 on success. On error, a negative errno value is returned.

## SEE ALSO

[**io\_uring\_register**(2)](/io_uring_register/2.md), [**io\_uring\_setup**(2)](/io_uring_setup/2.md)
