1 .\"     $NetBSD: nfssvc.2,v 1.6 1995/02/27 12:35:08 cgd Exp $
 
   3 .\" Copyright (c) 1989, 1991, 1993
 
   4 .\"     The Regents of the University of California.  All rights reserved.
 
   6 .\" Redistribution and use in source and binary forms, with or without
 
   7 .\" modification, are permitted provided that the following conditions
 
   9 .\" 1. Redistributions of source code must retain the above copyright
 
  10 .\"    notice, this list of conditions and the following disclaimer.
 
  11 .\" 2. Redistributions in binary form must reproduce the above copyright
 
  12 .\"    notice, this list of conditions and the following disclaimer in the
 
  13 .\"    documentation and/or other materials provided with the distribution.
 
  14 .\" 3. All advertising materials mentioning features or use of this software
 
  15 .\"    must display the following acknowledgement:
 
  16 .\"     This product includes software developed by the University of
 
  17 .\"     California, Berkeley and its contributors.
 
  18 .\" 4. Neither the name of the University nor the names of its contributors
 
  19 .\"    may be used to endorse or promote products derived from this software
 
  20 .\"    without specific prior written permission.
 
  22 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
  23 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
  24 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
  25 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
  26 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
  27 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
  28 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
  29 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
  30 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
  31 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
  34 .\"     @(#)nfssvc.2    8.1 (Berkeley) 6/9/93
 
  43 .Fd #include <unistd.h>
 
  44 .Fd #include <nfs/nfs.h>
 
  46 .Fn nfssvc "int flags" "void *argstructp"
 
  50 function is used by the NFS daemons to pass information into and out
 
  51 of the kernel and also to enter the kernel as a server daemon.
 
  54 argument consists of several bits that show what action is to be taken
 
  55 once in the kernel and the
 
  57 points to one of three structures depending on which bits are set in
 
  72 to enter the kernel as a block I/O server daemon.
 
  80 flag, optionally or'd with the flags
 
  84 along with a pointer to a
 
  87         char            *ncd_dirp;      /* Mount dir path */
 
  88         uid_t           ncd_authuid;    /* Effective uid */
 
  89         int             ncd_authtype;   /* Type of authenticator */
 
  90         int             ncd_authlen;    /* Length of authenticator string */
 
  91         char            *ncd_authstr;   /* Authenticator string */
 
  96 The initial call has only the
 
  98 flag set to specify service for the mount point.
 
  99 If the mount point is using Kerberos, then the
 
 101 daemon will return from
 
 103 with errno == ENEEDAUTH whenever the client side requires an ``rcmd''
 
 104 authentication ticket for the user.
 
 106 will attempt to get the Kerberos ticket, and if successful will call
 
 112 after filling the ticket into the 
 
 115 setting the ncd_authlen and ncd_authtype
 
 116 fields of the nfsd_cargs structure.
 
 119 failed to get the ticket,
 
 121 will be called with the flags
 
 125 .Dv NFSSVC_AUTHINFAIL
 
 126 to denote a failed authentication attempt.
 
 130 is called with the flag
 
 134 struct nfsd_srvargs {
 
 135         struct nfsd     *nsd_nfsd;      /* Pointer to in kernel nfsd struct */
 
 136         uid_t           nsd_uid;        /* Effective uid mapped to cred */
 
 137         u_long          nsd_haddr;      /* Ip address of client */
 
 138         struct ucred    nsd_cr;         /* Cred. uid maps to */
 
 139         int             nsd_authlen;    /* Length of auth string (ret) */
 
 140         char            *nsd_authstr;   /* Auth string (ret) */
 
 144 to enter the kernel as an
 
 149 daemon receives a Kerberos authentication ticket, it will return from
 
 151 with errno == ENEEDAUTH.
 
 154 will attempt to authenticate the ticket and generate a set of credentials
 
 155 on the server for the ``user id'' specified in the field nsd_uid.
 
 156 This is done by first authenticating the Kerberos ticket and then mapping
 
 157 the Kerberos principal to a local name and getting a set of credentials for
 
 170 flags set to pass the credential mapping in nsd_cr into the
 
 171 kernel to be cached on the server socket for that client.
 
 172 If the authentication failed,
 
 179 .Dv NFSSVC_AUTHINFAIL
 
 180 to denote an authentication failure.
 
 191         int     sock;           /* Socket to serve */
 
 192         caddr_t name;           /* Client address for connection based sockets */
 
 193         int     namelen;        /* Length of name */
 
 197 to pass a server side
 
 199 socket into the kernel for servicing by the
 
 205 does not return unless the server
 
 206 is terminated by a signal when a value of 0 is returned.
 
 207 Otherwise, -1 is returned and the global variable
 
 209 is set to specify the error.
 
 213 This special error value
 
 214 is really used for authentication support, particularly Kerberos,
 
 217 The caller is not the super-user.
 
 226 function first appeared in 4.4BSD.
 
 230 system call is designed specifically for the
 
 232 support daemons and as such is specific to their requirements.
 
 233 It should really return values to indicate the need for authentication
 
 236 is not really an error.
 
 237 Several fields of the argument structures are assumed to be valid and
 
 238 sometimes to be unchanged from a previous call, such that
 
 240 must be used with extreme care.