]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sunrpc/rpc/svc.h
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sunrpc / rpc / svc.h
index f7b05452cc861564b3cecb69b8b0e467de679173..b7c17cf337a96f38f1b6f4062088a764b2edd28a 100644 (file)
@@ -1,41 +1,55 @@
-/* @(#)svc.h   2.2 88/07/29 4.0 RPCSRC; from 1.20 88/02/08 SMI */
 /*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part.  Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user.
+ * svc.h, Server-side remote procedure call interface.
  *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ * This file is part of the GNU C Library.
  *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
+ * The GNU C Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
  *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
+ * The GNU C Library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
  *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the GNU C Library; if not, see
+ * <https://www.gnu.org/licenses/>.
  *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California  94043
- */
-
-/*
- * svc.h, Server-side remote procedure call interface.
+ * Copyright (c) 2010, Oracle America, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
  *
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *     * Neither the name of the "Oracle America, Inc." nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __SVC_HEADER__
-#define __SVC_HEADER__
+#ifndef _RPC_SVC_H
+#define _RPC_SVC_H 1
 
 #include <features.h>
 #include <rpc/rpc_msg.h>
@@ -78,18 +92,18 @@ struct SVCXPRT {
   int xp_sock;
   u_short xp_port;             /* associated port number */
   const struct xp_ops {
-    bool_t     (*xp_recv) __P ((SVCXPRT *__xprt, struct rpc_msg *__msg));
+    bool_t     (*xp_recv) (SVCXPRT *__xprt, struct rpc_msg *__msg);
                                /* receive incoming requests */
-    enum xprt_stat (*xp_stat) __P ((SVCXPRT *__xprt));
+    enum xprt_stat (*xp_stat) (SVCXPRT *__xprt);
                                /* get transport status */
-    bool_t     (*xp_getargs) __P ((SVCXPRT *__xprt, xdrproc_t __xdr_args,
-                                   caddr_t args_ptr)); /* get arguments */
-    bool_t     (*xp_reply) __P ((SVCXPRT *__xprt, struct rpc_msg *__msg));
+    bool_t     (*xp_getargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args,
+                              caddr_t __args_ptr); /* get arguments */
+    bool_t     (*xp_reply) (SVCXPRT *__xprt, struct rpc_msg *__msg);
                                /* send reply */
-    bool_t     (*xp_freeargs) __P ((SVCXPRT *__xprt, xdrproc_t __xdr_args,
-                                    caddr_t args_ptr));
+    bool_t     (*xp_freeargs) (SVCXPRT *__xprt, xdrproc_t __xdr_args,
+                               caddr_t __args_ptr);
                                /* free mem allocated for args */
-    void       (*xp_destroy) __P ((SVCXPRT *__xprt));
+    void       (*xp_destroy) (SVCXPRT *__xprt);
                                /* destroy this struct */
   } *xp_ops;
   int          xp_addrlen;      /* length of remote address */
@@ -97,6 +111,7 @@ struct SVCXPRT {
   struct opaque_auth xp_verf;   /* raw response verifier */
   caddr_t              xp_p1;           /* private */
   caddr_t              xp_p2;           /* private */
+  char         xp_pad [256];   /* padding, internal use */
 };
 
 /*
@@ -147,41 +162,41 @@ struct SVCXPRT {
  * Service request
  */
 struct svc_req {
-       u_long          rq_prog;        /* service program number */
-       u_long          rq_vers;        /* service protocol version */
-       u_long          rq_proc;        /* the desired procedure */
-       struct opaque_auth rq_cred;     /* raw creds from the wire */
-       caddr_t         rq_clntcred;    /* read only cooked cred */
-       SVCXPRT *rq_xprt;               /* associated transport */
+  rpcprog_t rq_prog;            /* service program number */
+  rpcvers_t rq_vers;            /* service protocol version */
+  rpcproc_t rq_proc;            /* the desired procedure */
+  struct opaque_auth rq_cred;   /* raw creds from the wire */
+  caddr_t rq_clntcred;          /* read only cooked cred */
+  SVCXPRT *rq_xprt;             /* associated transport */
 };
 
 #ifndef __DISPATCH_FN_T
-#define __DISPATCH_FN_T                                                 
-typedef void (*__dispatch_fn_t) __P((struct svc_req*, SVCXPRT*));
-#endif                                                               
+#define __DISPATCH_FN_T
+typedef void (*__dispatch_fn_t) (struct svc_req*, SVCXPRT*);
+#endif
 
 /*
  * Service registration
  *
  * svc_register(xprt, prog, vers, dispatch, protocol)
  *     SVCXPRT *xprt;
- *     u_long prog;
- *     u_long vers;
- *     void (*dispatch)();
- *     u_long protocol;  like TCP or UDP, zero means do not register
+ *     rpcprog_t prog;
+ *     rpcvers_t vers;
+ *     void (*dispatch)(struct svc_req*, SVCXPRT*);
+ *     rpcprot_t protocol;  like TCP or UDP, zero means do not register
  */
-extern bool_t  svc_register __P ((SVCXPRT *__xprt, u_long __prog,
-                                  u_long __vers, __dispatch_fn_t __dispatch,
-                                  u_long __protocol));
+extern bool_t svc_register (SVCXPRT *__xprt, rpcprog_t __prog,
+                           rpcvers_t __vers, __dispatch_fn_t __dispatch,
+                           rpcprot_t __protocol) __THROW;
 
 /*
  * Service un-registration
  *
  * svc_unregister(prog, vers)
- *     u_long prog;
- *     u_long vers;
+ *     rpcprog_t prog;
+ *     rpcvers_t vers;
  */
-extern void    svc_unregister __P ((u_long __prog, u_long __vers));
+extern void svc_unregister (rpcprog_t __prog, rpcvers_t __vers) __THROW;
 
 /*
  * Transport registration.
@@ -189,7 +204,7 @@ extern void svc_unregister __P ((u_long __prog, u_long __vers));
  * xprt_register(xprt)
  *     SVCXPRT *xprt;
  */
-extern void    xprt_register __P ((SVCXPRT *__xprt));
+extern void xprt_register (SVCXPRT *__xprt) __THROW;
 
 /*
  * Transport un-register
@@ -197,9 +212,7 @@ extern void xprt_register __P ((SVCXPRT *__xprt));
  * xprt_unregister(xprt)
  *     SVCXPRT *xprt;
  */
-extern void    xprt_unregister __P ((SVCXPRT *__xprt));
-
-
+extern void xprt_unregister (SVCXPRT *__xprt) __THROW;
 
 
 /*
@@ -228,23 +241,23 @@ extern void       xprt_unregister __P ((SVCXPRT *__xprt));
  * deadlock the caller and server processes!
  */
 
-extern bool_t  svc_sendreply __P ((SVCXPRT *xprt, xdrproc_t __xdr_results,
-                                   caddr_t __xdr_location));
+extern bool_t  svc_sendreply (SVCXPRT *__xprt, xdrproc_t __xdr_results,
+                              caddr_t __xdr_location) __THROW;
 
-extern void    svcerr_decode __P ((SVCXPRT *__xprt));
+extern void    svcerr_decode (SVCXPRT *__xprt) __THROW;
 
-extern void    svcerr_weakauth __P ((SVCXPRT *__xprt));
+extern void    svcerr_weakauth (SVCXPRT *__xprt) __THROW;
 
-extern void    svcerr_noproc __P ((SVCXPRT *__xprt));
+extern void    svcerr_noproc (SVCXPRT *__xprt) __THROW;
 
-extern void    svcerr_progvers __P ((SVCXPRT *__xprt, u_long __low_vers,
-                                     u_long __high_vers));
+extern void    svcerr_progvers (SVCXPRT *__xprt, rpcvers_t __low_vers,
+                                rpcvers_t __high_vers) __THROW;
 
-extern void    svcerr_auth __P ((SVCXPRT *__xprt, enum auth_stat __why));
+extern void    svcerr_auth (SVCXPRT *__xprt, enum auth_stat __why) __THROW;
 
-extern void    svcerr_noprog __P ((SVCXPRT *__xprt));
+extern void    svcerr_noprog (SVCXPRT *__xprt) __THROW;
 
-extern void    svcerr_systemerr __P ((SVCXPRT *__xprt));
+extern void    svcerr_systemerr (SVCXPRT *__xprt) __THROW;
 
 /*
  * Lowest level dispatching -OR- who owns this process anyway.
@@ -261,21 +274,22 @@ extern void       svcerr_systemerr __P ((SVCXPRT *__xprt));
  * Global keeper of rpc service descriptors in use
  * dynamic; must be inspected before each call to select
  */
-#ifdef FD_SETSIZE
+
+extern struct pollfd *svc_pollfd;
+extern int svc_max_pollfd;
 extern fd_set svc_fdset;
 #define svc_fds svc_fdset.fds_bits[0]  /* compatibility */
-#else
-extern int svc_fds;
-#endif /* def FD_SETSIZE */
 
 /*
  * a small program implemented by the svc_rpc implementation itself;
  * also see clnt.h for protocol numbers.
  */
-extern void svc_getreq __P ((int __rdfds));
-extern void svc_getreqset __P ((fd_set *__readfds));
-extern void svc_exit __P ((void));
-extern void svc_run __P ((void));
+extern void svc_getreq (int __rdfds) __THROW;
+extern void svc_getreq_common (const int __fd) __THROW;
+extern void svc_getreqset (fd_set *__readfds) __THROW;
+extern void svc_getreq_poll (struct pollfd *, const int) __THROW;
+extern void svc_exit (void) __THROW;
+extern void svc_run (void) __THROW;
 
 /*
  * Socket to use on svcxxx_create call to get default socket
@@ -289,22 +303,34 @@ extern void svc_run __P ((void));
 /*
  * Memory based rpc for testing and timing.
  */
-extern SVCXPRT *svcraw_create __P ((void));
+extern SVCXPRT *svcraw_create (void) __THROW;
 
 /*
  * Udp based rpc.
  */
-extern SVCXPRT *svcudp_create __P ((int __sock));
-extern SVCXPRT *svcudp_bufcreate __P ((int __sock, u_int __sendsz,
-                                      u_int __recvsz));
+extern SVCXPRT *svcudp_create (int __sock) __THROW;
+extern SVCXPRT *svcudp_bufcreate (int __sock, u_int __sendsz, u_int __recvsz)
+     __THROW;
 
 /*
  * Tcp based rpc.
  */
-extern SVCXPRT *svctcp_create __P ((int __sock, u_int __sendsize,
-                                   u_int __recvsize));
+extern SVCXPRT *svctcp_create (int __sock, u_int __sendsize, u_int __recvsize)
+     __THROW;
+
+/*
+ * FD based rpc.
+ */
+extern SVCXPRT *svcfd_create (int __sock, u_int __sendsize, u_int __recvsize)
+     __THROW;
+
+/*
+ * Unix based rpc.
+ */
+extern SVCXPRT *svcunix_create (int __sock, u_int __sendsize, u_int __recvsize,
+                               char *__path) __THROW;
 
 
 __END_DECLS
 
-#endif /* !__SVC_HEADER__ */
+#endif /* rpc/svc.h */