Previous: Lookup Netgroup, Up: Netgroup Database


29.16.3 Testing for Netgroup Membership

It is often not necessary to scan the whole netgroup since often the only interesting question is whether a given entry is part of the selected netgroup.

— Function: int innetgr (const char *netgroup, const char *host, const char *user, const char *domain)

Preliminary: | MT-Unsafe race:netgrent locale | AS-Unsafe dlopen plugin heap lock | AC-Unsafe corrupt lock fd mem | See POSIX Safety Concepts.

This function tests whether the triple specified by the parameters hostp, userp, and domainp is part of the netgroup netgroup. Using this function has the advantage that

  1. no other netgroup function can use the global netgroup state since internal locking is used and
  2. the function is implemented more efficiently than successive calls to the other set/get/endnetgrent functions.

Any of the pointers hostp, userp, and domainp can be NULL which means any value is accepted in this position. This is also true for the name - which should not match any other string otherwise.

The return value is 1 if an entry matching the given triple is found in the netgroup. The return value is 0 if the netgroup itself is not found, the netgroup does not contain the triple or internal errors occurred.