diff options
Diffstat (limited to 'sunrpc')
-rw-r--r-- | sunrpc/Makefile | 2 | ||||
-rw-r--r-- | sunrpc/rpc/clnt.h | 24 | ||||
-rw-r--r-- | sunrpc/rpcsvc/rnusers.x | 86 | ||||
-rw-r--r-- | sunrpc/rpcsvc/rusers.x | 223 |
4 files changed, 237 insertions, 98 deletions
diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 82d4ea78ca..dda826a906 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -52,7 +52,7 @@ headers = $(addprefix rpc/,auth.h auth_unix.h clnt.h netdb.h pmap_clnt.h \ $(rpcsvc:%=rpcsvc/%) $(rpcsvc:%.x=rpcsvc/%.h) rpcsvc = bootparam.x nlm_prot.x rstat.x \ yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \ - rnusers.x spray.x nfs_prot.x rquota.x + rusers.x spray.x nfs_prot.x rquota.x install-others = $(includedir)/rpcsvc/bootparam_prot.h \ $(sysconfdir)/rpc generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) diff --git a/sunrpc/rpc/clnt.h b/sunrpc/rpc/clnt.h index e9e67210c3..2e1ff26314 100644 --- a/sunrpc/rpc/clnt.h +++ b/sunrpc/rpc/clnt.h @@ -278,7 +278,7 @@ extern CLIENT *clnttcp_create __P ((struct sockaddr_in *__raddr, * struct sockaddr_in *raddr; * u_long program; * u_long version; - * struct timeval wait; + * struct timeval wait_resend; * int *sockp; * * Same as above, but you specify max packet sizes. @@ -287,35 +287,37 @@ extern CLIENT *clnttcp_create __P ((struct sockaddr_in *__raddr, * struct sockaddr_in *raddr; * u_long program; * u_long version; - * struct timeval wait; + * struct timeval wait_resend; * int *sockp; * u_int sendsz; * u_int recvsz; */ extern CLIENT *clntudp_create __P ((struct sockaddr_in *__raddr, u_long __program, u_long __version, - struct timeval __wait, int *__sockp)); + struct timeval __wait_resend, + int *__sockp)); extern CLIENT *clntudp_bufcreate __P ((struct sockaddr_in *__raddr, u_long __program, u_long __version, - struct timeval __wait, int *__sockp, - u_int __sendsz, u_int __recvsz)); + struct timeval __wait_resend, + int *__sockp, u_int __sendsz, + u_int __recvsz)); /* * Print why creation failed */ -void clnt_pcreateerror __P ((char *__msg)); /* stderr */ -char *clnt_spcreateerror __P ((char *__msg)); /* string */ +extern void clnt_pcreateerror __P ((char *__msg)); /* stderr */ +extern char *clnt_spcreateerror __P ((char *__msg)); /* string */ /* * Like clnt_perror(), but is more verbose in its output */ -void clnt_perrno __P ((enum clnt_stat __num)); /* stderr */ +extern void clnt_perrno __P ((enum clnt_stat __num)); /* stderr */ /* * Print an English error message, given the client error code */ -void clnt_perror __P ((CLIENT *__clnt, char *__msg)); /* stderr */ -char *clnt_sperror __P ((CLIENT *__clnt, char *__msg)); /* string */ +extern void clnt_perror __P ((CLIENT *__clnt, char *__msg)); /* stderr */ +extern char *clnt_sperror __P ((CLIENT *__clnt, char *__msg)); /* string */ /* * If a creation fails, the following allows the user to figure out why. @@ -332,7 +334,7 @@ extern struct rpc_createerr rpc_createerr; /* * Copy error message to buffer. */ -char *clnt_sperrno __P ((enum clnt_stat __num)); /* string */ +extern char *clnt_sperrno __P ((enum clnt_stat __num)); /* string */ diff --git a/sunrpc/rpcsvc/rnusers.x b/sunrpc/rpcsvc/rnusers.x deleted file mode 100644 index 257df1e6e9..0000000000 --- a/sunrpc/rpcsvc/rnusers.x +++ /dev/null @@ -1,86 +0,0 @@ -/* @(#)rnusers.x 2.1 88/08/01 4.0 RPCSRC */ -/* @(#)rnusers.x 1.2 87/09/20 Copyr 1987 Sun Micro */ - -/* - * 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. - * - * 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. - * - * 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. - * - * 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. - * - * 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. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * Find out about remote users - */ - -const MAXUSERS = 100; -const MAXUTLEN = 256; - -struct utmp { - string ut_line<MAXUTLEN>; - string ut_name<MAXUTLEN>; - string ut_host<MAXUTLEN>; - int ut_time; -}; - - -struct utmpidle { - utmp ui_utmp; - unsigned int ui_idle; -}; - -typedef utmp utmparr<MAXUSERS>; - -typedef utmpidle utmpidlearr<MAXUSERS>; - -program RUSERSPROG { - /* - * Includes idle information - */ - version RUSERSVERS_IDLE { - int - RUSERSPROC_NUM(void) = 1; - - utmpidlearr - RUSERSPROC_NAMES(void) = 2; - - utmpidlearr - RUSERSPROC_ALLNAMES(void) = 3; - } = 1; - - /* - * Old version does not include idle information - */ - version RUSERSVERS_ORIG { - int - RUSERSPROC_NUM(void) = 1; - - utmparr - RUSERSPROC_NAMES(void) = 2; - - utmparr - RUSERSPROC_ALLNAMES(void) = 3; - } = 2; -} = 100002; - diff --git a/sunrpc/rpcsvc/rusers.x b/sunrpc/rpcsvc/rusers.x new file mode 100644 index 0000000000..86fca74f87 --- /dev/null +++ b/sunrpc/rpcsvc/rusers.x @@ -0,0 +1,223 @@ +/* + * 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. + * + * 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. + * + * 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. + * + * 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. + * + * 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. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +%/* +% * Find out about remote users +% */ + +const RUSERS_MAXUSERLEN = 32; +const RUSERS_MAXLINELEN = 32; +const RUSERS_MAXHOSTLEN = 257; + +struct rusers_utmp { + string ut_user<RUSERS_MAXUSERLEN>; /* aka ut_name */ + string ut_line<RUSERS_MAXLINELEN>; /* device */ + string ut_host<RUSERS_MAXHOSTLEN>; /* host user logged on from */ + int ut_type; /* type of entry */ + int ut_time; /* time entry was made */ + unsigned int ut_idle; /* minutes idle */ +}; + +typedef rusers_utmp utmp_array<>; + +#ifdef RPC_HDR +% +%/* +% * Values for ut_type field above. +% */ +#endif +const RUSERS_EMPTY = 0; +const RUSERS_RUN_LVL = 1; +const RUSERS_BOOT_TIME = 2; +const RUSERS_OLD_TIME = 3; +const RUSERS_NEW_TIME = 4; +const RUSERS_INIT_PROCESS = 5; +const RUSERS_LOGIN_PROCESS = 6; +const RUSERS_USER_PROCESS = 7; +const RUSERS_DEAD_PROCESS = 8; +const RUSERS_ACCOUNTING = 9; + +program RUSERSPROG { + + version RUSERSVERS_3 { + int + RUSERSPROC_NUM(void) = 1; + + utmp_array + RUSERSPROC_NAMES(void) = 2; + + utmp_array + RUSERSPROC_ALLNAMES(void) = 3; + } = 3; + +} = 100002; + +#ifdef RPC_HDR +% +% +%#ifdef __cplusplus +%extern "C" { +%#endif +% +%/* +% * The following structures are used by version 2 of the rusersd protocol. +% * They were not developed with rpcgen, so they do not appear as RPCL. +% */ +% +%#define RUSERSVERS_IDLE 2 +%#define RUSERSVERS 3 /* current version */ +%#define MAXUSERS 100 +% +%/* +% * This is the structure used in version 2 of the rusersd RPC service. +% * It corresponds to the utmp structure for BSD sytems. +% */ +%struct ru_utmp { +% char ut_line[8]; /* tty name */ +% char ut_name[8]; /* user id */ +% char ut_host[16]; /* host name, if remote */ +% long ut_time; /* time on */ +%}; +% +%struct utmparr { +% struct ru_utmp **uta_arr; +% int uta_cnt; +%}; +%typedef struct utmparr utmparr; +%int xdr_utmparr(); +% +%struct utmpidle { +% struct ru_utmp ui_utmp; +% unsigned ui_idle; +%}; +% +%struct utmpidlearr { +% struct utmpidle **uia_arr; +% int uia_cnt; +%}; +% +%int xdr_utmpidlearr(); +% +%#ifdef __cplusplus +%} +%#endif +#endif + + +#ifdef RPC_XDR +%bool_t +%xdr_utmp(xdrs, objp) +% XDR *xdrs; +% struct ru_utmp *objp; +%{ +% /* Since the fields are char foo [xxx], we should not free them. */ +% if (xdrs->x_op != XDR_FREE) +% { +% char *ptr; +% ptr = objp->ut_line; +% if (!xdr_string (xdrs, &ptr, sizeof (objp->ut_line))) { +% return (FALSE); +% } +% ptr = objp->ut_name; +% if (!xdr_string (xdrs, &ptr, sizeof (objp->ut_name))) { +% return (FALSE); +% } +% ptr = objp->ut_host; +% if (!xdr_string (xdrs, &ptr, sizeof (objp->ut_host))) { +% return (FALSE); +% } +% } +% if (!xdr_long(xdrs, &objp->ut_time)) { +% return (FALSE); +% } +% return (TRUE); +%} +% +%bool_t +%xdr_utmpptr(xdrs, objpp) +% XDR *xdrs; +% struct ru_utmp **objpp; +%{ +% if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct ru_utmp), +% xdr_utmp)) { +% return (FALSE); +% } +% return (TRUE); +%} +% +%bool_t +%xdr_utmparr(xdrs, objp) +% XDR *xdrs; +% struct utmparr *objp; +%{ +% if (!xdr_array(xdrs, (char **)&objp->uta_arr, (u_int *)&objp->uta_cnt, +% MAXUSERS, sizeof(struct ru_utmp *), xdr_utmpptr)) { +% return (FALSE); +% } +% return (TRUE); +%} +% +%bool_t +%xdr_utmpidle(xdrs, objp) +% XDR *xdrs; +% struct utmpidle *objp; +%{ +% if (!xdr_utmp(xdrs, &objp->ui_utmp)) { +% return (FALSE); +% } +% if (!xdr_u_int(xdrs, &objp->ui_idle)) { +% return (FALSE); +% } +% return (TRUE); +%} +% +%bool_t +%xdr_utmpidleptr(xdrs, objpp) +% XDR *xdrs; +% struct utmpidle **objpp; +%{ +% if (!xdr_reference(xdrs, (char **) objpp, sizeof (struct utmpidle), +% xdr_utmpidle)) { +% return (FALSE); +% } +% return (TRUE); +%} +% +%bool_t +%xdr_utmpidlearr(xdrs, objp) +% XDR *xdrs; +% struct utmpidlearr *objp; +%{ +% if (!xdr_array(xdrs, (char **)&objp->uia_arr, (u_int *)&objp->uia_cnt, +% MAXUSERS, sizeof(struct utmpidle *), xdr_utmpidleptr)) { +% return (FALSE); +% } +% return (TRUE); +%} +#endif |