# nn_device(3compat) Manual Page

## NAME

nn_device - create forwarding device (compatible API)

## SYNOPSIS

    #include <nanomsg/nn.h>

    int nn_device(int sock1, int sock2);

## DESCRIPTION

The `nn_device()` function is used to create a forwarder, where messages received on one of the two sockets sock1 and sock2 are forwarded to the other.

| This function is provided for API compatibility with legacy libnanomsg. Consider using the relevant modern API instead.

The two sockets must be compatible, and must be raw mode sockets. More detail about devices and how they can be used is available in the new style nng_device() documentation.

## RETURN VALUES

This function blocks forever, and will return -1 only when one of the sockets is closed or an error occurs.

## ERRORS

`EBADF` | One of the two sockets is invalid or not open, or has
`EINVAL` | The sockets are not compatible with each other, or not both raw.
`ENOMEM` | Insufficient memory is available.

## SEE ALSO

nn_errno(3compat), nn_socket(3compat), nng_compat(3compat), nng(7)