1 .\" Copyright (c) 1989, 1991, 1993
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. Neither the name of the University nor the names of its contributors
13 .\" may be used to endorse or promote products derived from this software
14 .\" without specific prior written permission.
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" @(#)nfssvc.2 8.1 (Berkeley) 6/9/93
29 .\" $FreeBSD: src/lib/libc/sys/nfssvc.2,v 1.8.2.6 2002/12/29 16:35:34 schweikh Exp $
30 .\" $DragonFly: src/lib/libc/sys/nfssvc.2,v 1.2 2003/06/17 04:26:47 dillon Exp $
48 .Fn nfssvc "int flags" "void *argstructp"
52 function is used by the NFS daemons to pass information into and out
53 of the kernel and also to enter the kernel as a server daemon.
56 argument consists of several bits that show what action is to be taken
57 once in the kernel and the
59 points to one of three structures depending on which bits are set in
74 to enter the kernel as a block I/O server daemon.
82 flag, optionally or'd with the flags
86 along with a pointer to a
89 char *ncd_dirp; /* Mount dir path */
90 uid_t ncd_authuid; /* Effective uid */
91 int ncd_authtype; /* Type of authenticator */
92 int ncd_authlen; /* Length of authenticator string */
93 u_char *ncd_authstr; /* Authenticator string */
94 int ncd_verflen; /* and the verifier */
96 NFSKERBKEY_T ncd_key; /* Session key */
101 The initial call has only the
103 flag set to specify service for the mount point.
104 If the mount point is using Kerberos, then the
106 daemon will return from
112 whenever the client side requires an ``rcmd''
113 authentication ticket for the user.
115 will attempt to get the Kerberos ticket, and if successful will call
121 after filling the ticket into the
124 setting the ncd_authlen and ncd_authtype
125 fields of the nfsd_cargs structure.
128 failed to get the ticket,
130 will be called with the flags
134 .Dv NFSSVC_AUTHINFAIL
135 to denote a failed authentication attempt.
139 is called with the flag
143 struct nfsd_srvargs {
144 struct nfsd *nsd_nfsd; /* Pointer to in kernel nfsd struct */
145 uid_t nsd_uid; /* Effective uid mapped to cred */
146 u_int32_t nsd_haddr; /* Ip address of client */
147 struct ucred nsd_cr; /* Cred. uid maps to */
148 int nsd_authlen; /* Length of auth string (ret) */
149 u_char *nsd_authstr; /* Auth string (ret) */
150 int nsd_verflen; /* and the verifier */
152 struct timeval nsd_timestamp; /* timestamp from verifier */
153 u_int32_t nsd_ttl; /* credential ttl (sec) */
154 NFSKERBKEY_T nsd_key; /* Session key */
158 to enter the kernel as an
163 daemon receives a Kerberos authentication ticket, it will return from
171 will attempt to authenticate the ticket and generate a set of credentials
172 on the server for the ``user id'' specified in the field nsd_uid.
173 This is done by first authenticating the Kerberos ticket and then mapping
174 the Kerberos principal to a local name and getting a set of credentials for
187 flags set to pass the credential mapping in nsd_cr into the
188 kernel to be cached on the server socket for that client.
189 If the authentication failed,
196 .Dv NFSSVC_AUTHINFAIL
197 to denote an authentication failure.
208 int sock; /* Socket to serve */
209 caddr_t name; /* Client address for connection based sockets */
210 int namelen;/* Length of name */
214 to pass a server side
216 socket into the kernel for servicing by the
222 does not return unless the server
223 is terminated by a signal when a value of 0 is returned.
224 Otherwise, -1 is returned and the global variable
226 is set to specify the error.
230 This special error value
231 is really used for authentication support, particularly Kerberos,
234 The caller is not the super-user.
243 function first appeared in
248 system call is designed specifically for the
250 support daemons and as such is specific to their requirements.
251 It should really return values to indicate the need for authentication
254 is not really an error.
255 Several fields of the argument structures are assumed to be valid and
256 sometimes to be unchanged from a previous call, such that
258 must be used with extreme care.