summaryrefslogtreecommitdiffstats
path: root/src/lib/rpc/svc.h
diff options
context:
space:
mode:
authorEzra Peisach <epeisach@mit.edu>2001-06-28 20:46:58 +0000
committerEzra Peisach <epeisach@mit.edu>2001-06-28 20:46:58 +0000
commitab9f9a4a46e93259281d198a9fa9420886acd895 (patch)
tree7bcc54a36ed419869208067efe82fd1084defeea /src/lib/rpc/svc.h
parent1af8e1107c28fd2ca3ab55486d0e0061509ec566 (diff)
downloadkrb5-ab9f9a4a46e93259281d198a9fa9420886acd895.tar.gz
krb5-ab9f9a4a46e93259281d198a9fa9420886acd895.tar.xz
krb5-ab9f9a4a46e93259281d198a9fa9420886acd895.zip
* 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. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13528 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/rpc/svc.h')
-rw-r--r--src/lib/rpc/svc.h82
1 files changed, 56 insertions, 26 deletions
diff --git a/src/lib/rpc/svc.h b/src/lib/rpc/svc.h
index 7472d2d7e8..189edf32ac 100644
--- a/src/lib/rpc/svc.h
+++ b/src/lib/rpc/svc.h
@@ -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__ */
+