---
name: "nng_listener_setopt"
section: "3"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_listener_setopt"
---

# nng\_listener\_setopt(3)

set listener option

## NAME

nng\_listener\_setopt - set listener option

## SYNOPSIS

```
#include <nng/nng.h>
int nng_listener_setopt(nng_listener l, const char *opt, const void *val,
    size_t valsz);
int nng_listener_setopt_bool(nng_listener l, const char *opt, bool bval);
int nng_listener_setopt_int(nng_listener l, const char *opt, int ival);
int nng_listener_setopt_ms(nng_listener l, const char *opt, nng_duration dur);
int nng_listener_setopt_ptr(nng_listener l, const char *opt, void *ptr);
int nng_listener_setopt_size(nng_listener l, const char *opt, size_t z);
int nng_listener_setopt_string(nng_listener l, const char *opt, const char *str);
int nng_listener_setopt_uint64(nng_listener l, const char *opt, uint64_t u64);
```

## DESCRIPTION

**Important**\

These functions are deprecated.  Please see nng\_listener\_set. They may not be present if the library was built with `NNG_ELIDE_DEPRECATED`.

The `nng_listener_setopt()` functions are used to configure options for the listener *l*. The actual options that may be configured in this way vary, and many are documented in [nng\_options(5)](/nng_options/5.md).

Additionally some transport-specific options are documented with the transports themselves.

**Note**\

Once a listener has started, it is generally not possible to change its configuration.

### Forms

In all of these forms, the option *opt* is configured on the listener *l*.

The details of the type, size, and semantics of the option will depend on the actual option, and will be documented with the option itself.

**Tip**\

It may be easier to use one of the typed forms of this function.

`nng_listener_setopt()`

This function is untyped, and can be used to configure any arbitrary data. The *val* pointer addresses the data to copy, and *valsz* is the size of the objected located at *val*.

`nng_listener_setopt_bool()`

This function is for options which take a Boolean (`bool`). The *bval* is passed to the option.

`nng_listener_setopt_int()`

This function is for options which take an integer (`int`). The *ival* is passed to the option.

`nng_listener_setopt_ms()`

This function is used to configure time durations (such as timeouts) using type `nng_duration`. The duration *dur* is an integer number of milliseconds.

`nng_listener_setopt_ptr()`

This function is used to pass a pointer, *ptr*, to structured data. The data referenced by *ptr* is generally managed by other functions. For example, TLS configuration objects created with (`nng_tls_config_alloc()`) can be passed this way.

**Note**\

This form is somewhat special in that the object is generally not copied, but instead the **pointer** to the object is copied.

`nng_listener_setopt_size()`

This function is used to configure a size, *z*, typically for buffer sizes, message maximum sizes, and similar options.

`nng_listener_setopt_string()`

This function is used to pass configure a string, *str*. Strings passed this way must be legal UTF-8 or ASCII strings, terminated with a `NUL` (`\0`) byte. (Other constraints may apply as well, see the documentation for each option for details.)

`nng_listener_setopt_uint64()`

This function is used to configure a 64-bit unsigned value, *u64*. This is typically used for options related to identifiers, network numbers, and similar.

## RETURN VALUES

These functions return 0 on success, and non-zero otherwise.

## ERRORS

`NNG_EBADTYPE`

Incorrect type for option.

`NNG_ECLOSED`

Parameter *l* does not refer to an open listener.

`NNG_EINVAL`

The value being passed is invalid.

`NNG_ENOTSUP`

The option *opt* is not supported.

`NNG_EREADONLY`

The option *opt* is read-only.

`NNG_ESTATE`

The listener *l* is already started.

## SEE ALSO

[nng\_listen(3)](/nng_listen/3.md), [nng\_listener\_create(3)](/nng_listener_create/3.md) [nng\_listener\_getopt(3)](/nng_listener_getopt/3.md) [nng\_setopt(3)](/nng_setopt/3.md), [nng\_strerror(3)](/nng_strerror/3.md), [nng\_duration(5)](/nng_duration/5.md), [nng\_listener(5)](/nng_listener/5.md), [nng\_options(5)](/nng_options/5.md), [nng(7)](/nng/7.md)
