Manpages - setnetgrent.3

Table of Contents

NAME

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

SYNOPSIS

  #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 *restrict buf, size_t buflen);

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

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).

Interface Attribute Value
*setnetgrent*(), *getnetgrent_r*(), *innetgr*() Thread safety MT-Unsafe race:netgrent locale
*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.

CONFORMING TO

These functions are not in POSIX.1, but *setnetgrent*(), *endnetgrent*(), *getnetgrent*(), and *innetgr*() are available on most UNIX systems. *getnetgrent_r*() is not widely available on other systems.

NOTES

In the BSD implementation, *setnetgrent*() returns void.

SEE ALSO

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

COLOPHON

This page is part of release 5.13 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.

Author: dt

Created: 2022-02-20 Sun 20:49