setnetgrent

NAME

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

SYNOPSIS

#include <netdb.h> I int setnetgrent(const char * netgroup );
I void endnetgrent(void);
I int getnetgrent(char ** host , char ** user , char ** domain ); I int getnetgrent_r(char ** host , char ** user , I char ** domain , char * buf , int buflen ); I int innetgr(const char * netgroup , const char * host , I const char * user , const char * domain );

DESCRIPTION

The netgroup is a SunOS invention. A netgroup database is a list of string triples R (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 R setnetgrent () call defines the netgroup that will be searched by subsequent R getnetgrent () calls. The R getnetgrent () function retrieves the next netgroup entry, and returns pointers in R host , R user , R 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 R getnetgrent_r () that stores the strings in the supplied buffer. To free all allocated buffers use R endnetgrent ().
In most cases you only want to check if the triplet R (hostname , username , domainname) is a member of a netgroup. The function R 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

CONFORMING TO

These functions are not in POSIX.1-2001, but R setnetgrent (), R endnetgrent (), R getnetgrent (), and R innetgr () are avilable on most Unix systems. R getnetgrent_r () is not widely available on other systems.

NOTES

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

SEE ALSO