---
name: "getdomainname"
section: "2"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/getdomainname"
---

# getdomainname(2)

get/set NIS domain name

## NAME

getdomainname, setdomainname - get/set NIS domain name

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <unistd.h>
```

**int getdomainname(**size\_t size;                   **char** *name***\[***size***\], size\_t** *size***);** **int setdomainname(**size\_t size;                   **const char** *name***\[***size***\], size\_t** *size***);**

Feature Test Macro Requirements for glibc (see [**feature\_test\_macros**(7)](/feature_test_macros/7.md)):

**getdomainname**(), **setdomainname**():

```
    Since glibc 2.21:
        _DEFAULT_SOURCE
    In glibc 2.19 and 2.20:
        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
    Up to and including glibc 2.19:
        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
```

## DESCRIPTION

These functions are used to access or to change the NIS domain name of the host system. More precisely, they operate on the NIS domain name associated with the calling process's UTS namespace.

**setdomainname**() sets the domain name to the value given in the character array *name*. The *size* argument specifies the number of bytes in *name*. (Thus, *name* does not require a terminating null byte.)

**getdomainname**() returns the null-terminated domain name in the character array *name*, which has a size of *size* bytes. If the null-terminated domain name requires more than *len* bytes, **getdomainname**() returns the first *len* bytes (glibc) or gives an error (libc).

## RETURN VALUE

On success, zero is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

**setdomainname**() can fail with the following errors:

- **EFAULT**

  *name* pointed outside of user address space.

- **EINVAL**

  *size* was negative or too large.

- **EPERM**

  The caller did not have the **CAP\_SYS\_ADMIN** capability in the user namespace associated with its UTS namespace (see [**namespaces**(7)](/namespaces/7.md)).

**getdomainname**() can fail with the following errors:

- **EINVAL**

  For **getdomainname**() under libc: *name* is NULL or *name* is equal or longer than *size* bytes.

## VERSIONS

On most Linux architectures (including x86), there is no **getdomainname**() system call; instead, glibc implements **getdomainname**() as a library function that returns a copy of the *domainname* field returned from a call to [**uname**(2)](/uname/2.md).

## STANDARDS

None.

## HISTORY

Since Linux 1.0, the limit on the size of a domain name, including the terminating null byte, is 64 bytes. In older kernels, it was 8 bytes.

## SEE ALSO

[**gethostname**(2)](/gethostname/2.md), [**sethostname**(2)](/sethostname/2.md), [**uname**(2)](/uname/2.md), [**uts\_namespaces**(7)](/uts_namespaces/7.md)
