summaryrefslogtreecommitdiff
path: root/include/rpc
Commit message (Collapse)AuthorAgeFilesLines
* Implement support for RPCSEC_GSS authentication to both the NFS clientDoug Rabson2008-11-031-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and server. This replaces the RPC implementation of the NFS client and server with the newer RPC implementation originally developed (actually ported from the userland sunrpc code) to support the NFS Lock Manager. I have tested this code extensively and I believe it is stable and that performance is at least equal to the legacy RPC implementation. The NFS code currently contains support for both the new RPC implementation and the older legacy implementation inherited from the original NFS codebase. The default is to use the new implementation - add the NFS_LEGACYRPC option to fall back to the old code. When I merge this support back to RELENG_7, I will probably change this so that users have to 'opt in' to get the new code. To use RPCSEC_GSS on either client or server, you must build a kernel which includes the KGSSAPI option and the crypto device. On the userland side, you must build at least a new libc, mountd, mount_nfs and gssd. You must install new versions of /etc/rc.d/gssd and /etc/rc.d/nfsd and add 'gssd_enable=YES' to /etc/rc.conf. As long as gssd is running, you should be able to mount an NFS filesystem from a server that requires RPCSEC_GSS authentication. The mount itself can happen without any kerberos credentials but all access to the filesystem will be denied unless the accessing user has a valid ticket file in the standard place (/tmp/krb5cc_<uid>). There is currently no support for situations where the ticket file is in a different place, such as when the user logged in via SSH and has delegated credentials from that login. This restriction is also present in Solaris and Linux. In theory, we could improve this in future, possibly using Brooks Davis' implementation of variant symlinks. Supporting RPCSEC_GSS on a server is nearly as simple. You must create service creds for the server in the form 'nfs/<fqdn>@<REALM>' and install them in /etc/krb5.keytab. The standard heimdal utility ktutil makes this fairly easy. After the service creds have been created, you can add a '-sec=krb5' option to /etc/exports and restart both mountd and nfsd. The only other difference an administrator should notice is that nfsd doesn't fork to create service threads any more. In normal operation, there will be two nfsd processes, one in userland waiting for TCP connections and one in the kernel handling requests. The latter process will create as many kthreads as required - these should be visible via 'top -H'. The code has some support for varying the number of service threads according to load but initially at least, nfsd uses a fixed number of threads according to the value supplied to its '-n' option. Sponsored by: Isilon Systems MFC after: 1 month Notes: svn path=/head/; revision=184588
* Initialise the SVCAUTH field for new transport structures when they areDoug Rabson2008-09-091-0/+2
| | | | | | | | | | allocated instead of waiting for the first request. This fixes an issue with rpcbind's support for PMAPPROC_CALLIT. Reviewed by: markm Notes: svn path=/head/; revision=182891
* Add an implementation of the RPCSEC_GSS authentication protocol for RPC. ThisDoug Rabson2008-08-064-3/+239
| | | | | | | | | | | is based on an old implementation from the University of Michigan with lots of changes and fixes by me and the addition of a Solaris-compatible API. Sponsored by: Isilon Systems Reviewed by: alfred Notes: svn path=/head/; revision=181344
* Move rpc/types.h under sys/, as this is used by ZFS kernel module.Pawel Jakub Dawidek2007-04-102-107/+1
| | | | | | | Repo-copied by: simon Notes: svn path=/head/; revision=168606
* Comment the token after #endif, like we do everywhere else.Jens Schweikhardt2007-02-021-6/+6
| | | | | | | | | Static analyzers like FlexeLint complain about it. MFC after: 7 days Notes: svn path=/head/; revision=166431
* English grammar fix in comment.Hajimu UMEMOTO2006-04-291-1/+4
| | | | | | | Submitted by: keramida Notes: svn path=/head/; revision=158138
* - Extend the nsswitch to support Services, Protocols and RpcHajimu UMEMOTO2006-04-281-6/+1
| | | | | | | | | | | databases. - Make nsswitch support caching. Submitted by: Michael Bushkov <bushman__at__rsu.ru> Sponsored by: Google Summer of Code 2005 Notes: svn path=/head/; revision=158115
* Const'ify arguments to a couple of functions to fix breakageDaniel Eischen2006-02-281-1/+1
| | | | | | | with -O2. Notes: svn path=/head/; revision=156109
* Change the definition of NULL on ia64 (for LP64 compilations) fromMarcel Moolenaar2003-12-071-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | an int constant to a long constant. This change improves consistency in the following two ways: 1. The first 8 arguments are always passed in registers on ia64, which by virtue of the generated code implicitly widens ints to longs and allows the use of an 32-bit integral type for 64-bit arguments. Subsequent arguments are passed onto the memory stack, which does not exhibit the same behaviour and consequently do not allow this. In practice this means that variadic functions taking pointers and given NULL (without cast) work as long as the NULL is passed in one of the first 8 arguments. A SIGSEGV is more likely the result if such would be done for stack-based arguments. This is due to the fact that the upper 4 bytes remain undefined. 2. All 64-bit platforms that FreeBSD supports, with the obvious exception of ia64, allow 32-bit integral types (specifically NULL) when 64-bit pointers are expected in variadic functions by way of how the compiler generates code. As such, code that works correctly (whether rightfully so or not) on any platform other than ia64, may fail on ia64. To more easily allow tweaking of the definition of NULL, this commit removes the 12 definitions in the various headers and puts it in a new header that can be included whenever NULL is to be made visible. This commit fixes GNOME, emacs, xemacs and a whole bunch of ports that I don't particularly care about at this time... Notes: svn path=/head/; revision=123257
* Replace the old SCM_CREDS cred procedures. They can now beMartin Blapp2003-06-151-5/+0
| | | | | | | | | | | | replaced just fine with getpeereid() and the whole code gets a lot simpler. We don't break the ABI, since all server programms use __rpc_get_local_uid(), and we just change library internals. Reviewed by: des Notes: svn path=/head/; revision=116391
* Clean up some signed/unsigned issues in the XDR code.Jacques Vidrine2003-03-071-1/+1
| | | | | | | Obtained from: OpenBSD Notes: svn path=/head/; revision=111962
* unifdef -D_THREAD_SAFEMax Khon2003-01-241-4/+0
| | | | Notes: svn path=/head/; revision=109773
* Implement non-blocking tcp-connections.Martin Blapp2003-01-162-1/+8
| | | | | | | | | Reviewed by: rwatson Obtained from: NetBSD MFC after: 1 day Notes: svn path=/head/; revision=109359
* Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup,Jens Schweikhardt2003-01-013-3/+3
| | | | | | | especially in troff files. Notes: svn path=/head/; revision=108533
* remove #pragma identAlfred Perlstein2002-09-041-2/+0
| | | | Notes: svn path=/head/; revision=102945
* Remove duplicated '__BEGIN_DECLS' which obviated compilingRobert Drehmel2002-07-211-1/+0
| | | | | | | | | C++ sources that use this header. Reported by: Jan Stocker <Jan.Stocker@t-online.de> Notes: svn path=/head/; revision=100451
* clnt_vc_create() has const scalar arguments that wind up being modified,Alfred Perlstein2002-07-141-1/+1
| | | | | | | | | fix it (make them non-const) and update the associated documentation. Submitted by: mbr Notes: svn path=/head/; revision=100001
* Add functions allowing for the user to specify a timeout for rpc functions.Alfred Perlstein2002-07-111-9/+67
| | | | | | | | | Update copyrights to reflect where this code was lifted from. (tirpc '99) Submitted by: mbr Notes: svn path=/head/; revision=99775
* Added new bsd.incs.mk which handles installing of header filesRuslan Ermilov2002-05-121-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | via INCS. Implemented INCSLINKS (equivalent to SYMLINKS) to handle symlinking include files. Allow for multiple groups of include files to be installed, with the powerful INCSGROUPS knob. Documentation to follow. Added standard `includes' and `incsinstall' targets, use them in Makefile.inc1. Headers from the following makefiles were not installed before (during `includes' in Makefile.inc1): kerberos5/lib/libtelnet/Makefile lib/libbz2/Makefile lib/libdevinfo/Makefile lib/libform/Makefile lib/libisc/Makefile lib/libmenu/Makefile lib/libmilter/Makefile lib/libpanel/Makefile Replaced all `beforeinstall' targets for installing includes with the INCS stuff. Renamed INCDIR to INCSDIR, for consistency with FILES and SCRIPTS, and for compatibility with NetBSD. Similarly for INCOWN, INCGRP, and INCMODE. Consistently use INCLUDEDIR instead of /usr/include. gnu/lib/libstdc++/Makefile and gnu/lib/libsupc++/Makefile changes were only lightly tested due to the missing contrib/libstdc++-v3. I fully tested the pre-WIP_GCC31 version of this patch with the contrib/libstdc++.295 stuff. These changes have been tested on i386 with the -DNO_WERROR "make world" and "make release". Notes: svn path=/head/; revision=96462
* Spell void * as void * rather than caddr_t. This is complicated by theDag-Erling Smørgrav2002-04-284-20/+20
| | | | | | | | | fact that caddr_t is often misspelled as char *. Sponsored by: DARPA, NAI Labs Notes: svn path=/head/; revision=95658
* Breath deep and take __P out of the system include files.Warner Losh2002-03-2320-285/+265
| | | | | | | | | # This appears to not break X11, but I'm having problems compiling the # glide part of the server with or without this patch, so I can't tell # for sure. Notes: svn path=/head/; revision=93032
* Constify the first arg to callrpc(3).Alfred Perlstein2002-03-221-1/+1
| | | | Notes: svn path=/head/; revision=92968
* Tokens after #endif are not strict ISO.David E. O'Brien2002-03-131-1/+1
| | | | Notes: svn path=/head/; revision=92223
* o Move NTOHL() and associated macros into <sys/param.h>. These areMike Barcroft2002-02-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | deprecated in favor of the POSIX-defined lowercase variants. o Change all occurrences of NTOHL() and associated marcros in the source tree to use the lowercase function variants. o Add missing license bits to sparc64's <machine/endian.h>. Approved by: jake o Clean up <machine/endian.h> files. o Remove unused __uint16_swap_uint32() from i386's <machine/endian.h>. o Remove prototypes for non-existent bswapXX() functions. o Include <machine/endian.h> in <arpa/inet.h> to define the POSIX-required ntohl() family of functions. o Do similar things to expose the ntohl() family in libstand, <netinet/in.h>, and <sys/param.h>. o Prepend underscores to the ntohl() family to help deal with complexities associated with having MD (asm and inline) versions, and having to prevent exposure of these functions in other headers that happen to make use of endian-specific defines. o Create weak aliases to the canonical function name to help deal with third-party software forgetting to include an appropriate header. o Remove some now unneeded pollution from <sys/types.h>. o Add missing <arpa/inet.h> includes in userland. Tested on: alpha, i386 Reviewed by: bde, jake, tmm Notes: svn path=/head/; revision=90868
* Fix cc -Wall, fix rcsid warnings, add missing prototypes,Alfred Perlstein2002-02-052-4/+14
| | | | | | | | | | | | change prototypes to be the same as in the original sun tirpc code. Remove ()P macro in a file where the mayority had ()P already removed. Add them if the mayority use ()P macros. Submitted by: mbr Requested by: bde Notes: svn path=/head/; revision=90271
* Move arguments in prototype out of application namespace.Dag-Erling Smørgrav2002-02-051-1/+1
| | | | | | | Sponsored by: DARPA, NAI Labs Notes: svn path=/head/; revision=90232
* Add compatibility functions for the AF_LOCAL RPC transport stuffBill Paul2001-10-042-0/+15
| | | | | | | | that used to live in RPC 4.0. This is needed for yppasswd and rpc.yppasswdd to work correctly. Patch supplied by Martin Blapp. Notes: svn path=/head/; revision=84487
* Stop gcc's fixincludes making an exception for this filePeter Wemm2001-09-101-2/+3
| | | | Notes: svn path=/head/; revision=83265
* Add a new clnt_control() request `CLSET_CONNECT' that controlsIan Dowse2001-06-231-0/+1
| | | | | | | | | | | | | whether or not connect(2) is used for UDP client sockets. The default is not to connect(), so existing clients will see no change in behaviour. The use of connect(2) for UDP clients has a number of advantages: only replies from the intended address are received, and ICMP errors pertaining to the connection are reported back to the application. Notes: svn path=/head/; revision=78678
* Add a CLSET_ASYNC command, which allows us to (ab)use the clnt_dg transportBill Paul2001-03-271-0/+1
| | | | | | | | | | | | | | | | | | | | | to make asynchronous RPCs. This is needed to help fix ypbind, which can no longer override the clnt_dg_call() method (formerly the clntudp_call() method) due to all the internal descriptor locking code in TI-RPC. Turning on this flag allows us to send an RPC request, then return immediately, and handle a reply later, rather than being forced to do the request and reply in a single function call. Also fix a byte ordering bug: when clnt_dg_call() increments the XID prior to transmitting a request, it uses the raw value, which is wrong. The XID is stored in network byte order, i.e. big-endian. The CLSET_XID and CLGET_XID commands in clnt_dg_control() use ntohl()/htonl() to get the byte ordering right, but because clnt_dg_call() does not do this, using CLSET_XID/CLGET_XID doesn't actually work, unless you're on a big endian host, which we aren't (yet). Fix clnt_dg_call() to byte swap properly when doing the increment. Notes: svn path=/head/; revision=74879
* fix: text following `#else' violates ANSI standardAlfred Perlstein2001-03-261-1/+1
| | | | | | | Pointed out by: ${BDECFLAGS} Notes: svn path=/head/; revision=74801
* change callrpc() from taking "char *" args, I'm quite sure they really meantAlfred Perlstein2001-03-231-2/+2
| | | | | | | | | to use "void *". remove a duplicate prototype for callrpc() from libexec/ypxfr/ypxfr_extern.h Notes: svn path=/head/; revision=74695
* forgot prototyle for __rpc_get_local_uid()Alfred Perlstein2001-03-221-0/+2
| | | | Notes: svn path=/head/; revision=74658
* Unbreak LINT.Alfred Perlstein2001-03-201-0/+2
| | | | | | | | | | | | | because rpcb_clnt.h is generated during buildworld and only installed into /usr/include/rpc (and not present in src/include/rpc) we can fix it by simply not including it when _KERNEL is defined. this isn't the most elegant, way and might deserve some revisiting later. Pointed out by: bde Notes: svn path=/head/; revision=74515
* The TI-RPC spammed over a '#ifdef _KERNEL' hack for the xdrproc_t typedefAlfred Perlstein2001-03-201-1/+6
| | | | | | | | | revert the spammage Pointed out by: bde Notes: svn path=/head/; revision=74510
* comment out #pragma directive containing Sun SCM tagsAlfred Perlstein2001-03-201-1/+1
| | | | Notes: svn path=/head/; revision=74509
* Add missing comma when KERBEROS is defined.Alfred Perlstein2001-03-191-1/+2
| | | | Notes: svn path=/head/; revision=74472
* Bring in a hybrid of SunSoft's transport-independent RPC (TI-RPC) andAlfred Perlstein2001-03-1925-465/+2242
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | associated changes that had to happen to make this possible as well as bugs fixed along the way. Bring in required TLI library routines to support this. Since we don't support TLI we've essentially copied what NetBSD has done, adding a thin layer to emulate direct the TLI calls into BSD socket calls. This is mostly from Sun's tirpc release that was made in 1994, however some fixes were backported from the 1999 release (supposedly only made available after this porting effort was underway). The submitter has agreed to continue on and bring us up to the 1999 release. Several key features are introduced with this update: Client calls are thread safe. (1999 code has server side thread safe) Updated, a more modern interface. Many userland updates were done to bring the code up to par with the recent RPC API. There is an update to the pthreads library, a function pthread_main_np() was added to emulate a function of Sun's threads library. While we're at it, bring in NetBSD's lockd, it's been far too long of a wait. New rpcbind(8) replaces portmap(8) (supporting communication over an authenticated Unix-domain socket, and by default only allowing set and unset requests over that channel). It's much more secure than the old portmapper. Umount(8), mountd(8), mount_nfs(8), nfsd(8) have also been upgraded to support TI-RPC and to support IPV6. Umount(8) is also fixed to unmount pathnames longer than 80 chars, which are currently truncated by the Kernel statfs structure. Submitted by: Martin Blapp <mb@imp.ch> Manpage review: ru Secure RPC implemented by: wpaul Notes: svn path=/head/; revision=74462
* Back out 1.15. It caused more harm than good. Something, however,Nick Sayer2000-07-211-4/+4
| | | | | | | | | must be done to fix this situation. Submitted by: bde Notes: svn path=/head/; revision=63725
* Moving forward on my commitment to always make at least one commit fromNick Sayer2000-06-221-4/+4
| | | | | | | | | a terminal room of any conference I attend.... Fix xdrproc_t prototype. () instead of (...) breaks C++ programs. Notes: svn path=/head/; revision=61927
* bindresvport related changesYoshinobu Inoue2000-01-261-1/+1
| | | | | | | | | | | | | -changed bindresvport2 to bindresvport_sa -merged the man into bindresvport.3 All discussion between Jean-Luc Richier <Jean-Luc.Richier@imag.fr>, Theo de Raadt <deraadt@cvs.openbsd.org>, itojun, is reflected to this code. (Actually Theo de Raadt write the code simultaneously as the discussion change.) Notes: svn path=/head/; revision=56629
* libc rcmd update for IPv6.Yoshinobu Inoue2000-01-131-0/+1
| | | | | | | | | | | A new function bindresvport2(), AF independent version of bindresvport() is also added. Reviewed by: sumikawa Obtained from: KAME project Notes: svn path=/head/; revision=55918
* Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"Peter Wemm1999-12-293-3/+4
| | | | | | | | | is an application space macro and the applications are supposed to be free to use it as they please (but cannot). This is consistant with the other BSD's who made this change quite some time ago. More commits to come. Notes: svn path=/head/; revision=55206
* $Id$ -> $FreeBSD$Peter Wemm1999-08-2712-12/+12
| | | | Notes: svn path=/head/; revision=50473
* #ifdef out DES ioctls which don't exist in FreeBSD. These originatedBill Paul1998-09-261-0/+10
| | | | | | | | | | | | with the SunRPC code to allow the use of hardware DES on certain Sun hardware that supported it (if you installed the appropriate kit). We don't have them and they apparently break the ioctl table generation for kdump. Pointed out by: bde Notes: svn path=/head/; revision=39661
* Don't declare functions without a prototype if KERNEL is defined. ThisBruce Evans1998-09-212-4/+11
| | | | | | | fixes lots of warnings about missing prototypes in sys/netatm/spans/*. Notes: svn path=/head/; revision=39534
* Add support for the RPC 64-bit integer type ``hyper''.David E. O'Brien1998-09-081-1/+3
| | | | Notes: svn path=/head/; revision=38952
* Uncommit the generated file key_prot.h. Install it from where itBruce Evans1998-02-131-261/+0
| | | | | | | | | | | | is generated. It must be installed in both /usr/include/rpc/ and /usr/include/rpcsvc/ for historical reasons. The generated version was once missing ANSI prototypes because the wrong flags were passed to rpcgen, but that is fixed now. The committed version had `#pragma indent' which gratuitously broke K&R support. Apart from this, all versions before and after this commit are identical. Notes: svn path=/head/; revision=33298
* Null change to attach the correct log message for the previous commit:Bruce Evans1998-01-161-1/+1
| | | | | | | | | | Added some forward struct declarations so that this file is less self-insufficent. Fixed an incomplete prototype. Fixed some misformattings. Notes: svn path=/head/; revision=32550
* Added a forward struct declaration so that this file is lessBruce Evans1998-01-162-4/+10
| | | | | | | self-insufficent. Notes: svn path=/head/; revision=32549