setnetgrent(3) — Linux manual page


setnetgrent(3)          Library Functions Manual          setnetgrent(3)

NAME         top

       setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr -
       handle network group entries

LIBRARY         top

       Standard C library (libc, -lc)

SYNOPSIS         top

       #include <netdb.h>

       int setnetgrent(const char *netgroup);
       void endnetgrent(void);

       int getnetgrent(char **restrict host,
                   char **restrict user, char **restrict domain);
       int getnetgrent_r(char **restrict host,
                   char **restrict user, char **restrict domain,
                   char buf[restrict .buflen], size_t buflen);

       int innetgr(const char *netgroup, const char *host,
                   const char *user, const char *domain);

   Feature Test Macro Requirements for glibc (see

       setnetgrent(), endnetgrent(), getnetgrent(), getnetgrent_r(),
           Since glibc 2.19:
           glibc 2.19 and earlier:
               _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION         top

       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 subsequent 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         top

       These functions return 1 on success and 0 for failure.

FILES         top


ATTRIBUTES         top

       For an explanation of the terms used in this section, see
       │ Interface        Attribute     Value                      │
       │ setnetgrent(),   │ Thread safety │ MT-Unsafe race:netgrent    │
       │ getnetgrent_r(), │               │ locale                     │
       │ innetgr()        │               │                            │
       │ endnetgrent()    │ Thread safety │ MT-Unsafe race:netgrent    │
       │ getnetgrent()    │ Thread safety │ MT-Unsafe race:netgrent    │
       │                  │               │ race:netgrentbuf locale    │

       In the above table, netgrent in race:netgrent signifies that if
       any of the functions setnetgrent(), getnetgrent_r(), innetgr(),
       getnetgrent(), or endnetgrent() are used in parallel in different
       threads of a program, then data races could occur.

VERSIONS         top

       In the BSD implementation, setnetgrent() returns void.

STANDARDS         top


HISTORY         top

       setnetgrent(), endnetgrent(), getnetgrent(), and innetgr() are
       available on most UNIX systems.  getnetgrent_r() is not widely
       available on other systems.

SEE ALSO         top

       sethostent(3), setprotoent(3), setservent(3)

COLOPHON         top

       This page is part of the man-pages (Linux kernel and C library
       user-space interface documentation) project.  Information about
       the project can be found at 
       ⟨⟩.  If you have a bug report
       for this manual page, see
       This page was obtained from the tarball man-pages-6.9.1.tar.gz
       fetched from
       ⟨⟩ on
       2024-06-26.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-
       to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not
       part of the original manual page), send a mail to

Linux man-pages 6.9.1          2024-05-02                 setnetgrent(3)

Pages that refer to this page: getent(1)