1951 leaking a vdev when removing an l2cache device
[unleashed.git] / usr / src / man / man3c / getnetgrent.3c
blobbe67cf4648564a3612d47c7410b28615026f7c9b
1 '\" te
2 .\" Copyright (c) 2004, Sun Microsystems, Inc.  All Rights Reserved.
3 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
4 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
5 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
6 .TH GETNETGRENT 3C "Apr 5, 2004"
7 .SH NAME
8 getnetgrent, getnetgrent_r, setnetgrent, endnetgrent, innetgr \- get network
9 group entry
10 .SH SYNOPSIS
11 .LP
12 .nf
13 #include <netdb.h>
15 \fBint\fR \fBgetnetgrent\fR(\fBchar **\fR\fImachinep\fR, \fBchar **\fR\fIuserp\fR, \fBchar **\fR\fIdomainp\fR);
16 .fi
18 .LP
19 .nf
20 \fBint\fR \fBgetnetgrent_r\fR(\fBchar **\fR\fImachinep\fR, \fBchar **\fR\fIuserp\fR, \fBchar **\fR\fIdomainp\fR,
21      \fBchar *\fR\fIbuffer\fR, \fBint\fR\fIbuflen\fR);
22 .fi
24 .LP
25 .nf
26 \fBint\fR \fBsetnetgrent\fR(\fBconst char *\fR\fInetgroup\fR);
27 .fi
29 .LP
30 .nf
31 \fBint\fR \fBendnetgrent\fR(\fBvoid\fR);
32 .fi
34 .LP
35 .nf
36 \fBint\fR \fBinnetgr\fR(\fBconst char *\fR\fInetgroup\fR, \fBconst char *\fR\fImachine\fR,
37      \fBconst char *\fR\fIuser\fR, \fBconst char *\fR\fIdomain\fR);
38 .fi
40 .SH DESCRIPTION
41 .sp
42 .LP
43 These functions are used to test membership in and enumerate members of
44 ``netgroup'' network groups defined in a system database.  Netgroups are sets
45 of (machine,user,domain) triples (see \fBnetgroup\fR(4)).
46 .sp
47 .LP
48 These functions consult the source specified for \fBnetgroup\fR in the
49 \fB/etc/nsswitch.conf\fR file (see \fBnsswitch.conf\fR(4)).
50 .sp
51 .LP
52 The function \fBinnetgr()\fR returns  \fB1\fR if there is a netgroup
53 \fInetgroup\fR that contains the specified \fImachine,\fR \fIuser,\fR
54 \fIdomain\fR triple as a member; otherwise it returns  \fB0\fR. Any of the
55 supplied pointers \fImachine\fR, \fIuser\fR, and \fIdomain\fR may be
56 \fINULL,\fR signifying a "wild card" that matches all values in that position
57 of the triple.
58 .sp
59 .LP
60 The \fBinnetgr()\fR function is safe for use in single-threaded and
61 multithreaded applications.
62 .sp
63 .LP
64 The functions \fBsetnetgrent()\fR, \fBgetnetgrent()\fR, and \fBendnetgrent()\fR
65 are used to enumerate the members of a given network group.
66 .sp
67 .LP
68 The function \fBsetnetgrent()\fR establishes the network group specified in the
69 parameter \fInetgroup\fR as the current group whose members are to be
70 enumerated.
71 .sp
72 .LP
73 Successive calls to the function \fBgetnetgrent()\fR will enumerate the members
74 of the group established by calling \fBsetnetgrent()\fR; each call returns
75 \fB1\fR if it succeeds in obtaining another member of the network group, or
76 \fB0\fR if there are no further members of the group.
77 .sp
78 .LP
79 When calling either \fBgetnetgrent()\fR or \fBgetnetgrent_r()\fR, addresses of
80 the three character pointers are used as arguments, for example:
81 .sp
82 .in +2
83 .nf
84 char \fI*mp\fR, \fI*up\fR, \fI*dp\fR;
85 getnetgrent(\fI&mp\fR, \fI&up\fR, \fI&dp\fR);
86 .fi
87 .in -2
89 .sp
90 .LP
91 Upon successful return from  \fBgetnetgrent()\fR, the pointer \fImp\fR points
92 to a string containing the name of the machine part of the member triple,
93 \fIup\fR points to a string containing the user name and \fIdp\fR points to a
94 string containing the domain name. If the pointer returned for \fImp\fR,
95 \fIup\fR, or \fIdp\fR is \fINULL,\fR it signifies that the element of the
96 netgroup contains wild card specifier in that position of the triple.
97 .sp
98 .LP
99 The pointers returned by \fBgetnetgrent()\fR point into a buffer allocated by
100 \fBsetnetgrent()\fR that is reused by each call. This space is released when an
101 \fBendnetgrent()\fR call is made, and should not be released by the caller.
102 This implementation is not safe for use in multi-threaded applications.
105 The function \fBgetnetgrent_r()\fR is similar to \fBgetnetgrent()\fR function,
106 but it uses a buffer supplied by the caller for the space needed to store the
107 results.   The parameter \fIbuffer\fR should be a pointer to a buffer allocated
108 by the caller and the length of this buffer should be specified by the
109 parameter \fIbuflen\fR. The buffer must be large enough to hold the data
110 associated with the triple. The \fBgetnetgrent_r()\fR function is safe for use
111 both in single-threaded and multi-threaded applications.
114 The function \fBendnetgrent()\fR frees the space allocated by the previous
115 \fBsetnetgrent()\fR call.  The equivalent of an \fBendnetgrent()\fR implicitly
116 performed whenever a  \fBsetnetgrent()\fR call is made to a new network group.
119 Note that while \fBsetnetgrent()\fR and \fBendnetgrent()\fR are safe for use in
120 multi-threaded applications, the effect of each is process-wide.  Calling
121 \fBsetnetgrent()\fR resets the enumeration position for all threads. If
122 multiple threads interleave calls to \fBgetnetgrent_r()\fR each will enumerate
123 a disjoint subset of the netgroup. Thus the effective use of these functions in
124 multi-threaded applications may require coordination by the caller.
125 .SH ERRORS
128 The function \fBgetnetgrent_r()\fR will return  \fB0\fR and set \fBerrno\fR to
129 \fBERANGE\fR if the length of the buffer supplied by caller is not large enough
130 to store the result.  See \fBIntro\fR(2) for the proper usage and
131 interpretation of \fBerrno\fR in multi-threaded applications.
134 The functions \fBsetnetgrent()\fR and \fBendnetgrent()\fR return \fB0\fR upon
135 success.
136 .SH FILES
138 .ne 2
140 \fB\fB/etc/nsswitch.conf\fR\fR
142 .RS 22n
146 .SH ATTRIBUTES
149 See \fBattributes\fR(5) for descriptions of the following attributes:
154 box;
155 c | c
156 l | l .
157 ATTRIBUTE TYPE  ATTRIBUTE VALUE
159 MT-Level        See \fBDESCRIPTION\fR section.
162 .SH SEE ALSO
165 \fBIntro\fR(2), \fBIntro\fR(3), \fBnetgroup\fR(4), \fBnsswitch.conf\fR(4),
166 \fBattributes\fR(5)
167 .SH WARNINGS
170 The function \fBgetnetgrent_r()\fR is included in this release on an
171 uncommitted basis only, and is subject to change or removal in future minor
172 releases.
173 .SH NOTES
176 Only the Network Information Services, \fBNIS\fR and \fBNIS+,\fR are supported
177 as sources for the \fBnetgroup\fR database.
180 When compiling multi-threaded applications, see  \fBIntro\fR(3), \fINotes On
181 Multithread Applications\fR, for information about the use of the
182 \fB_REENTRANT\fR flag.