* auth.h: Provide full prototype for xdr_des_block
authorEzra Peisach <epeisach@mit.edu>
Thu, 28 Jun 2001 20:46:58 +0000 (20:46 +0000)
committerEzra Peisach <epeisach@mit.edu>
Thu, 28 Jun 2001 20:46:58 +0000 (20:46 +0000)
* auth_gssapi.h: Complete prototypes for
_svcauth_gssapi_unset_names().

* clnt.h: Prototype dispatch functions and all functions.

* clnt_perror.c: Prototype static auth_errmsg().

* clnt_raw.h clnt_tcp.c, clnt_udp.c: Provide prototypes to static
functions and match dispatch table prototypes. control function
takes void * instead of caddr_t.

* pmap_rmt.c: Move prototype for resultproc_t to pmap_clnt.h.

* rpc.h: get_myaddress returns int. Add prototypes for callrpc and
getrpcport.

* rpc_commondata.c (rpc_createerr): When initializing rpc_creaerr
use RPC_SUCCESS instead of 0.

* get_myaddress.c, rpc_dtablesize.c: Include gssrpc/rpc.h for
prototype.

* pmap_clnt.h, pmap_prot.h, pmap_rmt.h, rpc_msg.h: Full prototypes
for all functions.

* svc.c: Provide full prototype for static function.

* svc.h: Prototypes for dispatch functions added. Flushed out
prototypes for all functions missing prototypes. Added prototype
for svcfd_create.

* svc_auth.c: Prototypes for all functions referenced.

* svc_auth.h: Prototype dispatch functions to svc_auth_ops.

* svc_auth_any.c: Replace use of authany_wrap() with a new local
function that matches svc_auth_ops dispatch table.

* svc_simple.c: Provide prototype for static function
universal. Fill in missing types of parameters to
gssrpc_registerrpc.

* svc_raw.c svc_tcp.c, svc_udp.c: Provide prototypes for static
functions and match prototypes in dispatch table. Change getargs
and freeargs argument to void * from caddr_t.

* xdr.c (xdr_void): Function to match prototype of arguments given.

* xdr.h: Provide full prototypes for xdr_ops dispatch table and
xdr_void().

* svc_auth_gssapi.c, xdr_alloc.c, xdr_mem.c, xdr_rec.c,
xdr_stdio.c: Provide protypes for static functions and match
dispatch tables.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13528 dc483132-0cff-0310-8789-dd5450dbe970

33 files changed:
src/lib/rpc/ChangeLog
src/lib/rpc/auth.h
src/lib/rpc/auth_gssapi.h
src/lib/rpc/clnt.h
src/lib/rpc/clnt_perror.c
src/lib/rpc/clnt_raw.c
src/lib/rpc/clnt_tcp.c
src/lib/rpc/clnt_udp.c
src/lib/rpc/get_myaddress.c
src/lib/rpc/pmap_clnt.h
src/lib/rpc/pmap_prot.h
src/lib/rpc/pmap_rmt.c
src/lib/rpc/pmap_rmt.h
src/lib/rpc/rpc.h
src/lib/rpc/rpc_commondata.c
src/lib/rpc/rpc_dtablesize.c
src/lib/rpc/rpc_msg.h
src/lib/rpc/svc.c
src/lib/rpc/svc.h
src/lib/rpc/svc_auth.c
src/lib/rpc/svc_auth.h
src/lib/rpc/svc_auth_any.c
src/lib/rpc/svc_auth_gssapi.c
src/lib/rpc/svc_raw.c
src/lib/rpc/svc_simple.c
src/lib/rpc/svc_tcp.c
src/lib/rpc/svc_udp.c
src/lib/rpc/xdr.c
src/lib/rpc/xdr.h
src/lib/rpc/xdr_alloc.c
src/lib/rpc/xdr_mem.c
src/lib/rpc/xdr_rec.c
src/lib/rpc/xdr_stdio.c

index 050630fd3a8307bfad0fb896afacaa39aa1bf066..6410072a669a384b2e539f9321d45c4132e217b0 100644 (file)
@@ -1,3 +1,62 @@
+2001-06-28  Ezra Peisach  <epeisach@mit.edu>
+
+       * auth.h: Provide full prototype for xdr_des_block.
+
+       * auth_gssapi.h: Complete prototypes for
+       _svcauth_gssapi_unset_names().
+
+       * clnt.h: Prototype dispatch functions and all functions.
+
+       * clnt_perror.c: Prototype static auth_errmsg().
+
+       * clnt_raw.h clnt_tcp.c, clnt_udp.c: Provide prototypes to static
+       functions and match dispatch table prototypes. control function
+       takes void * instead of caddr_t.
+
+       * pmap_rmt.c: Move prototype for resultproc_t to pmap_clnt.h.
+
+       * rpc.h: get_myaddress returns int. Add prototypes for callrpc and
+       getrpcport.
+
+       * rpc_commondata.c (rpc_createerr): When initializing rpc_creaerr
+       use RPC_SUCCESS instead of 0. 
+
+       * get_myaddress.c, rpc_dtablesize.c: Include gssrpc/rpc.h for
+       prototype.
+
+       * pmap_clnt.h, pmap_prot.h, pmap_rmt.h, rpc_msg.h: Full prototypes
+       for all functions.
+
+       * svc.c: Provide full prototype for static function.
+
+       * svc.h: Prototypes for dispatch functions added. Flushed out
+       prototypes for all functions missing prototypes. Added prototype
+       for svcfd_create.
+
+       * svc_auth.c: Prototypes for all functions referenced.
+
+       * svc_auth.h: Prototype dispatch functions to svc_auth_ops.
+
+       * svc_auth_any.c: Replace use of authany_wrap() with a new local
+       function that matches svc_auth_ops dispatch table.
+
+       * svc_simple.c: Provide prototype for static function
+       universal. Fill in missing types of parameters to
+       gssrpc_registerrpc.
+
+       * svc_raw.c svc_tcp.c, svc_udp.c: Provide prototypes for static
+       functions and match prototypes in dispatch table. Change getargs
+       and freeargs argument to void * from caddr_t.
+
+       * xdr.c (xdr_void): Function to match prototype of arguments given.
+
+       * xdr.h: Provide full prototypes for xdr_ops dispatch table and
+       xdr_void().
+
+       * svc_auth_gssapi.c, xdr_alloc.c, xdr_mem.c, xdr_rec.c,
+       xdr_stdio.c: Provide protypes for static functions and match
+       dispatch tables.
+
 2001-06-27  Ezra Peisach  <epeisach@mit.edu>
 
        * bindresvport.c: Include gssrpc/rpc.h for prototype.
index e47a3881e56bdb14081d79587f6a58b40b073ad6..8c2bb58afe73dbcbfdc21b935072f8f812010c32 100644 (file)
@@ -75,7 +75,7 @@ union des_block {
 };
 typedef union des_block des_block;
 #define xdr_des_block  gssrpc_xdr_des_block
-extern bool_t xdr_des_block();
+extern bool_t xdr_des_block(XDR *, des_block *);
 
 /*
  * Authentication info.  Opaque to client.
index bd6ea173c61919aa54d7526efd8088a75f11cd28..7f4aae5f87f92237245781c7549a57bc1c7253a6 100644 (file)
@@ -122,7 +122,7 @@ PROTOTYPE((gss_ctx_id_t context, gss_buffer_t in_buf, rpc_u_int32 *seq_num));
 bool_t _svcauth_gssapi_set_names
 PROTOTYPE((auth_gssapi_name *names, int num));
 void _svcauth_gssapi_unset_names
-PROTOTYPE(());
+PROTOTYPE((void));
 
 void _svcauth_gssapi_set_log_badauth_func
 PROTOTYPE((auth_gssapi_log_badauth_func func,
index f308dd999689fcbe4f7fd14fcfeac72706198898..ccdbe1c222b3fec8e9e85ba6859d758b0da199e9 100644 (file)
@@ -110,15 +110,27 @@ struct rpc_err {
  * Created by individual implementations, see e.g. rpc_udp.c.
  * Client is responsible for initializing auth, see e.g. auth_none.c.
  */
-typedef struct {
+typedef struct __rpc_client {
        AUTH    *cl_auth;                       /* authenticator */
        struct clnt_ops {
-               enum clnt_stat  (*cl_call)();   /* call remote procedure */
-               void            (*cl_abort)();  /* abort a call */
-               void            (*cl_geterr)(); /* get specific error code */
-               bool_t          (*cl_freeres)(); /* frees results */
-               void            (*cl_destroy)();/* destroy this structure */
-               bool_t          (*cl_control)();/* the ioctl() of rpc */
+               /* call remote procedure */
+               enum clnt_stat  (*cl_call)(struct __rpc_client *,
+                                          rpc_u_int32, xdrproc_t, void *,
+                                          xdrproc_t, void *, 
+                                          struct timeval);     
+                /* abort a call */
+               void            (*cl_abort)(struct __rpc_client *);     
+                /* get specific error code */
+               void            (*cl_geterr)(struct __rpc_client *, 
+                                            struct rpc_err *); 
+                /* frees results */
+               bool_t          (*cl_freeres)(struct __rpc_client *,
+                                             xdrproc_t, void *);
+                /* destroy this structure */
+               void            (*cl_destroy)(struct __rpc_client *);
+                /* the ioctl() of rpc */
+               bool_t          (*cl_control)(struct __rpc_client *, int,
+                                             void *);
        } *cl_ops;
        caddr_t                 cl_private;     /* private stuff */
 } CLIENT;
@@ -240,7 +252,7 @@ typedef struct {
  *     rpc_u_int32 vers;
  */
 #define clntraw_create gssrpc_clntraw_create
-extern CLIENT *clntraw_create();
+extern CLIENT *clntraw_create(rpc_u_int32, rpc_u_int32);
 
 
 /*
@@ -248,13 +260,7 @@ extern CLIENT *clntraw_create();
  */
 #define clnt_create    gssrpc_clnt_create
 extern CLIENT *
-clnt_create(/*host, prog, vers, prot*/); /*
-       char *host;     -- hostname
-       rpc_u_int32 prog;       -- program number
-       rpc_u_int32 vers;       -- version number
-       char *prot;     -- protocol
-*/
-
+clnt_create(char *, rpc_u_int32, rpc_u_int32, char *);
 
 
 
@@ -270,7 +276,8 @@ clnt_create(/*host, prog, vers, prot*/); /*
  *     unsigned int recvsz;
  */
 #define clnttcp_create gssrpc_clnttcp_create
-extern CLIENT *clnttcp_create();
+extern CLIENT *clnttcp_create(struct sockaddr_in *, rpc_u_int32, rpc_u_int32,
+                             int *, unsigned int, unsigned int);
 
 /*
  * UDP based rpc.
@@ -295,8 +302,11 @@ extern CLIENT *clnttcp_create();
  */
 #define clntudp_create         gssrpc_clntudp_create
 #define clntudp_bufcreate      gssrpc_clntudp_bufcreate
-extern CLIENT *clntudp_create();
-extern CLIENT *clntudp_bufcreate();
+extern CLIENT *clntudp_create(struct sockaddr_in *, rpc_u_int32, 
+                             rpc_u_int32, struct timeval, int *);
+extern CLIENT *clntudp_bufcreate(struct sockaddr_in *, rpc_u_int32, 
+                                rpc_u_int32, struct timeval, int *,
+                                unsigned int, unsigned int);
 
 #define _rpc_dtablesize _gssrpc_rpc_dtablesize
 extern int _rpc_dtablesize(void);
@@ -305,22 +315,22 @@ extern int _rpc_dtablesize(void);
  */
 #define clnt_pcreateerror      gssrpc_clnt_pcreateerror
 #define clnt_spcreateerror     gssrpc_clnt_spcreateerror
-void clnt_pcreateerror(/* char *msg */);       /* stderr */
-char *clnt_spcreateerror(/* char *msg */);     /* string */
+void clnt_pcreateerror(char *);        /* stderr */
+char *clnt_spcreateerror(char *);      /* string */
 
 /*
  * Like clnt_perror(), but is more verbose in its output
  */ 
 #define clnt_perrno            gssrpc_clnt_perrno
-void clnt_perrno(/* enum clnt_stat num */);    /* stderr */
+void clnt_perrno(enum clnt_stat num);  /* stderr */
 
 /*
  * Print an English error message, given the client error code
  */
 #define clnt_perror            gssrpc_clnt_perror
 #define clnt_sperror           gssrpc_clnt_sperror
-void clnt_perror(/* CLIENT *clnt, char *msg */);       /* stderr */
-char *clnt_sperror(/* CLIENT *clnt, char *msg */);     /* string */
+void clnt_perror(CLIENT *, char *);    /* stderr */
+char *clnt_sperror(CLIENT *, char *);  /* string */
 
 /* 
  * If a creation fails, the following allows the user to figure out why.
@@ -339,7 +349,7 @@ extern struct rpc_createerr rpc_createerr;
  * Copy error message to buffer.
  */
 #define clnt_sperrno           gssrpc_clnt_sperrno
-char *clnt_sperrno(/* enum clnt_stat num */);  /* string */
+char *clnt_sperrno(enum clnt_stat num);        /* string */
 
 #define UDPMSGSIZE     8800    /* rpc imposed limit on udp msg size */
 #define RPCSMALLMSGSIZE        400     /* a more reasonable packet size */
index 50168dff444ac85808044cddece4ff3f3e07840f..08e8471b1eadd63edd7a312a6192a595adb553e5 100644 (file)
@@ -53,7 +53,7 @@ extern int sys_nerr;
 #undef strerror
 #define strerror(N) (((N) > 0 && (N) < sys_nerr) ? sys_errlist[N] : (char *)0)
 #endif /* HAVE_STRERROR */
-static char *auth_errmsg();
+static char *auth_errmsg(enum auth_stat);
 
 
 
index 44fbf5da2aa3087a45828a71955f2c68011560ee..464142a44d6dd82d99f51afc786dbf1da9cbb7ab 100644 (file)
@@ -57,12 +57,14 @@ static struct clntraw_private {
        unsigned int    mcnt;
 } *clntraw_private;
 
-static enum clnt_stat  clntraw_call();
-static void            clntraw_abort();
-static void            clntraw_geterr();
-static bool_t          clntraw_freeres();
-static bool_t          clntraw_control();
-static void            clntraw_destroy();
+static enum clnt_stat  clntraw_call(CLIENT *, rpc_u_int32, xdrproc_t, 
+                                    void *, xdrproc_t, void *, 
+                                    struct timeval);
+static void            clntraw_abort(CLIENT *);
+static void            clntraw_geterr(CLIENT *, struct rpc_err *);
+static bool_t          clntraw_freeres(CLIENT *, xdrproc_t, void *);
+static bool_t          clntraw_control(CLIENT *, int, void *);
+static void            clntraw_destroy(CLIENT *);
 
 static struct clnt_ops client_ops = {
        clntraw_call,
@@ -126,9 +128,9 @@ clntraw_call(h, proc, xargs, argsp, xresults, resultsp, timeout)
        CLIENT *h;
        rpc_u_int32 proc;
        xdrproc_t xargs;
-       caddr_t argsp;
+       void * argsp;
        xdrproc_t xresults;
-       caddr_t resultsp;
+       void * resultsp;
        struct timeval timeout;
 {
        register struct clntraw_private *clp = clntraw_private;
@@ -180,7 +182,7 @@ call_again:
                 * specifies a receive buffer size that is too small.)
                 * This memory must be free()ed to avoid a leak.
                 */
-               int op = xdrs->x_op;
+               enum xdr_op op = xdrs->x_op;
                xdrs->x_op = XDR_FREE;
                xdr_replymsg(xdrs, &msg);
                xdrs->x_op = op;
@@ -212,8 +214,11 @@ call_again:
        return (status);
 }
 
+/*ARGSUSED*/
 static void
-clntraw_geterr()
+clntraw_geterr(cl, err)
+     CLIENT *cl;
+     struct rpc_err *err;
 {
 }
 
@@ -222,7 +227,7 @@ static bool_t
 clntraw_freeres(cl, xdr_res, res_ptr)
        CLIENT *cl;
        xdrproc_t xdr_res;
-       caddr_t res_ptr;
+       void *res_ptr;
 {
        register struct clntraw_private *clp = clntraw_private;
        register XDR *xdrs = &clp->xdr_stream;
@@ -237,18 +242,26 @@ clntraw_freeres(cl, xdr_res, res_ptr)
        return ((*xdr_res)(xdrs, res_ptr));
 }
 
+/*ARGSUSED*/
 static void
-clntraw_abort()
+clntraw_abort(cl)
+       CLIENT *cl;
 {
 }
 
+/*ARGSUSED*/
 static bool_t
-clntraw_control()
+clntraw_control(cl, request, info)
+       CLIENT *cl;
+       int request;
+       void *info;
 {
        return (FALSE);
 }
 
+/*ARGSUSED*/
 static void
-clntraw_destroy()
+clntraw_destroy(cl)
+     CLIENT *cl;
 {
 }
index 6f81ea1367c939e302e9af9b423c0b3e6f5a6866..c89950b432d5389188e5b2646449214a76d5eb76 100644 (file)
@@ -62,15 +62,13 @@ static char sccsid[] = "@(#)clnt_tcp.c 1.37 87/10/05 Copyr 1984 Sun Micro";
 
 extern int errno;
 
-static int     readtcp();
-static int     writetcp();
-
-static enum clnt_stat  clnttcp_call();
-static void            clnttcp_abort();
-static void            clnttcp_geterr();
-static bool_t          clnttcp_freeres();
-static bool_t           clnttcp_control();
-static void            clnttcp_destroy();
+static enum clnt_stat  clnttcp_call(CLIENT *, rpc_u_int32, xdrproc_t, void *,
+                                    xdrproc_t, void *, struct timeval);
+static void            clnttcp_abort(CLIENT *);
+static void            clnttcp_geterr(CLIENT *, struct rpc_err *);
+static bool_t          clnttcp_freeres(CLIENT *, xdrproc_t, void *);
+static bool_t           clnttcp_control(CLIENT *, int, void *);
+static void            clnttcp_destroy(CLIENT *);
 
 static struct clnt_ops tcp_ops = {
        clnttcp_call,
@@ -93,6 +91,10 @@ struct ct_data {
        XDR             ct_xdrs;
 };
 
+static int     readtcp(struct ct_data *, caddr_t, int);
+static int     writetcp(struct ct_data *, caddr_t, int);
+
+
 /*
  * Create a client handle for a tcp/ip connection.
  * If *sockp<0, *sockp is set to a newly created TCP socket and it is
@@ -225,9 +227,9 @@ clnttcp_call(h, proc, xdr_args, args_ptr, xdr_results, results_ptr, timeout)
        register CLIENT *h;
        rpc_u_int32 proc;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void * args_ptr;
        xdrproc_t xdr_results;
-       caddr_t results_ptr;
+       void * results_ptr;
        struct timeval timeout;
 {
        register struct ct_data *ct = (struct ct_data *) h->cl_private;
@@ -289,7 +291,7 @@ call_again:
                         * to avoid leaks, since it may allocate
                         * memory from partially successful decodes.
                         */
-                       int op = xdrs->x_op;
+                       enum xdr_op op = xdrs->x_op;
                        xdrs->x_op = XDR_FREE;
                        xdr_replymsg(xdrs, &reply_msg);
                        xdrs->x_op = op;
@@ -344,7 +346,7 @@ static bool_t
 clnttcp_freeres(cl, xdr_res, res_ptr)
        CLIENT *cl;
        xdrproc_t xdr_res;
-       caddr_t res_ptr;
+       void * res_ptr;
 {
        register struct ct_data *ct = (struct ct_data *)cl->cl_private;
        register XDR *xdrs = &(ct->ct_xdrs);
@@ -353,8 +355,10 @@ clnttcp_freeres(cl, xdr_res, res_ptr)
        return ((*xdr_res)(xdrs, res_ptr));
 }
 
+/*ARGSUSED*/
 static void
-clnttcp_abort()
+clnttcp_abort(cl)
+       CLIENT *cl;
 {
 }
 
@@ -362,7 +366,7 @@ static bool_t
 clnttcp_control(cl, request, info)
        CLIENT *cl;
        int request;
-       char *info;
+       void *info;
 {
        register struct ct_data *ct = (struct ct_data *)cl->cl_private;
        int len;
index 7a8b03c1403c9d75cde99ca79f805b9eaa007998..12a3aca0cfe8c016258fb7ce7aa8c25958ceb178 100644 (file)
@@ -54,12 +54,13 @@ extern int errno;
 /*
  * UDP bases client side rpc operations
  */
-static enum clnt_stat  clntudp_call();
-static void            clntudp_abort();
-static void            clntudp_geterr();
-static bool_t          clntudp_freeres();
-static bool_t           clntudp_control();
-static void            clntudp_destroy();
+static enum clnt_stat  clntudp_call(CLIENT *, rpc_u_int32, xdrproc_t, void *,
+                                    xdrproc_t, void *, struct timeval);
+static void            clntudp_abort(CLIENT *);
+static void            clntudp_geterr(CLIENT *, struct rpc_err *);
+static bool_t          clntudp_freeres(CLIENT *, xdrproc_t, void *);
+static bool_t           clntudp_control(CLIENT *, int, void *);
+static void            clntudp_destroy(CLIENT *);
 
 static struct clnt_ops udp_ops = {
        clntudp_call,
@@ -221,9 +222,9 @@ clntudp_call(cl, proc, xargs, argsp, xresults, resultsp, utimeout)
        register CLIENT *cl;            /* client handle */
        rpc_u_int32             proc;           /* procedure number */
        xdrproc_t       xargs;          /* xdr routine for args */
-       caddr_t         argsp;          /* pointer to args */
+       void *          argsp;          /* pointer to args */
        xdrproc_t       xresults;       /* xdr routine for results */
-       caddr_t         resultsp;       /* pointer to results */
+       void *          resultsp;       /* pointer to results */
        struct timeval  utimeout;       /* seconds to wait before giving up */
 {
        register struct cu_data *cu = (struct cu_data *)cl->cl_private;
@@ -390,7 +391,7 @@ send_again:
                 * specifies a receive buffer size that is too small.)
                 * This memory must be free()ed to avoid a leak.
                 */
-               int op = reply_xdrs.x_op;
+               enum xdr_op op = reply_xdrs.x_op;
                reply_xdrs.x_op = XDR_FREE;
                xdr_replymsg(&reply_xdrs, &reply_msg);
                reply_xdrs.x_op = op;
@@ -415,7 +416,7 @@ static bool_t
 clntudp_freeres(cl, xdr_res, res_ptr)
        CLIENT *cl;
        xdrproc_t xdr_res;
-       caddr_t res_ptr;
+       void *res_ptr;
 {
        register struct cu_data *cu = (struct cu_data *)cl->cl_private;
        register XDR *xdrs = &(cu->cu_outxdrs);
@@ -424,9 +425,11 @@ clntudp_freeres(cl, xdr_res, res_ptr)
        return ((*xdr_res)(xdrs, res_ptr));
 }
 
+
+/*ARGSUSED*/
 static void 
-clntudp_abort(/*h*/)
-       /*CLIENT *h;*/
+clntudp_abort(h)
+       CLIENT *h;
 {
 }
 
@@ -434,7 +437,7 @@ static bool_t
 clntudp_control(cl, request, info)
        CLIENT *cl;
        int request;
-       char *info;
+       void *info;
 {
        register struct cu_data *cu = (struct cu_data *)cl->cl_private;
        
index 9f79cda1b730898af8f1f8d4cb7e1178c82eb38b..f5bf2bdabffa228e788ad1ca8ff83ec59b654f52 100644 (file)
@@ -41,6 +41,7 @@ static char sccsid[] = "@(#)get_myaddress.c 1.4 87/08/11 Copyr 1984 Sun Micro";
 #ifdef GSSAPI_KRB5
 #include <string.h>
 #include <gssrpc/types.h>
+#include <gssrpc/rpc.h>
 #include <gssrpc/pmap_prot.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
index 4b3ba02a22d1cbc0d8e31993c23cb2208765b04a..d4623c499d3ab9128606ba848f26da122dae6708 100644 (file)
 #define clnt_broadcast gssrpc_clnt_broadcast
 #define pmap_getport   gssrpc_pmap_getport
 
-extern bool_t          pmap_set();
-extern bool_t          pmap_unset();
-extern struct pmaplist *pmap_getmaps();
-enum clnt_stat         pmap_rmtcall();
-enum clnt_stat         clnt_broadcast();
-extern unsigned short          pmap_getport();
+extern bool_t          pmap_set(rpc_u_int32, rpc_u_int32, int, 
+                                unsigned short);
+extern bool_t          pmap_unset(rpc_u_int32, rpc_u_int32);
+extern struct pmaplist *pmap_getmaps(struct sockaddr_in *);
+enum clnt_stat         pmap_rmtcall(struct sockaddr_in *, rpc_u_int32, 
+                                    rpc_u_int32, rpc_u_int32, xdrproc_t, 
+                                    caddr_t, xdrproc_t, caddr_t, 
+                                    struct timeval, rpc_u_int32 *);
+
+typedef bool_t (*resultproc_t)(caddr_t, struct sockaddr_in *);
+
+enum clnt_stat         clnt_broadcast(rpc_u_int32, rpc_u_int32, rpc_u_int32,
+                                      xdrproc_t, caddr_t, xdrproc_t,
+                                      caddr_t, resultproc_t);
+extern unsigned short          pmap_getport(struct sockaddr_in *, 
+                                            rpc_u_int32, 
+                                            rpc_u_int32, unsigned int);
index 935fa45a1abf19f2b17fd621ae218ac3c05129e7..24f45274bb551be845e9cd4b366e74248da3428c 100644 (file)
@@ -85,7 +85,7 @@ struct pmap {
 };
 
 #define xdr_pmap       gssrpc_xdr_pmap
-extern bool_t xdr_pmap();
+extern bool_t xdr_pmap(XDR *, struct pmap *);
 
 struct pmaplist {
        struct pmap     pml_map;
@@ -93,4 +93,4 @@ struct pmaplist {
 };
 
 #define xdr_pmaplist   gssrpc_xdr_pmaplist
-extern bool_t xdr_pmaplist();
+extern bool_t xdr_pmaplist(XDR *, struct pmaplist **);
index 401fd80b6ea68062d92679cc6e0d29300f77da44..d1c565d295603f0d72827a07a7b1490689382681 100644 (file)
@@ -222,8 +222,6 @@ getbroadcastnets(addrs, sock, buf)
        return (i);
 }
 
-typedef bool_t (*resultproc_t)();
-
 enum clnt_stat 
 clnt_broadcast(prog, vers, proc, xargs, argsp, xresults, resultsp, eachresult)
        rpc_u_int32             prog;           /* program number */
index f43f618cd57299e4c30f884636b591a476ece56f..0771a74407686b9bc8f6e3c6292d0c2421d8f8ff 100644 (file)
@@ -42,7 +42,7 @@ struct rmtcallargs {
 };
 
 #define xdr_rmtcall_args       gssrpc_xdr_rmtcall_args
-bool_t xdr_rmtcall_args();
+bool_t xdr_rmtcall_args(XDR *, struct rmtcallargs *);
 
 struct rmtcallres {
        rpc_u_int32 *port_ptr;
@@ -52,4 +52,4 @@ struct rmtcallres {
 };
 
 #define xdr_rmtcallres         gssrpc_xdr_rmtcallres
-bool_t xdr_rmtcallres();
+bool_t xdr_rmtcallres(XDR *, struct rmtcallres *);
index bd12dcf01c9bea8cbb0a9df4c5cb68f1bb03b066..917001537a84588f5ea8cbdc28c0a9c66cf4aec5 100644 (file)
  * name service library functions
  */
 #define get_myaddress  gssrpc_get_myaddress
-extern void get_myaddress (struct sockaddr_in *);
+extern int get_myaddress (struct sockaddr_in *);
 
 #define bindresvport   gssrpc_bindresvport
 extern int bindresvport(int, struct sockaddr_in *);
 
+#define callrpc         gssrpc_callrpc
+extern int callrpc (char *, int, int, int, xdrproc_t, char *,
+                   xdrproc_t , char *);
+
+#define getrpcport     gssrpc_getrpcport
+extern int getrpcport (char *, int, int, int);
+
 #endif /* ndef __RPC_HEADER__ */
index 9391f51938b2b3aac928149a6b46cf7bc77c9cff..8c27774e21f7cb1a53aad570ed29a92137883c9f 100644 (file)
@@ -41,4 +41,4 @@ fd_set svc_fdset = {0};
 #else
 int svc_fds = 0;
 #endif /* def FD_SETSIZE */
-struct rpc_createerr rpc_createerr = {0};
+struct rpc_createerr rpc_createerr = {RPC_SUCCESS};
index c26f87b96b2cd374d6962485d2beefdb1b576745..0a00bfe0386832142d72e3679947bbb0d0e1de84 100644 (file)
@@ -32,6 +32,7 @@ static char sccsid[] = "@(#)rpc_dtablesize.c 1.2 87/08/11 Copyr 1987 Sun Micro";
 #endif
 
 #include <unistd.h>
+#include <gssrpc/rpc.h>
 
 /*
  * Cache the result of getdtablesize(), so we don't have to do an
index 08ca63a31bf7d829525a0366061604e025ba972d..37632848f4531f6e078ff4522e6f625f9190a2ba 100644 (file)
@@ -161,7 +161,7 @@ struct rpc_msg {
  *     struct rpc_msg *cmsg;
  */
 #define xdr_callmsg    gssrpc_xdr_callmsg
-extern bool_t  xdr_callmsg();
+extern bool_t  xdr_callmsg(XDR *, struct rpc_msg *);
 
 /*
  * XDR routine to pre-serialize the static part of a rpc message.
@@ -170,7 +170,7 @@ extern bool_t       xdr_callmsg();
  *     struct rpc_msg *cmsg;
  */
 #define xdr_callhdr    gssrpc_xdr_callhdr
-extern bool_t  xdr_callhdr();
+extern bool_t  xdr_callhdr(XDR *, struct rpc_msg *);
 
 /*
  * XDR routine to handle a rpc reply.
@@ -179,7 +179,7 @@ extern bool_t       xdr_callhdr();
  *     struct rpc_msg *rmsg;
  */
 #define xdr_replymsg   gssrpc_xdr_replymsg
-extern bool_t  xdr_replymsg();
+extern bool_t  xdr_replymsg(XDR *, struct rpc_msg *);
 
 /*
  * Fills in the error part of a reply message.
@@ -189,4 +189,13 @@ extern bool_t      xdr_replymsg();
  */
 #define _seterr_reply  _gssrpc_seterr_reply
 #define sunrpc_seterr_reply    _seterr_reply
-extern void    _seterr_reply();
+extern void    _seterr_reply(struct rpc_msg *, struct rpc_err *);
+
+/* XDR the MSG_ACCEPTED part of a reply message union */
+#define xdr_accepted_reply gssrpc_xdr_accepted_reply
+extern bool_t  xdr_accepted_reply(XDR *, struct accepted_reply *);
+
+/* XDR the MSG_DENIED part of a reply message union */
+#define xdr_rejected_reply gssrpc_xdr_rejected_reply
+extern bool_t  xdr_rejected_reply(XDR *, struct rejected_reply *);
+
index 3118df241c23d88671430fe8b2ef96cc1e1ffea8..573ea887cee1abd5e3d745c80cef7475dcddc85c 100644 (file)
@@ -73,7 +73,8 @@ static struct svc_callout {
        void                (*sc_dispatch)();
 } *svc_head;
 
-static struct svc_callout *svc_find();
+static struct svc_callout *svc_find(rpc_u_int32, rpc_u_int32, 
+                                   struct svc_callout **);
 
 /* ***************  SVCXPRT related stuff **************** */
 
index 7472d2d7e85b634e4e5b0fee84476d266921def7..189edf32ac045cfbac146ead335d8f60ac14c686 100644 (file)
@@ -68,16 +68,25 @@ enum xprt_stat {
 /*
  * Server side transport handle
  */
-typedef struct {
+typedef struct __rpc_svcxprt {
        int             xp_sock;
        unsigned short          xp_port;         /* associated port number */
        struct xp_ops {
-           bool_t      (*xp_recv)();    /* receive incomming requests */
-           enum xprt_stat (*xp_stat)(); /* get transport status */
-           bool_t      (*xp_getargs)(); /* get arguments */
-           bool_t      (*xp_reply)();   /* send reply */
-           bool_t      (*xp_freeargs)();/* free mem allocated for args */
-           void        (*xp_destroy)(); /* destroy this struct */
+           /* receive incomming requests */
+           bool_t      (*xp_recv)(struct __rpc_svcxprt *, struct rpc_msg *);
+           /* get transport status */
+           enum xprt_stat (*xp_stat)(struct __rpc_svcxprt *); 
+           /* get arguments */
+           bool_t      (*xp_getargs)(struct __rpc_svcxprt *, xdrproc_t,
+                                     void *);
+           /* send reply */
+           bool_t      (*xp_reply)(struct __rpc_svcxprt *,
+                                   struct rpc_msg *);   
+            /* free mem allocated for args */
+           bool_t      (*xp_freeargs)(struct __rpc_svcxprt *, xdrproc_t,
+                                      void *);
+           /* destroy this struct */
+           void        (*xp_destroy)(struct __rpc_svcxprt *); 
        } *xp_ops;
        int             xp_addrlen;      /* length of remote address */
        struct sockaddr_in xp_raddr;     /* remote address */
@@ -173,9 +182,18 @@ struct svc_req {
  *     rpc_u_int32 vers;
  *     void (*dispatch)();
  *     int protocol;  like TCP or UDP, zero means do not register 
+ *
+ * registerrpc(prog, vers, proc, routine, inproc, outproc)
+ *     returns 0 upon success, -1 if error.
  */
 #define svc_register           gssrpc_svc_register
-extern bool_t  svc_register();
+extern bool_t  svc_register(SVCXPRT *, rpc_u_int32, rpc_u_int32, 
+                            void (*)(struct svc_req *, SVCXPRT *), int);
+
+#define registerrpc             gssrpc_registerrpc
+extern int registerrpc(rpc_u_int32, rpc_u_int32, rpc_u_int32, 
+                      char *(*)(void *),
+                      xdrproc_t, xdrproc_t);
 
 /*
  * Service un-registration
@@ -185,7 +203,7 @@ extern bool_t       svc_register();
  *     rpc_u_int32 vers;
  */
 #define svc_unregister         gssrpc_svc_unregister
-extern void    svc_unregister();
+extern void    svc_unregister(rpc_u_int32, rpc_u_int32);
 
 /*
  * Transport registration.
@@ -194,7 +212,7 @@ extern void svc_unregister();
  *     SVCXPRT *xprt;
  */
 #define xprt_register          gssrpc_xprt_register
-extern void    xprt_register();
+extern void    xprt_register(SVCXPRT *);
 
 /*
  * Transport un-register
@@ -203,7 +221,7 @@ extern void xprt_register();
  *     SVCXPRT *xprt;
  */
 #define xprt_unregister                gssrpc_xprt_unregister
-extern void    xprt_unregister();
+extern void    xprt_unregister(SVCXPRT *);
 
 
 
@@ -244,14 +262,14 @@ extern void       xprt_unregister();
 #define svcerr_noprog          gssrpc_svcerr_noprog
 #define svcerr_systemerr       gssrpc_svcerr_systemerr
 
-extern bool_t  svc_sendreply();
-extern void    svcerr_decode();
-extern void    svcerr_weakauth();
-extern void    svcerr_noproc();
-extern void    svcerr_progvers();
-extern void    svcerr_auth();
-extern void    svcerr_noprog();
-extern void    svcerr_systemerr();
+extern bool_t  svc_sendreply(SVCXPRT *, xdrproc_t, caddr_t);
+extern void    svcerr_decode(SVCXPRT *);
+extern void    svcerr_weakauth(SVCXPRT *);
+extern void    svcerr_noproc(SVCXPRT *);
+extern void    svcerr_progvers(SVCXPRT *, rpc_u_int32, rpc_u_int32);
+extern void    svcerr_auth(SVCXPRT *, enum auth_stat);
+extern void    svcerr_noprog(SVCXPRT *);
+extern void    svcerr_systemerr(SVCXPRT *);
     
 /*
  * Lowest level dispatching -OR- who owns this process anyway.
@@ -288,9 +306,13 @@ extern void rpctest_service();
 #define svc_getreqset  gssrpc_svc_getreqset
 #define svc_run                gssrpc_svc_run
 
-extern void    svc_getreq();
-extern void    svc_getreqset();        /* takes fdset instead of int */
-extern void    svc_run();       /* never returns */
+extern void    svc_getreq(int);
+#ifdef FD_SETSIZE
+extern void    svc_getreqset(fd_set *);/* takes fdset instead of int */
+#else
+extern void    svc_getreqset(int *);
+#endif
+extern void    svc_run(void);   /* never returns */
 
 /*
  * Socket to use on svcxxx_create call to get default socket
@@ -305,20 +327,28 @@ extern void       svc_run();       /* never returns */
  * Memory based rpc for testing and timing.
  */
 #define svcraw_create  gssrpc_svcraw_create
-extern SVCXPRT *svcraw_create();
+extern SVCXPRT *svcraw_create(void);
 
 /*
  * Udp based rpc.
  */
 #define svcudp_create          gssrpc_svcudp_create
 #define svcudp_bufcreate       gssrpc_svcudp_bufcreate
-extern SVCXPRT *svcudp_create();
-extern SVCXPRT *svcudp_bufcreate();
+extern SVCXPRT *svcudp_create(int);
+extern SVCXPRT *svcudp_bufcreate(int, unsigned int, unsigned int);
 
 /*
  * Tcp based rpc.
  */
 #define svctcp_create          gssrpc_svctcp_create
-extern SVCXPRT *svctcp_create();
+extern SVCXPRT *svctcp_create(int, unsigned int, unsigned int);
+
+/*
+ * Like svtcp_create(), except the routine takes any *open* UNIX file
+ * descriptor as its first input.
+ */
+#define svcfd_create            gssrpc_svcfd_create
+extern SVCXPRT *svcfd_create(int, u_int, u_int);
 
 #endif /* !__SVC_HEADER__ */
+
index b5b3eb5713c97f968407531ad5f125335af05708..2b65d5b594b26a43ce4ab3fbd7df2066626765ea 100644 (file)
@@ -56,14 +56,19 @@ static char sccsid[] = "@(#)svc_auth.c      2.1 88/08/07 4.0 RPCSRC; from 1.19 87/08/
 #define _svcauth_unix          _gssrpc_svcauth_unix
 #define _svcauth_short         _gssrpc_svcauth_short
 
-enum auth_stat _svcauth_null();                /* no authentication */
-enum auth_stat _svcauth_unix();                /* unix style (uid, gids) */
-enum auth_stat _svcauth_short();       /* short hand unix style */
-enum auth_stat _svcauth_gssapi();      /* GSS-API style */
+/* no authentication */
+enum auth_stat _svcauth_null(struct svc_req *, struct rpc_msg *, bool_t *);
+/* unix style (uid, gids) */
+enum auth_stat _svcauth_unix(struct svc_req *, struct rpc_msg *, bool_t *);
+/* short hand unix style */
+enum auth_stat _svcauth_short(struct svc_req *, struct rpc_msg *, bool_t *);
+/* GSS-API style */
+enum auth_stat _svcauth_gssapi(struct svc_req *, struct rpc_msg *, bool_t *);
 
 static struct svcauthsw_type {
      unsigned int flavor;
-     enum auth_stat (*authenticator)();
+     enum auth_stat (*authenticator)(struct svc_req *, struct rpc_msg *,
+                                    bool_t *);
 } svcauthsw[] = {
      {AUTH_GSSAPI, _svcauth_gssapi},           /* AUTH_GSSAPI */
      {AUTH_NONE, _svcauth_null},               /* AUTH_NULL */
@@ -114,9 +119,10 @@ _authenticate(rqst, msg, no_dispatch)
 }
 
 enum auth_stat
-_svcauth_null(rqst, msg)
+_svcauth_null(rqst, msg, no_dispatch)
    struct svc_req *rqst;
    struct rpc_msg *msg;
+   bool_t *no_dispatch;
 {
      rqst->rq_xprt->xp_auth = &svc_auth_any;
      return (AUTH_OK);
index 18c70d8382237bca352414b9f9242a46c0d64eaf..814732546a070ff8b58a00ae3a6123b82d6df4d4 100644 (file)
 /*
  * Interface to server-side authentication flavors.
  */
-typedef struct {
+
+typedef struct __rpc_svc_auth {
      struct svc_auth_ops {
-         int   (*svc_ah_wrap)();
-         int   (*svc_ah_unwrap)();
+         int   (*svc_ah_wrap)(struct __rpc_svc_auth *, XDR *, xdrproc_t, 
+                              caddr_t);
+         int   (*svc_ah_unwrap)(struct __rpc_svc_auth *, XDR *, xdrproc_t, 
+                                caddr_t);
      } *svc_ah_ops;
      caddr_t svc_ah_private;
 } SVCAUTH;
index f538b170942c2da8a4560e06cb36e3169be77434..e634cbcdb324eee7d0fc2caba94ccb5c00bf3650 100644 (file)
@@ -9,14 +9,27 @@
 #include <stdio.h>
 #include <gssrpc/rpc.h>
 
-extern int authany_wrap();
+static int svc_authany_wrap(SVCAUTH *, XDR *, xdrproc_t, caddr_t);
 
 struct svc_auth_ops svc_auth_any_ops = {
-     authany_wrap,
-     authany_wrap,
+     svc_authany_wrap,
+     svc_authany_wrap,
 };
 
 SVCAUTH svc_auth_any = {
      &svc_auth_any_ops,
      NULL,
 };
+
+static int
+svc_authany_wrap(auth, xdrs, xfunc, xwhere)
+   SVCAUTH *auth;
+   XDR *xdrs;
+   xdrproc_t xfunc;
+   caddr_t xwhere;
+{
+     return (*xfunc)(xdrs, xwhere);
+}
+       
+
+
index 9d831ad0deca33e36a7837d88e75e3d2f44a0e6b..a1d46c31f0f3843073396b50437bfbb31c3fdfc9 100644 (file)
@@ -73,16 +73,16 @@ typedef struct _svc_auth_gssapi_data {
 #define SVCAUTH_PRIVATE(auth) \
      ((svc_auth_gssapi_data *)(auth)->svc_ah_private)
 
-static bool_t  svc_auth_gssapi_wrap();
-static bool_t  svc_auth_gssapi_unwrap();
-static svc_auth_gssapi_data *create_client();
+static bool_t  svc_auth_gssapi_wrap(SVCAUTH *, XDR *, xdrproc_t, caddr_t);
+static bool_t  svc_auth_gssapi_unwrap(SVCAUTH *, XDR *, xdrproc_t, caddr_t);
+static svc_auth_gssapi_data *create_client(void);
 static svc_auth_gssapi_data *get_client
-PROTOTYPE((gss_buffer_t client_handle));
+       PROTOTYPE((gss_buffer_t client_handle));
 static void destroy_client
-PROTOTYPE((svc_auth_gssapi_data *client_data));
-static void clean_client(), cleanup();
+       PROTOTYPE((svc_auth_gssapi_data *client_data));
+static void clean_client(void), cleanup(void);
 static void client_expire
-PROTOTYPE((svc_auth_gssapi_data *client_data, rpc_u_int32 exp));
+       PROTOTYPE((svc_auth_gssapi_data *client_data, rpc_u_int32 exp));
 static void dump_db
 PROTOTYPE((char *msg));
 
index 23ff8898aa0eab52d6e88b6ac0a08599377e1f86..00220e6eb802292867879b5bef520a247065eae8 100644 (file)
@@ -53,12 +53,12 @@ static struct svcraw_private {
        char    verf_body[MAX_AUTH_BYTES];
 } *svcraw_private;
 
-static bool_t          svcraw_recv();
-static enum xprt_stat  svcraw_stat();
-static bool_t          svcraw_getargs();
-static bool_t          svcraw_reply();
-static bool_t          svcraw_freeargs();
-static void            svcraw_destroy();
+static bool_t          svcraw_recv(SVCXPRT *, struct rpc_msg *);
+static enum xprt_stat  svcraw_stat(SVCXPRT *);
+static bool_t          svcraw_getargs(SVCXPRT *, xdrproc_t, void *);
+static bool_t          svcraw_reply(SVCXPRT *, struct rpc_msg *);
+static bool_t          svcraw_freeargs(SVCXPRT *, xdrproc_t, void *);
+static void            svcraw_destroy(SVCXPRT *);
 
 static struct xp_ops server_ops = {
        svcraw_recv,
@@ -88,7 +88,8 @@ svcraw_create()
 }
 
 static enum xprt_stat
-svcraw_stat()
+svcraw_stat(xprt)
+       SVCXPRT *xprt;
 {
 
        return (XPRT_IDLE);
@@ -135,7 +136,7 @@ static bool_t
 svcraw_getargs(xprt, xdr_args, args_ptr)
        SVCXPRT *xprt;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void * args_ptr;
 {
        register struct svcraw_private *srp = svcraw_private;
 
@@ -152,7 +153,7 @@ static bool_t
 svcraw_freeargs(xprt, xdr_args, args_ptr)
        SVCXPRT *xprt;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void * args_ptr;
 { 
        register struct svcraw_private *srp = svcraw_private;
        register XDR *xdrs;
@@ -165,6 +166,7 @@ svcraw_freeargs(xprt, xdr_args, args_ptr)
 } 
 
 static void
-svcraw_destroy()
+svcraw_destroy(xprt)
+       SVCXPRT *xprt;
 {
 }
index b4769d02b15fd0a3854bd38851d2da2e8a0e442d..28f192cba23d3948fe51e59a12eee32fae0a1742 100644 (file)
@@ -51,13 +51,14 @@ static struct proglst {
        xdrproc_t p_inproc, p_outproc;
        struct proglst *p_nxt;
 } *proglst;
-static void universal();
+static void universal(struct svc_req *, SVCXPRT *);
 static SVCXPRT *transp;
 
 int
 gssrpc_registerrpc(prognum, versnum, procnum, progname, inproc, outproc)
        char *(*progname)();
        xdrproc_t inproc, outproc;
+       rpc_u_int32 prognum, versnum, procnum;
 {
         struct proglst *pl;
        
index 6fe3b30058e28c83d194c34db6e845c3c9d5273b..e9f5312b057181db57f23eca7728b397377d7577 100644 (file)
@@ -54,12 +54,12 @@ extern errno;
 /*
  * Ops vector for TCP/IP based rpc service handle
  */
-static bool_t          svctcp_recv();
-static enum xprt_stat  svctcp_stat();
-static bool_t          svctcp_getargs();
-static bool_t          svctcp_reply();
-static bool_t          svctcp_freeargs();
-static void            svctcp_destroy();
+static bool_t          svctcp_recv(SVCXPRT *, struct rpc_msg *);
+static enum xprt_stat  svctcp_stat(SVCXPRT *);
+static bool_t          svctcp_getargs(SVCXPRT *, xdrproc_t, void *);
+static bool_t          svctcp_reply(SVCXPRT *, struct rpc_msg *);
+static bool_t          svctcp_freeargs(SVCXPRT *, xdrproc_t, void *);
+static void            svctcp_destroy(SVCXPRT *);
 
 static struct xp_ops svctcp_op = {
        svctcp_recv,
@@ -73,21 +73,24 @@ static struct xp_ops svctcp_op = {
 /*
  * Ops vector for TCP/IP rendezvous handler
  */
-static bool_t          rendezvous_request();
-static bool_t          abortx();
-static enum xprt_stat  rendezvous_stat();
+static bool_t          rendezvous_request(SVCXPRT *, struct rpc_msg *);
+static bool_t          abortx(void);
+static bool_t          abortx_getargs(SVCXPRT *, xdrproc_t, void *);
+static bool_t          abortx_reply(SVCXPRT *, struct rpc_msg *);
+static bool_t          abortx_freeargs(SVCXPRT *, xdrproc_t, void *);
+static enum xprt_stat  rendezvous_stat(SVCXPRT *);
 
 static struct xp_ops svctcp_rendezvous_op = {
        rendezvous_request,
        rendezvous_stat,
-       abortx,
-       abortx,
-       abortx,
+       abortx_getargs,
+       abortx_reply,
+       abortx_freeargs,
        svctcp_destroy
 };
 
-static int readtcp(), writetcp();
-static SVCXPRT *makefd_xprt();
+static int readtcp(SVCXPRT *, caddr_t, int), writetcp(SVCXPRT *, caddr_t, int);
+static SVCXPRT *makefd_xprt(int, unsigned int, unsigned int);
 
 struct tcp_rendezvous { /* kept in xprt->xp_p1 */
        unsigned int sendsize;
@@ -233,8 +236,9 @@ makefd_xprt(fd, sendsize, recvsize)
 }
 
 static bool_t
-rendezvous_request(xprt)
+rendezvous_request(xprt, msg)
        register SVCXPRT *xprt;
+       struct rpc_msg *msg;
 {
        int sock;
        struct tcp_rendezvous *r;
@@ -265,7 +269,8 @@ rendezvous_request(xprt)
 }
 
 static enum xprt_stat
-rendezvous_stat()
+rendezvous_stat(xprt)
+       register SVCXPRT *xprt;
 {
 
        return (XPRT_IDLE);
@@ -398,7 +403,7 @@ static bool_t
 svctcp_getargs(xprt, xdr_args, args_ptr)
        SVCXPRT *xprt;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void *args_ptr;
 {
        if (! SVCAUTH_UNWRAP(xprt->xp_auth,
                             &(((struct tcp_conn *)(xprt->xp_p1))->xdrs),
@@ -413,7 +418,7 @@ static bool_t
 svctcp_freeargs(xprt, xdr_args, args_ptr)
        SVCXPRT *xprt;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void * args_ptr;
 {
        register XDR *xdrs =
            &(((struct tcp_conn *)(xprt->xp_p1))->xdrs);
@@ -464,3 +469,27 @@ static bool_t abortx()
   return 1;
 }
 
+static bool_t abortx_getargs(xprt, proc, info)
+   SVCXPRT *xprt;
+   xdrproc_t proc;
+   void *info;
+{
+    return abortx();
+}
+
+
+static bool_t abortx_reply(xprt, msg)
+    SVCXPRT *xprt;
+    struct rpc_msg *msg;
+{
+    return abortx();
+}
+
+static bool_t abortx_freeargs(xprt, proc, info)
+   SVCXPRT *xprt;
+   xdrproc_t proc;
+   void * info;
+{
+    return abortx();
+}
+
index 7dca8a0832f27918aab80946c6ed9fab25272dea..ca30bcde5fcdbea9803ee021e3fd206b35c0896e 100644 (file)
@@ -54,15 +54,15 @@ static char sccsid[] = "@(#)svc_udp.c 1.24 87/08/11 Copyr 1984 Sun Micro";
 #define MAX(a, b)     ((a > b) ? a : b)
 #endif
 
-static bool_t          svcudp_recv();
-static bool_t          svcudp_reply();
-static enum xprt_stat  svcudp_stat();
-static bool_t          svcudp_getargs();
-static bool_t          svcudp_freeargs();
-static void            svcudp_destroy();
+static bool_t          svcudp_recv(SVCXPRT *, struct rpc_msg *);
+static bool_t          svcudp_reply(SVCXPRT *, struct rpc_msg *);
+static enum xprt_stat  svcudp_stat(SVCXPRT *);
+static bool_t          svcudp_getargs(SVCXPRT *, xdrproc_t, void *);
+static bool_t          svcudp_freeargs(SVCXPRT *, xdrproc_t, void *);
+static void            svcudp_destroy(SVCXPRT *);
 
-static void cache_set();
-static int cache_get();
+static void cache_set(SVCXPRT *, rpc_u_int32);
+static int cache_get(SVCXPRT *, struct rpc_msg *, char **, rpc_u_int32 *);
 
 static struct xp_ops svcudp_op = {
        svcudp_recv,
@@ -271,7 +271,7 @@ static bool_t
 svcudp_getargs(xprt, xdr_args, args_ptr)
        SVCXPRT *xprt;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void * args_ptr;
 {
        if (! SVCAUTH_UNWRAP(xprt->xp_auth, &(su_data(xprt)->su_xdrs),
                             xdr_args, args_ptr)) {
@@ -285,7 +285,7 @@ static bool_t
 svcudp_freeargs(xprt, xdr_args, args_ptr)
        SVCXPRT *xprt;
        xdrproc_t xdr_args;
-       caddr_t args_ptr;
+       void * args_ptr;
 {
        register XDR *xdrs = &(su_data(xprt)->su_xdrs);
 
index 084d838e6db48e98c8aac2202b97d1994750deca..ccce136a09f7c6567e4883bcce69036103b16fb4 100644 (file)
@@ -78,9 +78,9 @@ gssrpc_xdr_free(proc, objp)
  * XDR nothing
  */
 bool_t
-xdr_void(/* xdrs, addr */)
-       /* XDR *xdrs; */
-       /* caddr_t addr; */
+xdr_void(xdrs, addr )
+       XDR *xdrs;
+       void *addr;
 {
 
        return (TRUE);
index d6742dda4fcf5d1793a8b7d0e9c23809405d9c53..f4b50f959a41fa8b7828eba096e18b1de1479bce 100644 (file)
@@ -108,6 +108,8 @@ enum xdr_op {
  * to be decoded.  If this pointer is 0, then the type routines should
  * allocate dynamic storage of the appropriate size and return it.
  * bool_t      (*xdrproc_t)(XDR *, caddr_t *);
+ *
+ * XXX can't actually prototype it, because some take three args!!!
  */
 typedef        bool_t (*xdrproc_t)();
 
@@ -117,17 +119,32 @@ typedef   bool_t (*xdrproc_t)();
  * an operations vector for the paticular implementation (e.g. see xdr_mem.c),
  * and two private fields for the use of the particular impelementation.
  */
-typedef struct {
+typedef struct __xdr_s {
        enum xdr_op     x_op;           /* operation; fast additional param */
        struct xdr_ops {
-               bool_t  (*x_getlong)(); /* get a long from underlying stream */
-               bool_t  (*x_putlong)(); /* put a long to " */
-               bool_t  (*x_getbytes)();/* get some bytes from " */
-               bool_t  (*x_putbytes)();/* put some bytes to " */
-               unsigned int    (*x_getpostn)();/* returns bytes off from beginning */
-               bool_t  (*x_setpostn)();/* lets you reposition the stream */
-               rpc_int32 *     (*x_inline)();  /* buf quick ptr to buffered data */
-               void    (*x_destroy)(); /* free privates of this xdr_stream */
+           /* get a long from underlying stream */
+           bool_t      (*x_getlong)(struct __xdr_s *, long *);
+
+            /* put a long to underlying stream */
+           bool_t      (*x_putlong)(struct __xdr_s *, long *); 
+
+            /* get some bytes from underlying stream */
+           bool_t      (*x_getbytes)(struct __xdr_s *, caddr_t, unsigned int);
+
+            /* put some bytes to underlying stream */
+           bool_t      (*x_putbytes)(struct __xdr_s *, caddr_t, unsigned int);
+
+            /* returns bytes off from beginning */
+           unsigned int        (*x_getpostn)(struct __xdr_s *);
+
+            /* lets you reposition the stream */
+           bool_t  (*x_setpostn)(struct __xdr_s *, unsigned int);
+
+           /* buf quick ptr to buffered data */
+           rpc_int32 * (*x_inline)(struct __xdr_s *, int);     
+
+            /* free privates of this xdr_stream */
+           void        (*x_destroy)(struct __xdr_s *); 
        } *x_ops;
        caddr_t         x_public;       /* users' data */
        caddr_t         x_private;      /* pointer to private data */
@@ -258,7 +275,7 @@ struct xdr_discrim {
 #define xdr_pointer    gssrpc_xdr_pointer
 #define xdr_wrapstring gssrpc_xdr_wrapstring
 
-extern bool_t  xdr_void();
+extern bool_t  xdr_void(XDR *, void *);
 extern bool_t  xdr_int
 PROTOTYPE((XDR *, int *));
 extern bool_t  xdr_u_int
index 6023930f33e9fc1a4807631ef47c27806789f6bb..6ee9a742f1128275ddd93b66aff67ac4129ed7ed 100644 (file)
@@ -40,20 +40,21 @@ static char sccsid[] = "@(#)xdr_mem.c 1.19 87/08/11 Copyr 1984 Sun Micro";
 #include <gssrpc/xdr.h>
 #include <dyn.h>
 
-static bool_t  xdralloc_putlong();
-static bool_t  xdralloc_putbytes();
-static unsigned int    xdralloc_getpos();
-static rpc_int32 *     xdralloc_inline();
-static void    xdralloc_destroy();
-static bool_t  xdralloc_notsup();
-
+static bool_t  xdralloc_putlong(XDR *, long *);
+static bool_t  xdralloc_putbytes(XDR *, caddr_t, unsigned int);
+static unsigned int    xdralloc_getpos(XDR *);
+static rpc_int32 *     xdralloc_inline(XDR *, int);
+static void    xdralloc_destroy(XDR *);
+static bool_t  xdralloc_notsup_getlong(XDR *, long *);
+static bool_t  xdralloc_notsup_getbytes(XDR *, caddr_t, unsigned int);
+static bool_t  xdralloc_notsup_setpos(XDR *, unsigned int);
 static struct  xdr_ops xdralloc_ops = {
-     xdralloc_notsup,
+     xdralloc_notsup_getlong,
      xdralloc_putlong,
-     xdralloc_notsup,
+     xdralloc_notsup_getbytes,
      xdralloc_putbytes,
      xdralloc_getpos,
-     xdralloc_notsup,
+     xdralloc_notsup_setpos,
      xdralloc_inline,
      xdralloc_destroy,
 };
@@ -90,14 +91,16 @@ static void xdralloc_destroy(xdrs)
      DynDestroy((DynObject) xdrs->x_private);
 }
 
-static bool_t xdralloc_notsup()
+static bool_t xdralloc_notsup_getlong(xdrs, lp)
+   register XDR *xdrs;
+   long *lp;
 {
      return FALSE;
 }
 
 static bool_t xdralloc_putlong(xdrs, lp)
    register XDR *xdrs;
-   rpc_int32 *lp;
+   long *lp;
 {
      int l = htonl((rpc_u_int32) *(int *)lp);
      
@@ -108,6 +111,16 @@ static bool_t xdralloc_putlong(xdrs, lp)
      return (TRUE);
 }
 
+
+static bool_t xdralloc_notsup_getbytes(xdrs, addr, len)
+   register XDR *xdrs;
+   caddr_t addr;
+   register unsigned int len;
+{
+     return FALSE;
+}
+
+
 static bool_t xdralloc_putbytes(xdrs, addr, len)
    register XDR *xdrs;
    caddr_t addr;
@@ -126,6 +139,14 @@ static unsigned int xdralloc_getpos(xdrs)
      return DynSize((DynObject) xdrs->x_private);
 }
 
+static bool_t xdralloc_notsup_setpos(xdrs, lp)
+   register XDR *xdrs;
+   unsigned int lp;
+{
+     return FALSE;
+}
+
+
 
 static rpc_int32 *xdralloc_inline(xdrs, len)
    register XDR *xdrs;
index c09b21245fcce5f4b84ee2b17a3e07845058f117..885d724e6cf743b9e9caaef81420c096dd7488df 100644 (file)
@@ -49,14 +49,14 @@ static char sccsid[] = "@(#)xdr_mem.c 1.19 87/08/11 Copyr 1984 Sun Micro";
 #include <stdio.h>
 #include <string.h>
 
-static bool_t  xdrmem_getlong();
-static bool_t  xdrmem_putlong();
-static bool_t  xdrmem_getbytes();
-static bool_t  xdrmem_putbytes();
-static unsigned int    xdrmem_getpos();
-static bool_t  xdrmem_setpos();
-static rpc_int32 *     xdrmem_inline();
-static void    xdrmem_destroy();
+static bool_t  xdrmem_getlong(XDR *, long *);
+static bool_t  xdrmem_putlong(XDR *, long *);
+static bool_t  xdrmem_getbytes(XDR *, caddr_t, unsigned int);
+static bool_t  xdrmem_putbytes(XDR *, caddr_t, unsigned int);
+static unsigned int    xdrmem_getpos(XDR *);
+static bool_t  xdrmem_setpos(XDR *, unsigned int);
+static rpc_int32 *     xdrmem_inline(XDR *, int);
+static void    xdrmem_destroy(XDR *);
 
 static struct  xdr_ops xdrmem_ops = {
        xdrmem_getlong,
@@ -88,8 +88,8 @@ xdrmem_create(xdrs, addr, size, op)
 }
 
 static void
-xdrmem_destroy(/*xdrs*/)
-       /*XDR *xdrs;*/
+xdrmem_destroy(xdrs)
+       XDR *xdrs;
 {
 }
 
index fd140f1baae022a99435e0dc27f2a63d3246161a..20225045994952ef45ec871ed34891f7e4bcec2d 100644 (file)
@@ -56,20 +56,14 @@ static char sccsid[] = "@(#)xdr_rec.c 1.21 87/08/11 Copyr 1984 Sun Micro";
 #include <unistd.h>
 #include <string.h>
 
-static unsigned int    fix_buf_size();
-static bool_t   flush_out();
-static bool_t   get_input_bytes();
-static bool_t   set_input_fragment();
-static bool_t   skip_input_bytes();
-
-static bool_t  xdrrec_getlong();
-static bool_t  xdrrec_putlong();
-static bool_t  xdrrec_getbytes();
-static bool_t  xdrrec_putbytes();
-static unsigned int    xdrrec_getpos();
-static bool_t  xdrrec_setpos();
-static rpc_int32 *     xdrrec_inline();
-static void    xdrrec_destroy();
+static bool_t  xdrrec_getlong(XDR *, long *);
+static bool_t  xdrrec_putlong(XDR *, long *);
+static bool_t  xdrrec_getbytes(XDR *, caddr_t, unsigned int);
+static bool_t  xdrrec_putbytes(XDR *, caddr_t, unsigned int);
+static unsigned int    xdrrec_getpos(XDR *);
+static bool_t  xdrrec_setpos(XDR *, unsigned int);
+static rpc_int32 *     xdrrec_inline(XDR *, int);
+static void    xdrrec_destroy(XDR *);
 
 static struct  xdr_ops xdrrec_ops = {
        xdrrec_getlong,
@@ -123,6 +117,11 @@ typedef struct rec_strm {
        unsigned int recvsize;
 } RECSTREAM;
 
+static unsigned int    fix_buf_size(unsigned int);
+static bool_t   flush_out(RECSTREAM *, bool_t);
+static bool_t   get_input_bytes(RECSTREAM *, caddr_t, int);
+static bool_t   set_input_fragment(RECSTREAM *);
+static bool_t   skip_input_bytes(RECSTREAM *, rpc_int32);
 
 /*
  * Create an xdr handle for xdrrec
index 84bdd9671805028a3122fd9896620ea863369b99..6afdb5ad959884457efb6edf4c758d0db970d429 100644 (file)
@@ -45,14 +45,14 @@ static char sccsid[] = "@(#)xdr_stdio.c 1.16 87/08/11 Copyr 1984 Sun Micro";
 #include <stdio.h>
 #include <gssrpc/xdr.h>
 
-static bool_t  xdrstdio_getlong();
-static bool_t  xdrstdio_putlong();
-static bool_t  xdrstdio_getbytes();
-static bool_t  xdrstdio_putbytes();
-static unsigned int    xdrstdio_getpos();
-static bool_t  xdrstdio_setpos();
-static rpc_int32 *     xdrstdio_inline();
-static void    xdrstdio_destroy();
+static bool_t  xdrstdio_getlong(XDR *, long *);
+static bool_t  xdrstdio_putlong(XDR *, long *);
+static bool_t  xdrstdio_getbytes(XDR *, caddr_t, unsigned int);
+static bool_t  xdrstdio_putbytes(XDR *, caddr_t, unsigned int);
+static unsigned int    xdrstdio_getpos(XDR *);
+static bool_t  xdrstdio_setpos(XDR *, unsigned int);
+static rpc_int32 *     xdrstdio_inline(XDR *, int);
+static void    xdrstdio_destroy(XDR *);
 
 /*
  * Ops vector for stdio type XDR
@@ -104,7 +104,7 @@ xdrstdio_getlong(xdrs, lp)
        XDR *xdrs;
        register long *lp;
 {
-  rpc_int32 tmp;
+        rpc_int32 tmp;
        if (fread((caddr_t)&tmp,
                  sizeof(rpc_int32), 1, (FILE *)xdrs->x_private) != 1)
                return (FALSE);
@@ -171,7 +171,7 @@ xdrstdio_setpos(xdrs, pos)
 static rpc_int32 *
 xdrstdio_inline(xdrs, len)
        XDR *xdrs;
-       unsigned int len;
+       int len;
 {
 
        /*