setnetgrent(3) Library Functions Manual setnetgrent(3) NAME setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr - handle net- work group entries LIBRARY Standard C library (libc, -lc) SYNOPSIS #include int setnetgrent(const char *netgroup); void endnetgrent(void); int getnetgrent(char **restrict host, char **restrict user, char **restrict domain); int getnetgrent_r(size_t size; char **restrict host, char **restrict user, char **restrict domain, char buf[restrict size], size_t size); int innetgr(const char *netgroup, const char *host, const char *user, const char *domain); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): setnetgrent(), endnetgrent(), getnetgrent(), getnetgrent_r(), innetgr(): Since glibc 2.19: _DEFAULT_SOURCE glibc 2.19 and earlier: _BSD_SOURCE || _SVID_SOURCE DESCRIPTION The netgroup is a SunOS invention. A netgroup database is a list of string triples (hostname, username, domainname) or other netgroup names. Any of the elements in a triple can be empty, which means that anything matches. The functions described here allow access to the netgroup databases. The file /etc/nsswitch.conf defines what database is searched. The setnetgrent() call defines the netgroup that will be searched by subse- quent getnetgrent() calls. The getnetgrent() function retrieves the next netgroup entry, and returns pointers in host, user, domain. A null pointer means that the corresponding entry matches any string. The pointers are valid only as long as there is no call to other netgroup-related functions. To avoid this problem you can use the GNU function getnetgrent_r() that stores the strings in the supplied buffer. To free all allocated buffers use endnetgrent(). In most cases you want to check only if the triplet (hostname, username, domainname) is a member of a netgroup. The function innetgr() can be used for this without calling the above three functions. Again, a null pointer is a wildcard and matches any string. The function is thread-safe. RETURN VALUE These functions return 1 on success and 0 for failure. FILES /etc/netgroup /etc/nsswitch.conf ATTRIBUTES For an explanation of the terms used in this section, see attributes(7). allbox; lb lb lbx l l l. Interface Attribute Value T{ setnetgrent(), getnetgrent_r(), innetgr() T} Thread safety T{ MT-Unsafe race:netgrent locale T} T{ endnetgrent() T} Thread safety T{ MT-Unsafe race:netgrent T} T{ getnetgrent() T} Thread safety T{ MT-Unsafe race:netgrent race:netgrentbuf locale T} In the above table, netgrent in race:netgrent signifies that if any of the functions setnetgrent(), getnetgrent_r(), innetgr(), getnetgrent(), or end- netgrent() are used in parallel in different threads of a program, then data races could occur. VERSIONS In the BSD implementation, setnetgrent() returns void. STANDARDS None. HISTORY setnetgrent(), endnetgrent(), getnetgrent(), and innetgr() are available on most UNIX systems. getnetgrent_r() is not widely available on other sys- tems. SEE ALSO sethostent(3), setprotoent(3), setservent(3) Linux man-pages 6.18 2026-02-08 setnetgrent(3)